From a68cd0ec3647f31f787bcf0998dc9fba836c6f57 Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Wed, 28 Jun 2023 18:01:12 -0700 Subject: [PATCH 01/72] Updated blue.repos to use the correct ros_gz branch --- blue.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blue.repos b/blue.repos index 6b184ee8..dc173d38 100644 --- a/blue.repos +++ b/blue.repos @@ -3,4 +3,4 @@ repositories: ros_gz: type: git url: https://github.com/gazebosim/ros_gz - version: ros2 + version: iron From 685254662b6e9fc8fa2926280360276c0fcdb4cc Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Thu, 29 Jun 2023 16:06:03 -0700 Subject: [PATCH 02/72] Updated devcontainer configuration to use Iron --- .devcontainer.json | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.devcontainer.json b/.devcontainer.json index a95f9415..17873713 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -4,7 +4,7 @@ "build": { "args": { "WORKSPACE": "${containerWorkspaceFolder}", - "ROS_DISTRO": "rolling" + "ROS_DISTRO": "iron" } }, "remoteUser": "blue", @@ -53,16 +53,12 @@ "isort.args": ["--profile", "black"], "isort.check": true, "python.autoComplete.extraPaths": [ - "/opt/ros/humble/lib/python3.10/site-packages/", - "/opt/ros/humble/local/lib/python3.10/dist-packages/", - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/" + "/opt/ros/iron/lib/python3.10/site-packages/", + "/opt/ros/iron/local/lib/python3.10/dist-packages/" ], "python.analysis.extraPaths": [ - "/opt/ros/humble/lib/python3.10/site-packages/", - "/opt/ros/humble/local/lib/python3.10/dist-packages/", - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/" + "/opt/ros/iron/lib/python3.10/site-packages/", + "/opt/ros/iron/local/lib/python3.10/dist-packages/" ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x86", "C_Cpp.clang_format_fallbackStyle": "Google", From d146436d40a01fea5cff5e668c1bba61372b45a6 Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Sun, 30 Jul 2023 01:10:06 -0700 Subject: [PATCH 03/72] Forgot to fix one more conflict --- .devcontainer/nouveau/devcontainer.json | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.devcontainer/nouveau/devcontainer.json b/.devcontainer/nouveau/devcontainer.json index 37b7484c..616e11fe 100644 --- a/.devcontainer/nouveau/devcontainer.json +++ b/.devcontainer/nouveau/devcontainer.json @@ -54,23 +54,12 @@ "isort.args": ["--profile", "black"], "isort.check": true, "python.autoComplete.extraPaths": [ -<<<<<<< HEAD:.devcontainer.json "/opt/ros/iron/lib/python3.10/site-packages/", "/opt/ros/iron/local/lib/python3.10/dist-packages/" ], "python.analysis.extraPaths": [ "/opt/ros/iron/lib/python3.10/site-packages/", "/opt/ros/iron/local/lib/python3.10/dist-packages/" -======= - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/", - "${workspaceFolder}/install/" - ], - "python.analysis.extraPaths": [ - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/", - "${workspaceFolder}/install/" ->>>>>>> origin/main:.devcontainer/nouveau/devcontainer.json ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x86", "C_Cpp.clang_format_fallbackStyle": "Google", From 1df4ca93f5c2ee91860662b33fb846b1a67b2e03 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 31 Aug 2023 23:19:47 -0700 Subject: [PATCH 04/72] Fixed home position timer (#104) (#105) (cherry picked from commit 1d25643ccd6cfbd58ace7319ff8deba6960c61ec) Co-authored-by: Evan Palmer --- blue_manager/blue_manager/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blue_manager/blue_manager/manager.py b/blue_manager/blue_manager/manager.py index df330b5c..f13e8252 100644 --- a/blue_manager/blue_manager/manager.py +++ b/blue_manager/blue_manager/manager.py @@ -229,7 +229,7 @@ def set_home_pos(lat: float, lon: float, alt: float, yaw: float) -> None: # Similar to the message rates, we set the home position periodically to handle # the case in which the home position is set by QGC to a different location - self.message_rate_timer = self.create_timer( + self.home_position_timer = self.create_timer( hp_request_rate, lambda: set_home_pos(home_lat, home_lon, home_alt, home_yaw), ) From cc2ff0ba51a870af800f467104d5aa2daf1ad6fa Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 16:55:30 -0700 Subject: [PATCH 05/72] Cleaned up Docker pipelines (backport #121) (#122) * Cleaned up Docker pipelines (#121) * Cleaned up Dockerfile and added new user entrypoints * Fixed robot pipeline to support building for arm64 * Updated devcontainer configurations to use latest changes * Testing pipelines * Removed testing branch from pipelines * Precommit * Resolved pr comments (cherry picked from commit 11807c8e7e5a19faf4b136d9b8c35458338a0fe9) # Conflicts: # .devcontainer/nouveau/devcontainer.json # .devcontainer/nvidia/devcontainer.json # .github/ISSUE_TEMPLATE/config.yaml # .github/workflows/ci.yaml * Fixed backport * Fixed config merge conflict --------- Co-authored-by: Evan Palmer --- .devcontainer/nouveau/Dockerfile | 26 +++ .devcontainer/nouveau/devcontainer.json | 21 +- .devcontainer/nvidia/Dockerfile | 26 +++ .devcontainer/nvidia/devcontainer.json | 29 +-- .docker/Dockerfile | 286 ++++++++---------------- .docker/compose/nouveau-desktop.yaml | 20 ++ .docker/compose/nvidia-desktop.yaml | 30 +++ .docker/entrypoints/dev.sh | 7 - .docker/entrypoints/sim.sh | 10 +- .dockerignore | 1 + .github/ISSUE_TEMPLATE/config.yaml | 4 +- .github/workflows/ci.yaml | 10 +- .github/workflows/docker.yaml | 133 ++++++++++- .github/workflows/format.yaml | 2 +- 14 files changed, 362 insertions(+), 243 deletions(-) create mode 100644 .devcontainer/nouveau/Dockerfile create mode 100644 .devcontainer/nvidia/Dockerfile create mode 100644 .docker/compose/nouveau-desktop.yaml create mode 100644 .docker/compose/nvidia-desktop.yaml delete mode 100644 .docker/entrypoints/dev.sh diff --git a/.devcontainer/nouveau/Dockerfile b/.devcontainer/nouveau/Dockerfile new file mode 100644 index 00000000..1f194fd4 --- /dev/null +++ b/.devcontainer/nouveau/Dockerfile @@ -0,0 +1,26 @@ +FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop + +# Install ROS dependencies +# This is done in a previous stage, but we include it again here in case anyone wants to +# add new dependencies during development +ENV USERNAME=blue +ENV USER_WORKSPACE=/home/$USERNAME/ws_blue +WORKDIR $USER_WORKSPACE + +COPY --chown=$USER_UID:$USER_GID . src/blue +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && rosdep update \ + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# Install debugging/linting Python packages +COPY --chown=$USER_UID:$USER_GID requirements-dev.txt . +RUN python3 -m pip install -r requirements-dev.txt \ + && rm -rf requirements-dev.txt + +# Disable the setuputils installation warning +# This prevents us from needing to pin the setuputils version (which doesn't always work) +ENV PYTHONWARNINGS="ignore" diff --git a/.devcontainer/nouveau/devcontainer.json b/.devcontainer/nouveau/devcontainer.json index 616e11fe..165687e2 100644 --- a/.devcontainer/nouveau/devcontainer.json +++ b/.devcontainer/nouveau/devcontainer.json @@ -1,13 +1,9 @@ { - "dockerFile": "../../.docker/Dockerfile", + "name": "Blue Nouveau Dev Container", + "dockerFile": "Dockerfile", "context": "../..", - "build": { - "args": { - "WORKSPACE": "${containerWorkspaceFolder}", - "ROS_DISTRO": "iron" - }, - "target": "develop" - }, + "workspaceMount": "source=${localWorkspaceFolder},target=/home/blue/ws_blue/src/blue,type=bind", + "workspaceFolder": "/home/blue/ws_blue/src/blue", "remoteUser": "blue", "runArgs": [ "--network=host", @@ -43,12 +39,6 @@ "editor.tabSize": 2, "xml.format.maxLineWidth": 100, "json.format.enable": true, - "python.linting.enabled": true, - "python.linting.flake8Enabled": true, - "python.linting.pylintEnabled": false, - "python.linting.pydocstyleEnabled": true, - "python.linting.mypyEnabled": true, - "python.formatting.provider": "black", "autoDocstring.startOnNewLine": false, "autoDocstring.docstringFormat": "google-notypes", "isort.args": ["--profile", "black"], @@ -76,7 +66,8 @@ "editor.rulers": [90], "editor.codeActionsOnSave": { "source.organizeImports": true - } + }, + "editor.defaultFormatter": "ms-python.black-formatter" }, "[dockerfile]": { "editor.quickSuggestions": { diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile new file mode 100644 index 00000000..462e503c --- /dev/null +++ b/.devcontainer/nvidia/Dockerfile @@ -0,0 +1,26 @@ +FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia + +# Install ROS dependencies +# This is done in a previous stage, but we include it again here in case anyone wants to +# add new dependencies during development +ENV USERNAME=blue +ENV USER_WORKSPACE=/home/$USERNAME/ws_blue +WORKDIR $USER_WORKSPACE + +COPY --chown=$USER_UID:$USER_GID . src/blue +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && rosdep update \ + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# Install debugging/linting Python packages +COPY --chown=$USER_UID:$USER_GID requirements-dev.txt . +RUN python3 -m pip install -r requirements-dev.txt \ + && rm -rf requirements-dev.txt + +# Disable the setuputils installation warning +# This prevents us from needing to pin the setuputils version (which doesn't always work) +ENV PYTHONWARNINGS="ignore" diff --git a/.devcontainer/nvidia/devcontainer.json b/.devcontainer/nvidia/devcontainer.json index 459f3581..62ff191f 100644 --- a/.devcontainer/nvidia/devcontainer.json +++ b/.devcontainer/nvidia/devcontainer.json @@ -1,13 +1,9 @@ { - "dockerFile": "../../.docker/Dockerfile", + "name": "Blue NVIDIA Dev Container", + "dockerFile": "Dockerfile", "context": "../..", - "build": { - "args": { - "WORKSPACE": "${containerWorkspaceFolder}", - "ROS_DISTRO": "iron" - }, - "target": "develop-nvidia" - }, + "workspaceMount": "source=${localWorkspaceFolder},target=/home/blue/ws_blue/src/blue,type=bind", + "workspaceFolder": "/home/blue/ws_blue/src/blue", "remoteUser": "blue", "runArgs": [ "--network=host", @@ -47,24 +43,18 @@ "editor.tabSize": 2, "xml.format.maxLineWidth": 100, "json.format.enable": true, - "python.linting.enabled": true, - "python.linting.flake8Enabled": true, - "python.linting.pylintEnabled": false, - "python.linting.pydocstyleEnabled": true, - "python.linting.mypyEnabled": true, - "python.formatting.provider": "black", "autoDocstring.startOnNewLine": false, "autoDocstring.docstringFormat": "google-notypes", "isort.args": ["--profile", "black"], "isort.check": true, "python.autoComplete.extraPaths": [ - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/", + "/opt/ros/iron/lib/python3.10/site-packages/", + "/opt/ros/iron/local/lib/python3.10/dist-packages/", "${workspaceFolder}/install/" ], "python.analysis.extraPaths": [ - "/opt/ros/rolling/lib/python3.10/site-packages/", - "/opt/ros/rolling/local/lib/python3.10/dist-packages/", + "/opt/ros/iron/lib/python3.10/site-packages/", + "/opt/ros/iron/local/lib/python3.10/dist-packages/", "${workspaceFolder}/install/" ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x86", @@ -82,7 +72,8 @@ "editor.rulers": [90], "editor.codeActionsOnSave": { "source.organizeImports": true - } + }, + "editor.defaultFormatter": "ms-python.black-formatter" }, "[dockerfile]": { "editor.quickSuggestions": { diff --git a/.docker/Dockerfile b/.docker/Dockerfile index e5e59147..730cd9d9 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,24 +1,16 @@ -############################################## -# ci: Install core dependencies needed for CI -############################################## -ARG ROS_DISTRO=rolling +ARG ROS_DISTRO=iron FROM ros:$ROS_DISTRO-ros-base as ci -LABEL maintainer="Evan Palmer" -LABEL maintainer-email="evanp922@gmail.com" - ENV DEBIAN_FRONTEND=noninteractive -WORKDIR /root/ws_blue +WORKDIR /root/ws_blue COPY . src/blue -# Install apt packages +# Install apt packages needed for CI RUN apt-get -q update \ && apt-get -q -y upgrade \ && apt-get -q install --no-install-recommends -y \ git \ - wget \ - curl \ sudo \ clang \ clang-format-14 \ @@ -31,25 +23,6 @@ RUN apt-get -q update \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* -# Install the Python requirements that aren't available as rosdeps -RUN python3 -m pip install -r $(pwd)/src/blue/requirements-build.txt - -# Install gstreamer -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && apt-get -q install --no-install-recommends -y \ - python3-gi \ - gstreamer1.0-tools \ - gir1.2-gstreamer-1.0 \ - gir1.2-gst-plugins-base-1.0 \ - gstreamer1.0-plugins-good \ - gstreamer1.0-plugins-ugly \ - gstreamer1.0-plugins-bad \ - gstreamer1.0-libav \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - # Install all ROS dependencies RUN apt-get -q update \ && apt-get -q -y upgrade \ @@ -60,6 +33,8 @@ RUN apt-get -q update \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* +FROM ci as robot + # Configure a new non-root user ARG USERNAME=blue ARG USER_UID=1000 @@ -69,51 +44,95 @@ RUN groupadd --gid $USER_GID $USERNAME \ && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ && chmod 0440 /etc/sudoers.d/$USERNAME \ + && usermod -a -G dialout $USERNAME \ && echo "source /usr/share/bash-completion/completions/git" >> /home/$USERNAME/.bashrc -# Switch to the non-root user to install MAVROS dependencies +ENV DEBIAN_FRONTEND=noninteractive + +# Switch to the non-root user for the rest of the installation. +# We do this to avoid any conflicts with user permissions USER $USERNAME ENV USER=$USERNAME +# Install some core apt packages +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && sudo apt-get -q install --no-install-recommends -y \ + lsb-release \ + wget \ + gnupg \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + # Install MAVROS dependencies WORKDIR /home/$USERNAME RUN wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh \ && chmod +x install_geographiclib_datasets.sh \ && sudo ./install_geographiclib_datasets.sh -# Switch back to root user -USER root -ENV USER=root +# Copy the project over to the image +ENV USER_WORKSPACE=/home/$USERNAME/ws_blue +WORKDIR $USER_WORKSPACE +COPY --chown=$USER_UID:$USER_GID . src/blue -################################################################# -# sim: install Gazebo and the tools needed for Gazebo simulation -################################################################# -FROM ci as sim +# Install the Python requirements that aren't available as rosdeps +RUN python3 -m pip install -r $(pwd)/src/blue/requirements-build.txt + +# Install gstreamer +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && sudo apt-get -q install --no-install-recommends -y \ + python3-gi \ + gstreamer1.0-tools \ + gir1.2-gstreamer-1.0 \ + gir1.2-gst-plugins-base-1.0 \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-ugly \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-libav \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# Install all ROS dependencies +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && rosdep update \ + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# Setup the environment variables +RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashrc \ + && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> /home/$USERNAME/.bashr + +FROM robot as desktop + +ENV DEBIAN_FRONTEND=noninteractive +ENV GZ_VERSION=garden # Install Gazebo Garden: https://gazebosim.org/docs/garden/install_ubuntu -RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg -RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null -RUN apt-get update \ - && apt-get -y --quiet --no-install-recommends install \ +RUN sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \ + && sudo apt-get update \ + && sudo apt-get -y --quiet --no-install-recommends install \ gz-garden \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* # Install ArduPilot and ardupilot_gazebo dependencies -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && apt-get -q install --no-install-recommends -y \ +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && sudo apt-get -q install --no-install-recommends -y \ python3-wxgtk4.0 \ rapidjson-dev \ xterm \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -# Switch to the non-root user to install ArduSub -USER $USERNAME -ENV USER=$USERNAME + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* # Clone ArduSub # ArduSub is installed for simulation purposes ONLY @@ -144,152 +163,43 @@ RUN [ "/bin/bash" , "-c" , " \ && cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo \ && make -j4" ] -# Switch back to the root user -USER root -ENV USER=root - -# Extend the ros_entrypoint to source the simulation environment -COPY .docker/entrypoints/sim.sh / -RUN sed -i '/source "\/opt\/ros\/$ROS_DISTRO\/setup\.bash" --/a source /sim.sh' /ros_entrypoint.sh - -################################################## -# deps: Install all external project dependencies -################################################## -FROM sim as deps - -ENV GZ_VERSION=garden -ENV USER_WORKSPACE=/home/$USERNAME/ws_blue/install -ENV DEBIAN_FRONTEND=noninteractive -WORKDIR $USER_WORKSPACE/.. - -COPY blue.repos src/ - -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && vcs import src < src/blue.repos \ - && rosdep update \ - && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --as-root=apt:false --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ - && colcon build \ - # Update /ros_entrypoint.sh to source the workspace - && sed -i "s#/opt/ros/\$ROS_DISTRO/setup.bash#$USER_WORKSPACE/setup.sh#g" /ros_entrypoint.sh \ - && echo "source ${USER_WORKSPACE}/setup.sh" >> /home/$USERNAME/.bashrc - -#################################################### -# develop: Setup the image for development purposes -#################################################### -FROM deps as develop - -ENV GZ_VERSION=garden -ENV ROS_UNDERLAY /root/ws_blue/install -ENV DEBIAN_FRONTEND=noninteractive -WORKDIR $ROS_UNDERLAY/.. - -COPY . src/blue - -# Install debugging/linting Python packages -RUN python3 -m pip install -r $(pwd)/src/blue/requirements-dev.txt - -RUN apt-get -q update \ - && apt-get -q -y upgrade \ +# Install Gazebo +WORKDIR $USER_WORKSPACE +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ && vcs import src < src/blue/blue.repos \ && rosdep update \ - && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --as-root=apt:false --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9" \ - && rm -rf src \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -# Install development tools -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && apt-get -q install --no-install-recommends -y \ - iputils-ping \ - net-tools \ - gdb \ - nano \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -COPY .docker/entrypoints/dev.sh / - -# WARNING: This is a temporary solution for disabling the setuputils installation warning -ENV PYTHONWARNINGS="ignore" - -ARG WORKSPACE -RUN echo "if [ -f ${WORKSPACE}/install/setup.bash ]; then source ${WORKSPACE}/install/setup.bash; fi" >> /home/$USERNAME/.bashrc \ - && echo "if [ -f /opt/ros/${ROS_DISTRO}/setup.bash ]; then source /opt/ros/${ROS_DISTRO}/setup.bash; fi" >> /home/$USERNAME/.bashrc \ - # Expose the environment variables to the non-root user - && echo "if [ -f /sim.sh ]; then source /sim.sh; fi" >> /home/$USERNAME/.bashrc \ - && echo "if [ -f /dev.sh ]; then source /dev.sh; fi" >> /home/$USERNAME/.bashrc + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# For users that build this on a laptop or system with limited RAM, +# Modify the 'colcon build' line to be 'MAKEFLAGS="-j1 -l1" colcon build' +# This will limit the amount of RAM that colcon is allowed to use +RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ + && colcon build +# Setup the simulation environment variables +RUN echo "source ${USER_WORKSPACE}/src/blue/.docker/entrypoints/sim.sh" >> /home/$USERNAME/.bashrc -###################################################################################### -# develop-nvidia: Setup the image for development purposes with NVIDIA driver support -###################################################################################### -FROM deps as develop-nvidia +FROM desktop as desktop-nvidia # Install NVIDIA software -RUN apt-get update \ - && apt-get install -y -qq --no-install-recommends \ +RUN sudo apt-get update \ + && sudo apt-get -q -y upgrade \ + && sudo apt-get install -y -qq --no-install-recommends \ libglvnd0 \ libgl1 \ libglx0 \ libegl1 \ libxext6 \ - libx11-6 + libx11-6 \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* # Env vars for the nvidia-container-runtime. ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute ENV QT_X11_NO_MITSHM 1 - -ENV GZ_VERSION=garden -ENV ROS_UNDERLAY /root/ws_blue/install -ENV DEBIAN_FRONTEND=noninteractive -WORKDIR $ROS_UNDERLAY/.. - -COPY . src/blue - -# Install debugging/linting Python packages -RUN python3 -m pip install -r $(pwd)/src/blue/requirements-dev.txt - -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && vcs import src < src/blue/blue.repos \ - && rosdep update \ - && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --as-root=apt:false --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ - && rm -rf src \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -# Install development tools -RUN apt-get -q update \ - && apt-get -q -y upgrade \ - && apt-get -q install --no-install-recommends -y \ - iputils-ping \ - net-tools \ - gdb \ - nano \ - htop \ - && apt-get autoremove -y \ - && apt-get clean -y \ - && rm -rf /var/lib/apt/lists/* - -COPY .docker/entrypoints/dev.sh / - -# WARNING: This is a temporary solution for disabling the setuputils installation warning -ENV PYTHONWARNINGS="ignore" - -ARG WORKSPACE -RUN echo "if [ -f ${WORKSPACE}/install/setup.bash ]; then source ${WORKSPACE}/install/setup.bash; fi" >> /home/$USERNAME/.bashrc \ - && echo "if [ -f /opt/ros/${ROS_DISTRO}/setup.bash ]; then source /opt/ros/${ROS_DISTRO}/setup.bash; fi" >> /home/$USERNAME/.bashrc \ - # Expose the environment variables to the non-root user - && echo "if [ -f /sim.sh ]; then source /sim.sh; fi" >> /home/$USERNAME/.bashrc \ - && echo "if [ -f /dev.sh ]; then source /dev.sh; fi" >> /home/$USERNAME/.bashrc diff --git a/.docker/compose/nouveau-desktop.yaml b/.docker/compose/nouveau-desktop.yaml new file mode 100644 index 00000000..e0745b33 --- /dev/null +++ b/.docker/compose/nouveau-desktop.yaml @@ -0,0 +1,20 @@ +version: "3" +services: + blue: + image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop + environment: + - DISPLAY=${DISPLAY} + - XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} + - WAYLAND_DISPLAY=${WAYLAND_DISPLAY} # Can be commented out if not used + - PULSE_SERVER=${PULSE_SERVER} # Can be commented out if not used + network_mode: host + privileged: true + cap_add: + - SYS_PTRACE + security_opt: + - seccomp:unconfined + - apparmor:unconfined + volumes: + - /dev:/dev + - /run/user/1000:/run/user/1000 + command: tail -f /dev/null diff --git a/.docker/compose/nvidia-desktop.yaml b/.docker/compose/nvidia-desktop.yaml new file mode 100644 index 00000000..0d255b00 --- /dev/null +++ b/.docker/compose/nvidia-desktop.yaml @@ -0,0 +1,30 @@ +version: "3" +services: + blue: + image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia + environment: + - DISPLAY=${DISPLAY} + - XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} + - LIBGL_ALWAYS_SOFTWARE=1 + - QT_X11_NO_MITSHM=1 + - WAYLAND_DISPLAY=${WAYLAND_DISPLAY} # Can be commented out if not used + - PULSE_SERVER=${PULSE_SERVER} # Can be commented out if not used + network_mode: host + privileged: true + cap_add: + - SYS_PTRACE + security_opt: + - seccomp:unconfined + - apparmor:unconfined + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + volumes: + - /dev:/dev + - /tmp/.X11-unix:/tmp/.X11-unix + - /mnt/wslg:/mnt/wslg + command: tail -f /dev/null diff --git a/.docker/entrypoints/dev.sh b/.docker/entrypoints/dev.sh deleted file mode 100644 index 45d71167..00000000 --- a/.docker/entrypoints/dev.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -# Add blue models and worlds -export GZ_SIM_RESOURCE_PATH=/workspaces/blue/blue_description/gazebo/models:/workspaces/blue/blue_description/gazebo/worlds:$GZ_SIM_RESOURCE_PATH - -# Add blue meshes -export GZ_SIM_RESOURCE_PATH=/workspaces/blue/blue_description/meshes:$GZ_SIM_RESOURCE_PATH diff --git a/.docker/entrypoints/sim.sh b/.docker/entrypoints/sim.sh index c2fe9b80..85b3946b 100644 --- a/.docker/entrypoints/sim.sh +++ b/.docker/entrypoints/sim.sh @@ -9,8 +9,14 @@ export PATH=$HOME/ardupilot/Tools/autotest:$PATH # Add ardupilot_gazebo plugin export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/ardupilot_gazebo/build:$GZ_SIM_SYSTEM_PLUGIN_PATH -# Optional: add ardupilot_gazebo models and worlds +# Add ardupilot_gazebo models and worlds export GZ_SIM_RESOURCE_PATH=$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH -# Build ros_gz on the humble branch for Gazebo Garden +# Add blue models and worlds +export GZ_SIM_RESOURCE_PATH=$HOME/ws_blue/src/blue/blue_description/gazebo/models:$HOME/ws_blue/src/blue/blue_description/gazebo/worlds:$GZ_SIM_RESOURCE_PATH + +# Add blue meshes +export GZ_SIM_RESOURCE_PATH=$HOME/ws_blue/src/blue/blue_description/meshes:$GZ_SIM_RESOURCE_PATH + +# Build ros_gz for Gazebo Garden export GZ_VERSION=garden diff --git a/.dockerignore b/.dockerignore index c59c0f0b..97eedc18 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,6 +9,7 @@ !blue_localization !blue_utils !blue_joy +!blue_description !blue.repos !.docker/entrypoints !requirements-build.txt diff --git a/.github/ISSUE_TEMPLATE/config.yaml b/.github/ISSUE_TEMPLATE/config.yaml index c8af6530..3f1d9873 100644 --- a/.github/ISSUE_TEMPLATE/config.yaml +++ b/.github/ISSUE_TEMPLATE/config.yaml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: BlueROV2 Driver Community Support - url: https://github.com/evan-palmer/blue/discussions + - name: Blue Community Support + url: https://github.com/Robotic-Decision-Making-Lab/blue/discussions about: Please check out our discussions channel for any questions related to the project! diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 189d1228..9ac7fcef 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,9 +1,9 @@ -name: Continuous Integration +name: CI on: push: branches: - - main + - iron pull_request: workflow_dispatch: @@ -19,12 +19,8 @@ jobs: fail-fast: false matrix: env: - - IMAGE: rolling-ci - ROS_DISTRO: rolling - IMAGE: iron-ci ROS_DISTRO: iron - - IMAGE: humble-ci - ROS_DISTRO: humble steps: - name: Checkout repository uses: actions/checkout@v3 @@ -41,7 +37,7 @@ jobs: - name: Run ROS Industrial CI uses: ros-industrial/industrial_ci@master env: - DOCKER_IMAGE: ghcr.io/evan-palmer/blue:${{ matrix.env.IMAGE }} + DOCKER_IMAGE: ghcr.io/robotic-decision-making-lab/blue:${{ matrix.env.IMAGE }} CXXFLAGS: >- -Wall -Wextra -Wpedantic -Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls CC: ${{ env.CLANG_TIDY && 'clang' }} diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 1ebb4acc..68b879b1 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -5,11 +5,13 @@ on: - cron: "0 17 * * 6" push: branches: - - main + - iron pull_request: paths: - .docker/** - .github/workflows/docker.yaml + - blue.repos + - requirements-build.txt workflow_dispatch: env: @@ -20,7 +22,134 @@ jobs: strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, iron, rolling] + ROS_DISTRO: [iron] + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log into registry + if: env.PUSH == 'true' + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract Docker metadata + if: env.PUSH == 'true' + id: meta + uses: docker/metadata-action@v4.6.0 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5.0.0 + with: + context: . + file: .docker/Dockerfile + build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} + target: ${{ github.job }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: ${{ env.PUSH }} + robot: + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [iron] + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@v3.5.3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2.2.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log into registry + if: env.PUSH == 'true' + uses: docker/login-action@v2.2.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract Docker metadata + if: env.PUSH == 'true' + id: meta + uses: docker/metadata-action@v4.6.0 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} + + - name: Build and push Docker image + uses: docker/build-push-action@v4.1.1 + with: + context: . + file: .docker/Dockerfile + build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} + target: ${{ github.job }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: ${{ env.PUSH }} + platforms: linux/amd64,linux/arm64 + desktop: + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [iron] + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log into registry + if: env.PUSH == 'true' + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract Docker metadata + if: env.PUSH == 'true' + id: meta + uses: docker/metadata-action@v4.6.0 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5.0.0 + with: + context: . + file: .docker/Dockerfile + build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} + target: ${{ github.job }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: ${{ env.PUSH }} + desktop-nvidia: + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [iron] runs-on: ubuntu-latest permissions: packages: write diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml index 746d77ba..fc85b50e 100644 --- a/.github/workflows/format.yaml +++ b/.github/workflows/format.yaml @@ -4,7 +4,7 @@ on: pull_request: push: branches: - - main + - iron workflow_dispatch: jobs: From 74a88dca34a1bdb98d080a3ab6d357f613f0332e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 20:45:45 -0700 Subject: [PATCH 06/72] Bump actions/checkout from 3 to 4 (#109) (#124) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 96d5854b0ea68b34981c15ed522c72fa1d7744f6) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index ecd5ff95..767e9273 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -29,7 +29,7 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log into registry if: env.PUSH == 'true' @@ -69,7 +69,7 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v3.5.3 + uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v2.2.0 @@ -116,7 +116,7 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Log into registry if: env.PUSH == 'true' From da6b8b57803458f9d8422851600ba16399dbcd2b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:25:21 -0700 Subject: [PATCH 07/72] Bump docker/setup-buildx-action from 2 to 3 (#128) (#133) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 28862b2e2c01cdf6ced4694d8656b37b4625534d) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 767e9273..286ee3a0 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -75,7 +75,7 @@ jobs: uses: docker/setup-qemu-action@v2.2.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Log into registry if: env.PUSH == 'true' From 031aa82e92af320aefedc32e81f525a4ca37800f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:26:01 -0700 Subject: [PATCH 08/72] Bump docker/setup-qemu-action from 2.2.0 to 3.0.0 (#129) (#135) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2.2.0 to 3.0.0. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v2.2.0...v3.0.0) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 8d2cc5b4858eae5814674f5781fa363bd7330be0) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 286ee3a0..66c0b602 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -72,7 +72,7 @@ jobs: uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2.2.0 + uses: docker/setup-qemu-action@v3.0.0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 From 6596e8f90245170f541a057ffd2744a40bf95f7b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:26:31 -0700 Subject: [PATCH 09/72] Bump docker/build-push-action from 4.1.1 to 5.0.0 (#130) (#137) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 5.0.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v4.1.1...v5.0.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 714a253e0f1fddc54b8fae1b9111c8fe84884b4b) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 66c0b602..fcffd258 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -95,7 +95,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v4.1.1 + uses: docker/build-push-action@v5.0.0 with: context: . file: .docker/Dockerfile From c5abd6d6a4c1e0916f750cba8a8ca92cb334f85e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 18:26:55 -0700 Subject: [PATCH 10/72] Bump docker/login-action from 2.2.0 to 3.0.0 (#131) (#139) Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.0.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v2.2.0...v3.0.0) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 8abca640fd4540cbfbe4a045506fd04f1e8a0829) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index fcffd258..ba9dc8ea 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -79,7 +79,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v2.2.0 + uses: docker/login-action@v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} From d00a37484e5eed4ff238b258dc5ea58979bde42f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sun, 14 Jan 2024 02:11:35 -0800 Subject: [PATCH 11/72] Allowing gazebo_world_file arg to be passed in (#148) (#149) * Allowing gazebo_world_file arg to be passed in * updating gazebo_world_file arg in launch file * updating gazebo_world_file arg in launch file * Pre-commit --------- Co-authored-by: Evan Palmer (cherry picked from commit 01b385da01df4e6520fa015e10a49b8622fbd307) Co-authored-by: Tim Huff <89954856+timmarkhuff@users.noreply.github.com> --- blue_bringup/launch/bluerov2/bluerov2.launch.py | 4 +++- blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py | 4 +++- .../bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/blue_bringup/launch/bluerov2/bluerov2.launch.py b/blue_bringup/launch/bluerov2/bluerov2.launch.py index 7f07c0e7..fcf0f2c1 100644 --- a/blue_bringup/launch/bluerov2/bluerov2.launch.py +++ b/blue_bringup/launch/bluerov2/bluerov2.launch.py @@ -133,7 +133,9 @@ def generate_launch_description() -> LaunchDescription: "use_sim": LaunchConfiguration("use_sim"), "use_rviz": LaunchConfiguration("use_rviz"), "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": "bluerov2_underwater.world", + "gazebo_world_file": LaunchConfiguration( + "gazebo_world_file", default="bluerov2_underwater.world" + ), "prefix": LaunchConfiguration("prefix"), "robot_description": robot_description, "use_joy": LaunchConfiguration("use_joy"), diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py index 0adf31ba..1c01286a 100644 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py +++ b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py @@ -133,7 +133,9 @@ def generate_launch_description() -> LaunchDescription: "use_sim": LaunchConfiguration("use_sim"), "use_rviz": LaunchConfiguration("use_rviz"), "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": "bluerov2_heavy_underwater.world", + "gazebo_world_file": LaunchConfiguration( + "gazebo_world_file", default="bluerov2_heavy_underwater.world" + ), "prefix": LaunchConfiguration("prefix"), "robot_description": robot_description, "use_joy": LaunchConfiguration("use_joy"), diff --git a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py index 8fd20e07..2201e297 100644 --- a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py +++ b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py @@ -133,7 +133,10 @@ def generate_launch_description() -> LaunchDescription: "use_sim": LaunchConfiguration("use_sim"), "use_rviz": LaunchConfiguration("use_rviz"), "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": "bluerov2_heavy_reach_underwater.world", # noqa + "gazebo_world_file": LaunchConfiguration( + "gazebo_world_file", + default="bluerov2_heavy_reach_underwater.world", + ), # noqa "prefix": LaunchConfiguration("prefix"), "robot_description": robot_description, "use_joy": LaunchConfiguration("use_joy"), From b4a8d320bc4afb34271ce274bd87ec9af335e36e Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Tue, 23 Apr 2024 23:27:39 -0700 Subject: [PATCH 12/72] Fixed missing keys --- .docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 0361cb30..6acebc72 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -157,7 +157,7 @@ RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ && vcs import src < src/blue/blue.repos \ && rosdep update \ - && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \ + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ && sudo apt-get autoremove -y \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* From 12301730d044a1e9af750a2e23c794834920bbdd Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 01:27:22 -0700 Subject: [PATCH 13/72] Bump docker/login-action from 3.1.0 to 3.2.0 (#172) (#173) Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v3.1.0...v3.2.0) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit c8e46b704b78780b66aca9c3488f164a6181e773) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 2 +- .github/workflows/docker.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f7a74288..693ac20d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,7 +28,7 @@ jobs: submodules: recursive - name: Log into registry - uses: docker/login-action@v3.1.0 + uses: docker/login-action@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index f01f8cde..3c4b90f6 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -33,7 +33,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.1.0 + uses: docker/login-action@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -80,7 +80,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.1.0 + uses: docker/login-action@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -122,7 +122,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.1.0 + uses: docker/login-action@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -163,7 +163,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.1.0 + uses: docker/login-action@v3.2.0 with: registry: ghcr.io username: ${{ github.actor }} From da2185d71e86b927dcb57cd26cfdf2c4df50ad06 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 20 Jun 2024 15:13:08 -0700 Subject: [PATCH 14/72] Bump docker/build-push-action from 5.3.0 to 5.4.0 (#175) (#177) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 5.4.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v5.3.0...v5.4.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 880a2d6d4aea4b67bb7d8e811e0f88d88467b85e) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 3c4b90f6..16e6d1c5 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.3.0 + uses: docker/build-push-action@v5.4.0 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.3.0 + uses: docker/build-push-action@v5.4.0 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.3.0 + uses: docker/build-push-action@v5.4.0 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.3.0 + uses: docker/build-push-action@v5.4.0 with: context: . file: .docker/Dockerfile From 3906733fbb5948f98113ea6d3f619145dc546fa8 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 17:27:45 -0700 Subject: [PATCH 15/72] Bump braces from 3.0.2 to 3.0.3 in /docs (#182) (#184) Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 107fe4c0ff7f5c3593844685971a67af5bf89ac2) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 6af2feaa..a75032d3 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -4904,11 +4904,11 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -8266,9 +8266,9 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, From 86529c3d705f1aa054320764d88bcabcaf2bd0a6 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 13:08:02 -0700 Subject: [PATCH 16/72] Bump docker/build-push-action from 5.4.0 to 6.0.0 (#179) (#186) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.4.0 to 6.0.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v5.4.0...v6.0.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 4efc645c5da0a4876839310b61b1d28b359b919b) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 16e6d1c5..34053e75 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.4.0 + uses: docker/build-push-action@v6.0.0 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.4.0 + uses: docker/build-push-action@v6.0.0 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.4.0 + uses: docker/build-push-action@v6.0.0 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v5.4.0 + uses: docker/build-push-action@v6.0.0 with: context: . file: .docker/Dockerfile From 4a0de68b5aae7fecf29460248ebf2e32a9c92c5a Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Mon, 24 Jun 2024 14:55:35 -0700 Subject: [PATCH 17/72] Added upstream changes and fixes to docker install (#190) --- .docker/Dockerfile | 6 ++++++ .github/workflows/docker.yaml | 8 ++++---- docs/docs/overview.mdx | 10 +++++++++- docs/docs/welcome.mdx | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 6acebc72..0112cad9 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -81,6 +81,9 @@ RUN sudo apt-get -q update \ gstreamer1.0-plugins-ugly \ gstreamer1.0-plugins-bad \ gstreamer1.0-libav \ + libgstreamer1.0-dev \ + gstreamer1.0-gl \ + libgstreamer-plugins-base1.0-dev \ && sudo apt-get autoremove -y \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* @@ -118,6 +121,9 @@ RUN sudo apt-get -q update \ python3-wxgtk4.0 \ rapidjson-dev \ xterm \ + libgz-sim7-dev \ + rapidjson-dev \ + libopencv-dev \ && sudo apt-get autoremove -y \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 34053e75..fb01cad0 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.0.0 + uses: docker/build-push-action@v6.1.0 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.0.0 + uses: docker/build-push-action@v6.1.0 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.0.0 + uses: docker/build-push-action@v6.1.0 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.0.0 + uses: docker/build-push-action@v6.1.0 with: context: . file: .docker/Dockerfile diff --git a/docs/docs/overview.mdx b/docs/docs/overview.mdx index 66c76065..48159e90 100644 --- a/docs/docs/overview.mdx +++ b/docs/docs/overview.mdx @@ -28,7 +28,15 @@ following features: writing your robotics algorithms 😀 4. **Custom control and localization algorithms**: Blue supports custom controllers implemented using [auv_controllers](https://github.com/Robotic-Decision-Making-Lab/auv_controllers) -and localization algorithms implemented using [marine_localization](https://github.com/Robotic-Decision-Making-Lab/marine_localization). +and localization algorithms implemented using [blue_localization](https://github.com/Robotic-Decision-Making-Lab/blue/tree/main/blue_localization). + +:::info + +The features implemented in `blue_localization` are currently being ported to +[marine_localization](https://github.com/Robotic-Decision-Making-Lab/marine_localization). +Keep an eye on that repository for the latest changes and updates. + +::: ## Recommended workflow diff --git a/docs/docs/welcome.mdx b/docs/docs/welcome.mdx index 5e717074..b68588de 100644 --- a/docs/docs/welcome.mdx +++ b/docs/docs/welcome.mdx @@ -22,8 +22,8 @@ import CodeBlock from '@theme/CodeBlock'; regarding usage of Blue, please ask a question on our [Discussions](https://github.com/Robotic-Decision-Making-Lab/blue/discussions) board! If you would like to contribute to Blue, please see our [contribution guidelines](/contributing). - If you find Blue to be helpful in your work, please consider citing our - paper: + If you find Blue to be helpful in your work, please consider citing + [our paper](https://research.engr.oregonstate.edu/rdml/sites/research.engr.oregonstate.edu.rdml/files/icra24_3342_fi.pdf):

From c3f7d75e3dee43ac1e766ff5745e8b2c29d26ead Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Mon, 24 Jun 2024 20:39:07 -0700 Subject: [PATCH 18/72] Updated controller manager launch in demo --- .../launch/bluerov2/bluerov2.launch.py | 158 ----------------- .../bluerov2_heavy/bluerov2_heavy.launch.py | 158 ----------------- .../bluerov2_heavy_reach.launch.py | 159 ------------------ .../launch/bluerov2_controllers.launch.py | 34 +--- .../bluerov2_heavy_controllers.launch.py | 34 +--- 5 files changed, 8 insertions(+), 535 deletions(-) delete mode 100644 blue_bringup/launch/bluerov2/bluerov2.launch.py delete mode 100644 blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py delete mode 100644 blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py diff --git a/blue_bringup/launch/bluerov2/bluerov2.launch.py b/blue_bringup/launch/bluerov2/bluerov2.launch.py deleted file mode 100644 index fcf0f2c1..00000000 --- a/blue_bringup/launch/bluerov2/bluerov2.launch.py +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright 2023, Evan Palmer -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import ( - Command, - FindExecutable, - LaunchConfiguration, - PathJoinSubstitution, -) -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description to run the system. - - Returns: - The launch description for the BlueROV2 base configuration. - """ - args = [ - DeclareLaunchArgument( - "controller", - default_value="ismc", - description=( - "The controller to use; this should be the same name as the" - " controller's executable." - ), - choices=["ismc"], - ), - DeclareLaunchArgument( - "localization_source", - default_value="gazebo", - choices=["mocap", "camera", "gazebo"], - description="The localization source to stream from.", - ), - DeclareLaunchArgument( - "use_camera", - default_value="false", - description=( - "Launch the BlueROV2 camera stream. This is automatically set to true" - " when using the camera for localization." - ), - ), - DeclareLaunchArgument( - "use_mocap", - default_value="false", - description=( - "Launch the Qualisys motion capture stream. This is automatically" - " set to true when using the motion capture system for localization." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - DeclareLaunchArgument( - "use_rviz", default_value="false", description="Launch RViz2." - ), - DeclareLaunchArgument( - "use_joy", default_value="false", description="Use a joystick controller." - ), - DeclareLaunchArgument( - "rviz_config", - default_value="bluerov2.rviz", - description="The RViz2 configuration file to load.", - ), - DeclareLaunchArgument( - "prefix", - default_value="", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - ] - - robot_description = Command( - [ - PathJoinSubstitution([FindExecutable(name="xacro")]), - " ", - PathJoinSubstitution( - [ - FindPackageShare("blue_description"), - "xacro", - "bluerov2", - "config.xacro", - ] - ), - " ", - "prefix:=", - LaunchConfiguration("prefix"), - " ", - "use_sim:=", - LaunchConfiguration("use_sim"), - ] - ) - - return LaunchDescription( - [ - *args, - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [FindPackageShare("blue_bringup"), "launch", "base.launch.py"] - ) - ), - launch_arguments={ - "configuration_type": "bluerov2", - "controller": LaunchConfiguration("controller"), - "localization_source": LaunchConfiguration("localization_source"), - "use_camera": LaunchConfiguration("use_camera"), - "use_mocap": LaunchConfiguration("use_mocap"), - "use_sim": LaunchConfiguration("use_sim"), - "use_rviz": LaunchConfiguration("use_rviz"), - "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": LaunchConfiguration( - "gazebo_world_file", default="bluerov2_underwater.world" - ), - "prefix": LaunchConfiguration("prefix"), - "robot_description": robot_description, - "use_joy": LaunchConfiguration("use_joy"), - }.items(), - ), - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("blue_bringup"), - "launch", - "bluerov2", - "tf.launch.py", - ] - ) - ), - launch_arguments={"prefix": LaunchConfiguration("prefix")}.items(), - ), - ] - ) diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py deleted file mode 100644 index 1c01286a..00000000 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.py +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright 2023, Evan Palmer -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import ( - Command, - FindExecutable, - LaunchConfiguration, - PathJoinSubstitution, -) -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description to run the system. - - Returns: - The launch description for the BlueROV2 base configuration. - """ - args = [ - DeclareLaunchArgument( - "controller", - default_value="ismc", - description=( - "The controller to use; this should be the same name as the" - " controller's executable." - ), - choices=["ismc"], - ), - DeclareLaunchArgument( - "localization_source", - default_value="gazebo", - choices=["mocap", "camera", "gazebo"], - description="The localization source to stream from.", - ), - DeclareLaunchArgument( - "use_camera", - default_value="false", - description=( - "Launch the BlueROV2 camera stream. This is automatically set to true" - " when using the camera for localization." - ), - ), - DeclareLaunchArgument( - "use_mocap", - default_value="false", - description=( - "Launch the Qualisys motion capture stream. This is automatically" - " set to true when using the motion capture system for localization." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - DeclareLaunchArgument( - "use_rviz", default_value="false", description="Launch RViz2." - ), - DeclareLaunchArgument( - "use_joy", default_value="false", description="Use a joystick controller." - ), - DeclareLaunchArgument( - "rviz_config", - default_value="bluerov2_heavy.rviz", - description="The RViz2 configuration file to load.", - ), - DeclareLaunchArgument( - "prefix", - default_value="", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - ] - - robot_description = Command( - [ - PathJoinSubstitution([FindExecutable(name="xacro")]), - " ", - PathJoinSubstitution( - [ - FindPackageShare("blue_description"), - "xacro", - "bluerov2_heavy", - "config.xacro", - ] - ), - " ", - "prefix:=", - LaunchConfiguration("prefix"), - " ", - "use_sim:=", - LaunchConfiguration("use_sim"), - ] - ) - - return LaunchDescription( - [ - *args, - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [FindPackageShare("blue_bringup"), "launch", "base.launch.py"] - ) - ), - launch_arguments={ - "configuration_type": "bluerov2_heavy", - "controller": LaunchConfiguration("controller"), - "localization_source": LaunchConfiguration("localization_source"), - "use_camera": LaunchConfiguration("use_camera"), - "use_mocap": LaunchConfiguration("use_mocap"), - "use_sim": LaunchConfiguration("use_sim"), - "use_rviz": LaunchConfiguration("use_rviz"), - "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": LaunchConfiguration( - "gazebo_world_file", default="bluerov2_heavy_underwater.world" - ), - "prefix": LaunchConfiguration("prefix"), - "robot_description": robot_description, - "use_joy": LaunchConfiguration("use_joy"), - }.items(), - ), - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("blue_bringup"), - "launch", - "bluerov2_heavy", - "tf.launch.py", - ] - ) - ), - launch_arguments={"prefix": LaunchConfiguration("prefix")}.items(), - ), - ] - ) diff --git a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py deleted file mode 100644 index 2201e297..00000000 --- a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.py +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright 2023, Evan Palmer -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import ( - Command, - FindExecutable, - LaunchConfiguration, - PathJoinSubstitution, -) -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description to run the system. - - Returns: - The launch description for the BlueROV2 base configuration. - """ - args = [ - DeclareLaunchArgument( - "controller", - default_value="ismc", - description=( - "The controller to use; this should be the same name as the" - " controller's executable." - ), - choices=["ismc"], - ), - DeclareLaunchArgument( - "localization_source", - default_value="gazebo", - choices=["mocap", "camera", "gazebo"], - description="The localization source to stream from.", - ), - DeclareLaunchArgument( - "use_camera", - default_value="false", - description=( - "Launch the BlueROV2 camera stream. This is automatically set to true" - " when using the camera for localization." - ), - ), - DeclareLaunchArgument( - "use_mocap", - default_value="false", - description=( - "Launch the Qualisys motion capture stream. This is automatically" - " set to true when using the motion capture system for localization." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - DeclareLaunchArgument( - "use_rviz", default_value="false", description="Launch RViz2." - ), - DeclareLaunchArgument( - "use_joy", default_value="false", description="Use a joystick controller." - ), - DeclareLaunchArgument( - "rviz_config", - default_value="bluerov2_heavy_reach.rviz", - description="The RViz2 configuration file to load.", - ), - DeclareLaunchArgument( - "prefix", - default_value="", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - ] - - robot_description = Command( - [ - PathJoinSubstitution([FindExecutable(name="xacro")]), - " ", - PathJoinSubstitution( - [ - FindPackageShare("blue_description"), - "xacro", - "bluerov2_heavy_reach", - "config.xacro", - ] - ), - " ", - "prefix:=", - LaunchConfiguration("prefix"), - " ", - "use_sim:=", - LaunchConfiguration("use_sim"), - ] - ) - - return LaunchDescription( - [ - *args, - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [FindPackageShare("blue_bringup"), "launch", "base.launch.py"] - ) - ), - launch_arguments={ - "configuration_type": "bluerov2_heavy_reach", - "controller": LaunchConfiguration("controller"), - "localization_source": LaunchConfiguration("localization_source"), - "use_camera": LaunchConfiguration("use_camera"), - "use_mocap": LaunchConfiguration("use_mocap"), - "use_sim": LaunchConfiguration("use_sim"), - "use_rviz": LaunchConfiguration("use_rviz"), - "rviz_config": LaunchConfiguration("rviz_config"), - "gazebo_world_file": LaunchConfiguration( - "gazebo_world_file", - default="bluerov2_heavy_reach_underwater.world", - ), # noqa - "prefix": LaunchConfiguration("prefix"), - "robot_description": robot_description, - "use_joy": LaunchConfiguration("use_joy"), - }.items(), - ), - IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("blue_bringup"), - "launch", - "bluerov2_heavy_reach", - "tf.launch.py", - ] - ) - ), - launch_arguments={"prefix": LaunchConfiguration("prefix")}.items(), - ), - ] - ) diff --git a/blue_demos/control_integration/launch/bluerov2_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_controllers.launch.py index a3f6345f..b4e6d059 100644 --- a/blue_demos/control_integration/launch/bluerov2_controllers.launch.py +++ b/blue_demos/control_integration/launch/bluerov2_controllers.launch.py @@ -21,12 +21,7 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, RegisterEventHandler from launch.event_handlers import OnProcessExit -from launch.substitutions import ( - Command, - FindExecutable, - LaunchConfiguration, - PathJoinSubstitution, -) +from launch.substitutions import PathJoinSubstitution from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare @@ -52,29 +47,6 @@ def generate_launch_description() -> LaunchDescription: ), ] - robot_description_content = Command( - [ - PathJoinSubstitution([FindExecutable(name="xacro")]), - " ", - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "control_integration", - "description", - "urdf", - "bluerov2.config.xacro", - ] - ), - " ", - "prefix:=", - LaunchConfiguration("prefix"), - " ", - "use_sim:=", - LaunchConfiguration("use_sim"), - ] - ) - robot_description = {"robot_description": robot_description_content} - # The ISMC expects state information to be provided in the FSD frame mobile_to_maritime_velocity_state = Node( package="mobile_to_maritime", @@ -95,7 +67,6 @@ def generate_launch_description() -> LaunchDescription: executable="ros2_control_node", output="both", parameters=[ - robot_description, PathJoinSubstitution( [ FindPackageShare("blue_demos"), @@ -105,6 +76,9 @@ def generate_launch_description() -> LaunchDescription: ] ), ], + remappings=[ + ("/controller_manager/robot_description", "/robot_description"), + ], ) velocity_controller_spawner = Node( diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py index 9e196b7c..5e367672 100644 --- a/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py +++ b/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py @@ -21,12 +21,7 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, RegisterEventHandler from launch.event_handlers import OnProcessExit -from launch.substitutions import ( - Command, - FindExecutable, - LaunchConfiguration, - PathJoinSubstitution, -) +from launch.substitutions import PathJoinSubstitution from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare @@ -51,29 +46,6 @@ def generate_launch_description() -> LaunchDescription: ), ] - robot_description_content = Command( - [ - PathJoinSubstitution([FindExecutable(name="xacro")]), - " ", - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "control_integration", - "description", - "urdf", - "bluerov2_heavy.config.xacro", - ] - ), - " ", - "prefix:=", - LaunchConfiguration("prefix"), - " ", - "use_sim:=", - LaunchConfiguration("use_sim"), - ] - ) - robot_description = {"robot_description": robot_description_content} - # The ISMC expects state information to be provided in the FSD frame mobile_to_maritime_velocity_state = Node( package="mobile_to_maritime", @@ -94,7 +66,6 @@ def generate_launch_description() -> LaunchDescription: executable="ros2_control_node", output="both", parameters=[ - robot_description, PathJoinSubstitution( [ FindPackageShare("blue_demos"), @@ -104,6 +75,9 @@ def generate_launch_description() -> LaunchDescription: ] ), ], + remappings=[ + ("/controller_manager/robot_description", "/robot_description"), + ], ) velocity_controller_spawner = Node( From 2dcecb298d7cdfdfe8d105285aefc19e2b679da7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 14:13:46 -0700 Subject: [PATCH 19/72] Resolved bug in BlueROV2 Heavy and Heavy Reach launch configurations (#193) (#194) * Fixed ardusub_gazebo install and mavros configurations * Remapped controller manager topic to robot state publisher topic * Added missing gstreamer dependency (cherry picked from commit 9ddb154b1e34800d7f58c0b345bd09370ba74e23) Co-authored-by: Evan Palmer --- blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml | 2 +- .../bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml index 28819c61..93897099 100644 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml @@ -43,7 +43,7 @@ launch: - arg: name: mavros_file - default: $(find-pkg-share blue_description)/config/mavros.yaml + default: $(find-pkg-share blue_description)/config/ardusub/mavros.yaml - arg: name: manager_file diff --git a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml index d4c01132..d16e459b 100644 --- a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml @@ -43,7 +43,7 @@ launch: - arg: name: mavros_file - default: $(find-pkg-share blue_description)/config/mavros.yaml + default: $(find-pkg-share blue_description)/config/ardusub/mavros.yaml - arg: name: manager_file From 86d3b77957786bc72f9b591b33396ca235d359a5 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 23:43:32 -0700 Subject: [PATCH 20/72] Added additional resources for USB/IP tutorial (#196) (#198) (cherry picked from commit 531ed83b0ee6859070be48208b6779f42db24309) Co-authored-by: Evan Palmer --- docs/docs/tutorials/teleop.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs/tutorials/teleop.mdx b/docs/docs/tutorials/teleop.mdx index 0171bcb4..c1519576 100644 --- a/docs/docs/tutorials/teleop.mdx +++ b/docs/docs/tutorials/teleop.mdx @@ -138,10 +138,12 @@ inputs, press and release the left trigger. ## USB/IP gamepad teleoperation -This tutorial describes how to configure [USB/IP](https://www.kernel.org/doc/html/latest/usb/usbip_protocol.html) +This tutorial describes how to configure [USB/IP](https://usbip.sourceforge.net/) so that you can teleoperate a remote vehicle connected to a topside computer -via a tether with a gamepad connected to your topside machine. In this +via tether with a gamepad connected to your topside machine. In this configuration, we recommend using a [Logitech F310 Gamepad](https://www.logitechg.com/en-us/products/gamepads/f310-gamepad.940-000110.html). +Additional USB/IP tutorials can be found on the [RidgeRun Developer Wiki](https://developer.ridgerun.com/wiki/index.php?title=How_to_setup_and_use_USB/IP) +and in the [Linux Magazine](https://www.linux-magazine.com/Issues/2018/208/Tutorial-USB-IP). ### Dependencies From 2cb72121e10ff67bfe70b24736dfce7c74e59d99 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 21:31:54 -0700 Subject: [PATCH 21/72] Bump docker/build-push-action from 6.1.0 to 6.2.0 (#200) (#202) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.1.0...v6.2.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 8639c4191064a415b5a9898a44f7d2b6440b63ce) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index fb01cad0..5230aea7 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.1.0 + uses: docker/build-push-action@v6.2.0 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.1.0 + uses: docker/build-push-action@v6.2.0 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.1.0 + uses: docker/build-push-action@v6.2.0 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.1.0 + uses: docker/build-push-action@v6.2.0 with: context: . file: .docker/Dockerfile From 42c6a48ca469da82ab66bb2df59b340ed61c5bf0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 15:40:58 -0700 Subject: [PATCH 22/72] Add xacro as an exec_depend for blue_description (#215) (#219) Co-authored-by: Aaron Marburg (cherry picked from commit 506be0642c94239b9d4c40ed2ab9d05497abafae) Co-authored-by: Aaron Marburg --- blue_description/package.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/blue_description/package.xml b/blue_description/package.xml index 0eca687e..e176cb73 100644 --- a/blue_description/package.xml +++ b/blue_description/package.xml @@ -16,6 +16,8 @@ ament_cmake + xacro + ament_cmake From 3e5c96443aab591e8ad96bb3afb58d3e1ed6267f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 16:18:11 -0700 Subject: [PATCH 23/72] Style: Upcase "as" in Dockerfile (backport #214) (#217) * Fix case on "as" in Dockerfile (#214) Co-authored-by: Aaron Marburg (cherry picked from commit 8bbb19e38e5ccb929ded96512d100877389cde66) # Conflicts: # .docker/Dockerfile * Resolved merge conflicts * Bump build versions --------- Co-authored-by: Aaron Marburg Co-authored-by: Evan Palmer --- .docker/Dockerfile | 8 ++++---- .github/workflows/ci.yaml | 2 +- .github/workflows/docker.yaml | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 0112cad9..fe30b39a 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,5 +1,5 @@ ARG ROS_DISTRO=iron -FROM ros:$ROS_DISTRO-ros-base as ci +FROM ros:$ROS_DISTRO-ros-base AS ci ENV DEBIAN_FRONTEND=noninteractive @@ -36,7 +36,7 @@ RUN apt-get -q update \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* -FROM ci as robot +FROM ci AS robot # Configure a new non-root user ARG USERNAME=blue @@ -99,7 +99,7 @@ RUN sudo apt-get -q update \ RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashrc \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> /home/$USERNAME/.bashrc -FROM robot as desktop +FROM robot AS desktop ENV DEBIAN_FRONTEND=noninteractive ENV GZ_VERSION=garden @@ -177,7 +177,7 @@ RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ # Setup the simulation environment variables RUN echo "source ${USER_WORKSPACE}/src/blue/.docker/entrypoints/sim.sh" >> /home/$USERNAME/.bashrc -FROM desktop as desktop-nvidia +FROM desktop AS desktop-nvidia # Install NVIDIA software RUN sudo apt-get update \ diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 693ac20d..33ffca7f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,7 +28,7 @@ jobs: submodules: recursive - name: Log into registry - uses: docker/login-action@v3.2.0 + uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 5230aea7..92a44e85 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -33,7 +33,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.2.0 + uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.2.0 + uses: docker/build-push-action@v6.5.0 with: context: . file: .docker/Dockerfile @@ -73,14 +73,14 @@ jobs: uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v3.0.0 + uses: docker/setup-qemu-action@v3.2.0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.2.0 + uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.2.0 + uses: docker/build-push-action@v6.5.0 with: context: . file: .docker/Dockerfile @@ -122,7 +122,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.2.0 + uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.2.0 + uses: docker/build-push-action@v6.5.0 with: context: . file: .docker/Dockerfile @@ -163,7 +163,7 @@ jobs: - name: Log into registry if: env.PUSH == 'true' - uses: docker/login-action@v3.2.0 + uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.2.0 + uses: docker/build-push-action@v6.5.0 with: context: . file: .docker/Dockerfile From da4a996f9d751e79edf66010e2547100b96f6e37 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:43:13 -0700 Subject: [PATCH 24/72] Add "robot" container (backport #221) (#225) * Add "robot" container (#221) * Initial commit of _robot container and devcontainer * Add xacro as an exec_depend for blue_description * Update comments * Remove unused Docker stage "blue_src_and_deps" Renamed *.repos --> blue.repos and sim.repos --------- Co-authored-by: Aaron Marburg (cherry picked from commit ba77c25bdcddf1d7ad04779320550820cd4e3b53) # Conflicts: # blue.repos * Fixed merge conflict from mergify * Use "iron" branch of ros_gz --------- Co-authored-by: Aaron Marburg Co-authored-by: Evan Palmer Co-authored-by: Aaron Marburg --- .devcontainer/robot/Dockerfile | 31 +++++++++++++++++++++ .devcontainer/robot/devcontainer.json | 40 +++++++++++++++++++++++++++ .docker/Dockerfile | 19 +++++++++++-- .docker/compose/robot.yaml | 21 ++++++++++++++ .dockerignore | 1 + blue.repos | 5 ---- sim.repos | 11 ++++++++ 7 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 .devcontainer/robot/Dockerfile create mode 100644 .devcontainer/robot/devcontainer.json create mode 100644 .docker/compose/robot.yaml create mode 100644 sim.repos diff --git a/.devcontainer/robot/Dockerfile b/.devcontainer/robot/Dockerfile new file mode 100644 index 00000000..f10cb1e8 --- /dev/null +++ b/.devcontainer/robot/Dockerfile @@ -0,0 +1,31 @@ +# +# Dockerfile for *-robot development container +# +ARG BLUE_GITHUB_REPO=Robotic-Decision-Making-Lab/blue +ARG ROS_DISTRO=rolling +FROM ${BLUE_GITHUB_REPO}:${ROS_DISTRO}-robot + +# Install ROS dependencies +# This is done in a previous stage, but we include it again here in case anyone wants to +# add new dependencies during development +ENV USERNAME=blue +ENV USER_WORKSPACE=/home/$USERNAME/ws_blue +WORKDIR $USER_WORKSPACE + +COPY --chown=$USER_UID:$USER_GID . src/blue +RUN sudo apt-get -q update \ + && sudo apt-get -q -y upgrade \ + && rosdep update \ + && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ + && sudo apt-get autoremove -y \ + && sudo apt-get clean -y \ + && sudo rm -rf /var/lib/apt/lists/* + +# Install debugging/linting Python packages +RUN python3 -m pip install \ + pre-commit \ + mypy + +# Disable the setuputils installation warning +# This prevents us from needing to pin the setuputils version (which doesn't always work) +ENV PYTHONWARNINGS="ignore" diff --git a/.devcontainer/robot/devcontainer.json b/.devcontainer/robot/devcontainer.json new file mode 100644 index 00000000..d57e5f09 --- /dev/null +++ b/.devcontainer/robot/devcontainer.json @@ -0,0 +1,40 @@ +{ + "name": "Robot Dev Container", + "build": { + "dockerfile": "Dockerfile", + "context": "../..", + "args": { + "BLUE_GITHUB_REPO": "ghcr.io/robotic-decision-making-lab/blue", + "ROS_DISTRO": "rolling" + } + }, + "workspaceMount": "source=${localWorkspaceFolder},target=/home/blue/ws_blue/src/blue,type=bind", + "workspaceFolder": "/home/blue/ws_blue/src/blue", + "remoteUser": "blue", + "runArgs": [ + "--network=host", + "--cap-add=SYS_PTRACE", + "--security-opt=seccomp:unconfined", + "--security-opt=apparmor:unconfined", + "--volume=/dev:/dev", + "--privileged", + "--volume=/run/user/1000:/run/user/1000" + ], + "containerEnv": {}, + "customizations": { + "vscode": { + "extensions": [ + "ms-azuretools.vscode-docker", + "ms-python.python", + "njpwerner.autodocstring", + "redhat.vscode-xml", + "redhat.vscode-yaml", + "smilerobotics.urdf", + "esbenp.prettier-vscode", + "charliermarsh.ruff", + "josetr.cmake-language-support-vscode", + "unifiedjs.vscode-mdx" + ] + } + } +} diff --git a/.docker/Dockerfile b/.docker/Dockerfile index fe30b39a..6e7c955b 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -26,7 +26,8 @@ RUN apt-get -q update \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* -# Install all ROS dependencies +# Install all ROS dependencies for _just_ blue +# (we have not imported other repos from .repos files) RUN apt-get -q update \ && apt-get -q -y upgrade \ && rosdep update \ @@ -36,6 +37,14 @@ RUN apt-get -q update \ && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* +# This stage includes +# - Switching to the non-root user +# - Copying 'blue' source from this repo into the non-root user's workspace +# - Installing blue deps using pip, apt and rosdep +# - Installs the remaining blue dependencies from blue_robot.repos +# - Installs deps from rosdep for all src dependencies +# - colcon build +# FROM ci AS robot # Configure a new non-root user @@ -88,14 +97,20 @@ RUN sudo apt-get -q update \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* +WORKDIR $USER_WORKSPACE RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ + && vcs import src < src/blue/blue.repos \ && rosdep update \ && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \ && sudo apt-get autoremove -y \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* +# Actually build workspace +RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ + && colcon build + RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashrc \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> /home/$USERNAME/.bashrc @@ -161,7 +176,7 @@ RUN [ "/bin/bash" , "-c" , " \ WORKDIR $USER_WORKSPACE RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ - && vcs import src < src/blue/blue.repos \ + && vcs import src < src/blue/sim.repos \ && rosdep update \ && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ && sudo apt-get autoremove -y \ diff --git a/.docker/compose/robot.yaml b/.docker/compose/robot.yaml new file mode 100644 index 00000000..faf1be02 --- /dev/null +++ b/.docker/compose/robot.yaml @@ -0,0 +1,21 @@ +services: + blue: + image: ghcr.io/robotic-decision-making-lab/blue:rolling-robot + build: + dockerfile: .docker/Dockerfile + target: robot + context: ../../ + network_mode: host + privileged: true + cap_add: + - SYS_PTRACE + security_opt: + - seccomp:unconfined + - apparmor:unconfined + volumes: + - /dev:/dev + - /run/user/1000:/run/user/1000 + - type: bind + source: ../../ + target: /home/blue/ws_blue/src/blue + command: tail -f /dev/null diff --git a/.dockerignore b/.dockerignore index 211fad8d..ae633710 100644 --- a/.dockerignore +++ b/.dockerignore @@ -7,5 +7,6 @@ !blue_description !blue_demos !blue.repos +!sim.repos !.docker/entrypoints !requirements-build.txt diff --git a/blue.repos b/blue.repos index 23486eb3..20a32377 100644 --- a/blue.repos +++ b/blue.repos @@ -1,10 +1,5 @@ repositories: - ros_gz: - type: git - url: https://github.com/gazebosim/ros_gz - version: iron - hydrodynamics: type: git url: https://github.com/Robotic-Decision-Making-Lab/hydrodynamics.git diff --git a/sim.repos b/sim.repos new file mode 100644 index 00000000..b530a5f9 --- /dev/null +++ b/sim.repos @@ -0,0 +1,11 @@ +# +# Note this is _in addition to_ blue.repos +# (i.e. you need to vcs import both files independently) +# +repositories: + + # ROS-Gazebo integration + ros_gz: + type: git + url: https://github.com/gazebosim/ros_gz + version: iron From 5f7f740299460c949ffb496892062ebf2d77dcfd Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:03:40 -0700 Subject: [PATCH 25/72] Use Gazebo Harmonic (#223) (#231) * Update to use Harmonic * Add "third-party" rosdep from OSRF for gazebo deps. * Added comment on "user ROOT" rather than sudo, joined two adjacent apt-get install steps. * Correct error in comment --------- Co-authored-by: Aaron Marburg (cherry picked from commit 8a4e05aa5e211cd0bab0e72466530f70054814fb) Co-authored-by: Aaron Marburg --- .docker/Dockerfile | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 6e7c955b..83b8740e 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -117,38 +117,40 @@ RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashr FROM robot AS desktop ENV DEBIAN_FRONTEND=noninteractive -ENV GZ_VERSION=garden - -# Install Gazebo Garden: https://gazebosim.org/docs/garden/install_ubuntu -RUN sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \ - && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \ - && sudo apt-get -q update \ - && sudo apt-get -y --quiet --no-install-recommends install \ - gz-garden \ - && sudo apt-get autoremove -y \ - && sudo apt-get clean -y \ - && sudo rm -rf /var/lib/apt/lists/* - -# Install ArduPilot and ardupilot_gazebo dependencies -RUN sudo apt-get -q update \ - && sudo apt-get -q -y upgrade \ - && sudo apt-get -q install --no-install-recommends -y \ +ENV GZ_VERSION=harmonic + +# Install Gazebo Harmonic: https://gazebosim.org/docs/harmonic/install_ubuntu +# Per DL3004, use "USER root" rather than "sudo" +# https://github.com/hadolint/hadolint/wiki/DL3004 +USER root +# Install custom rosdep list +ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list +RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \ + && apt-get -q update \ + && apt-get -y --quiet --no-install-recommends install \ + gz-${GZ_VERSION} \ + python3-pexpect \ python3-wxgtk4.0 \ + python3-future \ rapidjson-dev \ xterm \ - libgz-sim7-dev \ rapidjson-dev \ libopencv-dev \ - && sudo apt-get autoremove -y \ - && sudo apt-get clean -y \ - && sudo rm -rf /var/lib/apt/lists/* + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* +USER $USERNAME # Clone ArduSub # ArduSub is installed for simulation purposes ONLY # When deployed onto hardware, the native installation of ArduSub # (on the FCU) will be used. WORKDIR /home/$USERNAME -RUN git clone https://github.com/ArduPilot/ardupilot.git --recurse-submodules +# Really should do version pinning but Sub-4.5 is waaaay behind master +# (e.g. it doesn't know about "noble" yet) +ARG ARDUPILOT_RELEASE=master +RUN git clone -b ${ARDUPILOT_RELEASE} https://github.com/ArduPilot/ardupilot.git --recurse-submodules # Install ArduSub dependencies WORKDIR /home/$USERNAME/ardupilot From 0e297bc109aad194e82148c530da0a9027b5c78d Mon Sep 17 00:00:00 2001 From: Aaron Marburg Date: Fri, 9 Aug 2024 14:50:01 -0700 Subject: [PATCH 26/72] Install ros_gz from binary package (iron, humble) (#228) * Install ros_gz from package, not from source, remove sim.repos * Removed additional apt-get lines from cherry-pick --------- Co-authored-by: Aaron Marburg --- .docker/Dockerfile | 2 +- sim.repos | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 sim.repos diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 83b8740e..dc31ea0b 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -130,6 +130,7 @@ RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pk && apt-get -q update \ && apt-get -y --quiet --no-install-recommends install \ gz-${GZ_VERSION} \ + ros-${ROS_DISTRO}-ros-gz${GZ_VERSION} \ python3-pexpect \ python3-wxgtk4.0 \ python3-future \ @@ -178,7 +179,6 @@ RUN [ "/bin/bash" , "-c" , " \ WORKDIR $USER_WORKSPACE RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ - && vcs import src < src/blue/sim.repos \ && rosdep update \ && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ && sudo apt-get autoremove -y \ diff --git a/sim.repos b/sim.repos deleted file mode 100644 index b530a5f9..00000000 --- a/sim.repos +++ /dev/null @@ -1,11 +0,0 @@ -# -# Note this is _in addition to_ blue.repos -# (i.e. you need to vcs import both files independently) -# -repositories: - - # ROS-Gazebo integration - ros_gz: - type: git - url: https://github.com/gazebosim/ros_gz - version: iron From ffa217beb674760056d7b8ab31b802e6a6955232 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 17 Aug 2024 16:37:56 -0700 Subject: [PATCH 27/72] Bump docker/build-push-action from 6.5.0 to 6.6.1 (#239) (#246) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.5.0...v6.6.1) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit c4675d3eba278b8127ccb499a0ce7ba00c48dede) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 92a44e85..80df69a2 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.5.0 + uses: docker/build-push-action@v6.6.1 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.5.0 + uses: docker/build-push-action@v6.6.1 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.5.0 + uses: docker/build-push-action@v6.6.1 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.5.0 + uses: docker/build-push-action@v6.6.1 with: context: . file: .docker/Dockerfile From 100191496b165906507ea4260f716d1683e93ddb Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:51:54 -0700 Subject: [PATCH 28/72] Fix ENVs to use "key=value" format (#234) (#251) Co-authored-by: Aaron Marburg (cherry picked from commit 368b25a547a8f0a65d3e13872aa5c11eb21ae50c) Co-authored-by: Aaron Marburg --- .docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index dc31ea0b..1a828fd9 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -211,6 +211,6 @@ RUN sudo apt-get update \ && sudo rm -rf /var/lib/apt/lists/* # Env vars for the nvidia-container-runtime. -ENV NVIDIA_VISIBLE_DEVICES all -ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute -ENV QT_X11_NO_MITSHM 1 +ENV NVIDIA_VISIBLE_DEVICES=all +ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute +ENV QT_X11_NO_MITSHM=1 From 98d5ad508aefa5947780dc4f3a7991be55f57ac6 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:53:34 -0700 Subject: [PATCH 29/72] Bump docker/build-push-action from 6.6.1 to 6.7.0 (#247) (#254) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.6.1...v6.7.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 96852e3abf16eac1c9b089f1fb0084f9d7b39fb3) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 80df69a2..dd901294 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -49,7 +49,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.6.1 + uses: docker/build-push-action@v6.7.0 with: context: . file: .docker/Dockerfile @@ -96,7 +96,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.6.1 + uses: docker/build-push-action@v6.7.0 with: context: . file: .docker/Dockerfile @@ -138,7 +138,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.6.1 + uses: docker/build-push-action@v6.7.0 with: context: . file: .docker/Dockerfile @@ -179,7 +179,7 @@ jobs: type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - name: Build and push Docker image - uses: docker/build-push-action@v6.6.1 + uses: docker/build-push-action@v6.7.0 with: context: . file: .docker/Dockerfile From 356f608ff38f7a1043be7ea8c51f3560dabc2d4f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:16:33 -0700 Subject: [PATCH 30/72] Remove sim.sh, insert contents into .bashrc in Dockerfile (#227) (#258) * GZ_VERSION is set in the Dockerfile, don't override in sim.sh * Remove sim.sh, insert into .bashrc in Dockerfile * Remove dead code in Dockerfile * Use intermediate variable for location of BLUE_DESCRIPTION files. --------- Co-authored-by: Aaron Marburg (cherry picked from commit 2904656bf5fcceab5b4fbeb262842f3edf5e3557) Co-authored-by: Aaron Marburg --- .docker/Dockerfile | 22 +++++++++++++++++++++- .docker/entrypoints/sim.sh | 22 ---------------------- 2 files changed, 21 insertions(+), 23 deletions(-) delete mode 100644 .docker/entrypoints/sim.sh diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 1a828fd9..16ca16a3 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -192,7 +192,27 @@ RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ && colcon build # Setup the simulation environment variables -RUN echo "source ${USER_WORKSPACE}/src/blue/.docker/entrypoints/sim.sh" >> /home/$USERNAME/.bashrc +RUN <> /home/$USERNAME/.bashrc + +# Add results of ArduSub build +export PATH=\$HOME/ardupilot/build/sitl/bin:\$PATH + +# Optional: add autotest to the PATH, helpful for running sim_vehicle.py +export PATH=\$HOME/ardupilot/Tools/autotest:\$PATH + +# Add ardupilot_gazebo plugin +export GZ_SIM_SYSTEM_PLUGIN_PATH=\$HOME/ardupilot_gazebo/build:\$GZ_SIM_SYSTEM_PLUGIN_PATH + +# Add ardupilot_gazebo models and worlds +export GZ_SIM_RESOURCE_PATH=\$HOME/ardupilot_gazebo/models:\$HOME/ardupilot_gazebo/worlds:\$GZ_SIM_RESOURCE_PATH + +# Add blue models and worlds +BLUE_DESCRIPTION=\$USER_WORKSPACE/src/blue/blue_description +export GZ_SIM_RESOURCE_PATH=\$BLUE_DESCRIPTION/gazebo/models:\$BLUE_DESCRIPTION/gazebo/worlds:\$GZ_SIM_RESOURCE_PATH + +# Add blue meshes +export GZ_SIM_RESOURCE_PATH=\$BLUE_DESCRIPTION/meshes:\$GZ_SIM_RESOURCE_PATH +EOT FROM desktop AS desktop-nvidia diff --git a/.docker/entrypoints/sim.sh b/.docker/entrypoints/sim.sh deleted file mode 100644 index 85b3946b..00000000 --- a/.docker/entrypoints/sim.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -# Add results of ArduSub build -export PATH=$HOME/ardupilot/build/sitl/bin:$PATH - -# Optional: add autotest to the PATH, helpful for running sim_vehicle.py -export PATH=$HOME/ardupilot/Tools/autotest:$PATH - -# Add ardupilot_gazebo plugin -export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/ardupilot_gazebo/build:$GZ_SIM_SYSTEM_PLUGIN_PATH - -# Add ardupilot_gazebo models and worlds -export GZ_SIM_RESOURCE_PATH=$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH - -# Add blue models and worlds -export GZ_SIM_RESOURCE_PATH=$HOME/ws_blue/src/blue/blue_description/gazebo/models:$HOME/ws_blue/src/blue/blue_description/gazebo/worlds:$GZ_SIM_RESOURCE_PATH - -# Add blue meshes -export GZ_SIM_RESOURCE_PATH=$HOME/ws_blue/src/blue/blue_description/meshes:$GZ_SIM_RESOURCE_PATH - -# Build ros_gz for Gazebo Garden -export GZ_VERSION=garden From 058c27731c15c710a4d007e0fe2760583a6f2b26 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:47:43 -0700 Subject: [PATCH 31/72] Update and remove stale project configurations (backport #256) (#260) * Update and remove stale project configurations (#256) * Updated and removed stale configs * Moved devcontainer specific configurations to devcontainer.json file * Removed stale C++ configurations * Fixed grammar in mergify prompt * Update Python version in settings.json (cherry picked from commit 992b51b6b6a061ff59918d88386d52cfd1129d74) * Resolved cherry pick errors --------- Co-authored-by: Evan Palmer --- .devcontainer/nouveau/devcontainer.json | 4 ++++ .devcontainer/nvidia/devcontainer.json | 4 ++++ .devcontainer/robot/devcontainer.json | 4 ++++ .github/ISSUE_TEMPLATE/documentation.yaml | 8 ++++---- .github/mergify.yml | 13 +++++++++++-- .github/workflows/ci-docs.yaml | 1 - .vscode/c_cpp_properties.json | 7 +------ .vscode/settings.json | 6 ++---- 8 files changed, 30 insertions(+), 17 deletions(-) diff --git a/.devcontainer/nouveau/devcontainer.json b/.devcontainer/nouveau/devcontainer.json index 5dbcef35..a9cb299d 100644 --- a/.devcontainer/nouveau/devcontainer.json +++ b/.devcontainer/nouveau/devcontainer.json @@ -22,6 +22,10 @@ }, "customizations": { "vscode": { + "settings": { + "python.autoComplete.extraPaths": ["${workspaceFolder}/install/"], + "python.analysis.extraPaths": ["${workspaceFolder}/install/"] + }, "extensions": [ "ms-azuretools.vscode-docker", "ms-python.python", diff --git a/.devcontainer/nvidia/devcontainer.json b/.devcontainer/nvidia/devcontainer.json index 9359454f..b6f36a06 100644 --- a/.devcontainer/nvidia/devcontainer.json +++ b/.devcontainer/nvidia/devcontainer.json @@ -26,6 +26,10 @@ }, "customizations": { "vscode": { + "settings": { + "python.autoComplete.extraPaths": ["${workspaceFolder}/install/"], + "python.analysis.extraPaths": ["${workspaceFolder}/install/"] + }, "extensions": [ "ms-azuretools.vscode-docker", "ms-python.python", diff --git a/.devcontainer/robot/devcontainer.json b/.devcontainer/robot/devcontainer.json index d57e5f09..38e9e5a8 100644 --- a/.devcontainer/robot/devcontainer.json +++ b/.devcontainer/robot/devcontainer.json @@ -23,6 +23,10 @@ "containerEnv": {}, "customizations": { "vscode": { + "settings": { + "python.autoComplete.extraPaths": ["${workspaceFolder}/install/"], + "python.analysis.extraPaths": ["${workspaceFolder}/install/"] + }, "extensions": [ "ms-azuretools.vscode-docker", "ms-python.python", diff --git a/.github/ISSUE_TEMPLATE/documentation.yaml b/.github/ISSUE_TEMPLATE/documentation.yaml index d0dcbb2c..c44b1e6b 100644 --- a/.github/ISSUE_TEMPLATE/documentation.yaml +++ b/.github/ISSUE_TEMPLATE/documentation.yaml @@ -1,5 +1,5 @@ name: Documentation Improvement -description: Report an issue related to the BlueROV2 driver documentation. +description: Report an issue related to the Blue documentation. title: "[DOC]: " labels: [documentation, needs triage] @@ -16,9 +16,9 @@ body: label: Documentation Change Type description: Please indicate what type of documentation issue you are reporting. options: - - Adding new documentation to the BlueROV2 driver documentation - - Changing existing BlueROV2 driver documentation - - Removing existing BlueROV2 driver documentation + - Adding new documentation to the Blue documentation + - Changing existing documentation + - Removing existing documentation validations: required: true diff --git a/.github/mergify.yml b/.github/mergify.yml index 89c72613..186c6951 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -1,5 +1,5 @@ pull_request_rules: - - name: backport to iron at reviewers discretion + - name: backport to iron at reviewers' discretion conditions: - base=main - "label=backport-iron" @@ -8,7 +8,7 @@ pull_request_rules: branches: - iron - - name: backport to humble at reviewers discretion + - name: backport to humble at reviewers' discretion conditions: - base=main - "label=backport-humble" @@ -17,6 +17,15 @@ pull_request_rules: branches: - humble + - name: backport to jazzy at reviewers' discretion + conditions: + - base=main + - "label=backport-jazzy" + actions: + backport: + branches: + - jazzy + - name: ask to resolve conflict conditions: - conflict diff --git a/.github/workflows/ci-docs.yaml b/.github/workflows/ci-docs.yaml index 53df3f65..0418984d 100644 --- a/.github/workflows/ci-docs.yaml +++ b/.github/workflows/ci-docs.yaml @@ -4,7 +4,6 @@ on: push: branches: - main - - 33-feature-ros2-control pull_request: paths: - docs/** diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 3c605782..15272365 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -2,12 +2,7 @@ "configurations": [ { "name": "Linux", - "includePath": [ - "${workspaceFolder}/**", - "/opt/ros/iron/include/**", - "/usr/include/eigen3/**", - "/home/ros/ws_ros/**" - ], + "includePath": ["${workspaceFolder}/**", "/opt/ros/rolling/include/**"], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "c99", diff --git a/.vscode/settings.json b/.vscode/settings.json index f6d45d50..864f8c9b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,13 +24,11 @@ "autoDocstring.docstringFormat": "google-notypes", "python.autoComplete.extraPaths": [ "/opt/ros/iron/lib/python3.10/site-packages/", - "/opt/ros/iron/local/lib/python3.10/dist-packages/", - "${workspaceFolder}/install/" + "/opt/ros/iron/local/lib/python3.10/dist-packages/" ], "python.analysis.extraPaths": [ "/opt/ros/iron/lib/python3.10/site-packages/", - "/opt/ros/iron/local/lib/python3.10/dist-packages/", - "${workspaceFolder}/install/" + "/opt/ros/iron/local/lib/python3.10/dist-packages/" ], "[python]": { "editor.tabSize": 4, From addbd77a72b7139c85a31f35f11c2a4b9938ef19 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:54:00 -0700 Subject: [PATCH 32/72] Replaced instances of Gazebo Garden with Gazebo Harmonic (#238) (#263) (cherry picked from commit 4247e6f43692910f7e7f6c621a48db7449af701d) Co-authored-by: Evan Palmer --- docs/docs/tutorials/control.mdx | 2 +- docs/docs/tutorials/simulation.mdx | 2 +- docs/docs/tutorials/teleop.mdx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/tutorials/control.mdx b/docs/docs/tutorials/control.mdx index 996996d6..dd168e0b 100644 --- a/docs/docs/tutorials/control.mdx +++ b/docs/docs/tutorials/control.mdx @@ -16,7 +16,7 @@ tutorial. The following ROS 2 dependencies are required for this tutorial: -* Gazebo Garden or newer +* Gazebo Harmonic or newer * [ardusub_driver](https://github.com/Robotic-Decision-Making-Lab/ardusub_driver) (for use with the BlueROV2 vehicle models) * [auv_controllers](https://github.com/Robotic-Decision-Making-Lab/auv_controllers) diff --git a/docs/docs/tutorials/simulation.mdx b/docs/docs/tutorials/simulation.mdx index 20535cc8..8eaae54f 100644 --- a/docs/docs/tutorials/simulation.mdx +++ b/docs/docs/tutorials/simulation.mdx @@ -18,7 +18,7 @@ project's needs. This tutorial has the following dependencies: -* Gazebo Garden or newer +* Gazebo Harmonic or newer * [ardusub_driver](https://github.com/Robotic-Decision-Making-Lab/ardusub_driver) (for use with the BlueROV2 vehicle models) diff --git a/docs/docs/tutorials/teleop.mdx b/docs/docs/tutorials/teleop.mdx index c1519576..f2e1796a 100644 --- a/docs/docs/tutorials/teleop.mdx +++ b/docs/docs/tutorials/teleop.mdx @@ -17,7 +17,7 @@ keyboard. The following ROS 2 dependencies are required for this tutorial: -* Gazebo Garden or newer +* Gazebo Harmonic or newer * [ardusub_driver](https://github.com/Robotic-Decision-Making-Lab/ardusub_driver) * [auv_controllers](https://github.com/Robotic-Decision-Making-Lab/auv_controllers) * [teleop_twist_keyboard](https://github.com/ros2/teleop_twist_keyboard) @@ -68,7 +68,7 @@ This tutorial describes how to teleoperate a simulated BlueROV2 using a gamepad. The following ROS 2 dependencies are needed for this tutorial: -* Gazebo Garden or newer +* Gazebo Harmonic or newer * [ardusub_driver](https://github.com/Robotic-Decision-Making-Lab/ardusub_driver) * [auv_controllers](https://github.com/Robotic-Decision-Making-Lab/auv_controllers) * [mobile_to_maritime](https://github.com/Robotic-Decision-Making-Lab/mobile_to_maritime) From 46bf8e033e84e3739dea7187640503130b5b1072 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 14:58:48 -0700 Subject: [PATCH 33/72] Add Docker BuildX config (backport #266) (#268) * Add Docker BuildX config (#266) * Allow pushing to apl-ocean-engineering * Install cppzmq-dev for Gazebo * Allow pushing to apl-ocean-engineering * Reverse change in docker.yaml action. * Preliminary version of docker-bake.hcl and updated Docker workflow. * Updated comments in Dockerfile * Attempt to allow manual triggering of builds * Nope, that's not it. * Add preliminary label to all Docker images. * Removed redundant libcppzmq-dev * Hack to lowercase repo name * Re-activate the metadata-action, go back to stages in matrix. * Add comment on lowercasing. * Place files config at correct level. * Re-activate the metadata-action, go back to stages in matrix. * Place files config at correct level. * Switch to registry cache for CI * Removed stage from matrix * Update repo URL, fix list formatting. (cherry picked from commit a8681d091fcb25c6388e09559398a0e40b5e8788) # Conflicts: # .github/workflows/docker.yaml * Resolve conflict while merging #266 --------- Co-authored-by: Aaron Marburg --- .docker/docker-bake.hcl | 94 ++++++++++++++++ .github/workflows/docker.yaml | 202 ++++++++++++---------------------- .gitignore | 3 + 3 files changed, 170 insertions(+), 129 deletions(-) create mode 100644 .docker/docker-bake.hcl diff --git a/.docker/docker-bake.hcl b/.docker/docker-bake.hcl new file mode 100644 index 00000000..6c104206 --- /dev/null +++ b/.docker/docker-bake.hcl @@ -0,0 +1,94 @@ +# +# Override these variables with environment variables +# e.g. +# +# BLUE_ROS_DISTRO=iron docker buildx bake +# +# or +# +# export BLUE_ROS_DISTRO=iron +# docker buildx bake +# +variable "BLUE_ROS_DISTRO" { default = "rolling" } +variable "BLUE_GITHUB_REPO" { default = "robotic-decision-making-lab/blue" } + +group "default" { + targets = ["ci", "robot", "desktop", "desktop-nvidia"] +} + +# These are populated by the metadata-action Github action for each target +# when building in CI +# +target "docker-metadata-action-ci" {} +target "docker-metadata-action-robot" {} +target "docker-metadata-action-desktop" {} +target "docker-metadata-action-desktop-nvidia" {} + + +# +# All images can pull cache from the images published at Github +# or local storage (within the Buildkit image) +# +# ... and push cache to local storage +# +target "ci" { + inherits = ["docker-metadata-action-ci"] + dockerfile = ".docker/Dockerfile" + target = "ci" + context = ".." + args = { + ROS_DISTRO = "${BLUE_ROS_DISTRO}" + } + tags = [ + "ghcr.io/${BLUE_GITHUB_REPO}:${BLUE_ROS_DISTRO}-ci" + ] + labels = { + "org.opencontainers.image.source" = "https://github.com/${BLUE_GITHUB_REPO}" + } + cache_from =[ + "ghcr.io/${BLUE_GITHUB_REPO}:cache-${BLUE_ROS_DISTRO}-ci", + "ghcr.io/${BLUE_GITHUB_REPO}:cache-${BLUE_ROS_DISTRO}-robot", + "ghcr.io/${BLUE_GITHUB_REPO}:cache-${BLUE_ROS_DISTRO}-desktop", + "ghcr.io/${BLUE_GITHUB_REPO}:cache-${BLUE_ROS_DISTRO}-desktop-nvidia", + "type=local,dest=.docker-cache" + ] + cache_to = [ + "type=local,dest=.docker-cache" + ] + platforms = ["linux/amd64", "linux/arm64"] +} + +target "robot" { + inherits = [ "ci", "docker-metadata-action-robot" ] + target = "robot" + tags = [ + "ghcr.io/${BLUE_GITHUB_REPO}:${BLUE_ROS_DISTRO}-robot" + ] + cache_to = [ + "type=local,dest=.docker-cache" + ] +} + +target "desktop" { + inherits = [ "ci", "docker-metadata-action-desktop" ] + target = "desktop" + tags = [ + "ghcr.io/${BLUE_GITHUB_REPO}:${BLUE_ROS_DISTRO}-desktop" + ] + cache_to = [ + "type=local,dest=.docker-cache" + ] + # amd64 only builds for desktop and desktop-nvidia + platforms = ["linux/amd64"] +} + +target "desktop-nvidia" { + inherits = [ "desktop", "docker-metadata-action-desktop-nvidia" ] + target = "desktop-nvidia" + tags = [ + "ghcr.io/${BLUE_GITHUB_REPO}:${BLUE_ROS_DISTRO}-desktop-nvidia" + ] + cache_to = [ + "type=local,dest=.docker-cache" + ] +} diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index dd901294..155b92eb 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -1,8 +1,9 @@ name: Docker on: - schedule: - - cron: "0 17 * * 6" + # Disable schedule for preliminary testing + # schedule: + # - cron: "0 17 * * 6" push: branches: - iron @@ -18,7 +19,7 @@ env: PUSH: ${{ (github.event_name != 'pull_request') && (github.repository == 'Robotic-Decision-Making-Lab/blue') }} jobs: - ci: + docker_build: strategy: fail-fast: false matrix: @@ -28,163 +29,106 @@ jobs: packages: write contents: read steps: - - name: Checkout repository + - name: Checkout uses: actions/checkout@v4 - - name: Log into registry - if: env.PUSH == 'true' - uses: docker/login-action@v3.3.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract Docker metadata - if: env.PUSH == 'true' - id: meta - uses: docker/metadata-action@v5.5.1 - with: - images: ghcr.io/${{ github.repository }} - tags: | - type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - - - name: Build and push Docker image - uses: docker/build-push-action@v6.7.0 - with: - context: . - file: .docker/Dockerfile - build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} - target: ${{ github.job }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - push: ${{ env.PUSH }} - - robot: - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [iron] - runs-on: ubuntu-latest - permissions: - packages: write - contents: read - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3.2.0 + - # Add support for more platforms with QEMU (optional) + # https://github.com/docker/setup-qemu-action + name: Set up QEMU + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - name: Log into registry - if: env.PUSH == 'true' + - if: env.PUSH == 'true' + name: Log into registry uses: docker/login-action@v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract Docker metadata + # buildx bake, unfortunately, requires lower-cased repository names + # This shell ... er, hack, creates a local variable containing + # a down-cased version of $GITHUB_REPOSITORY + # + - id: lowercase-repo + name: Repository to lowercase + run: | + echo "repository=${GITHUB_REPOSITORY@L}" >> $GITHUB_OUTPUT + + # Set metadata for each stage-image separately + - name: Set Docker metadata for "ci" if: env.PUSH == 'true' - id: meta + id: meta-ci uses: docker/metadata-action@v5.5.1 with: images: ghcr.io/${{ github.repository }} + bake-target: docker-metadata-action-ci tags: | - type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - - - name: Build and push Docker image - uses: docker/build-push-action@v6.7.0 - with: - context: . - file: .docker/Dockerfile - build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} - target: ${{ github.job }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - push: ${{ env.PUSH }} - platforms: linux/amd64,linux/arm64 - - desktop: - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [iron] - runs-on: ubuntu-latest - permissions: - packages: write - contents: read - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Log into registry - if: env.PUSH == 'true' - uses: docker/login-action@v3.3.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + type=raw,value=${{ matrix.ROS_DISTRO }}-ci - - name: Extract Docker metadata + - name: Set Docker metadata for "robot" if: env.PUSH == 'true' - id: meta + id: meta-robot uses: docker/metadata-action@v5.5.1 with: images: ghcr.io/${{ github.repository }} + bake-target: docker-metadata-action-robot tags: | - type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - - - name: Build and push Docker image - uses: docker/build-push-action@v6.7.0 - with: - context: . - file: .docker/Dockerfile - build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} - target: ${{ github.job }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - push: ${{ env.PUSH }} - - desktop-nvidia: - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [iron] - runs-on: ubuntu-latest - permissions: - packages: write - contents: read - steps: - - name: Checkout repository - uses: actions/checkout@v4 + type=raw,value=${{ matrix.ROS_DISTRO }}-robot - - name: Log into registry + - name: Set Docker metadata for "desktop" if: env.PUSH == 'true' - uses: docker/login-action@v3.3.0 + id: meta-desktop + uses: docker/metadata-action@v5.5.1 with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + images: ghcr.io/${{ github.repository }} + bake-target: docker-metadata-action-desktop + tags: | + type=raw,value=${{ matrix.ROS_DISTRO }}-desktop - - name: Extract Docker metadata + - name: Set Docker metadata for "desktop-nvidia" if: env.PUSH == 'true' - id: meta + id: meta-desktop-nvidia uses: docker/metadata-action@v5.5.1 with: images: ghcr.io/${{ github.repository }} + bake-target: docker-metadata-action-desktop-nvidia tags: | - type=raw,value=${{ matrix.ROS_DISTRO }}-${{ github.job }} - - - name: Build and push Docker image - uses: docker/build-push-action@v6.7.0 + type=raw,value=${{ matrix.ROS_DISTRO }}-desktop-nvidia + + - if: github.event_name == 'push' + name: Build and push (non PR) + uses: docker/bake-action@v5.5.0 + env: + BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} + BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} with: - context: . - file: .docker/Dockerfile - build-args: ROS_DISTRO=${{ matrix.ROS_DISTRO }} - target: ${{ github.job }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + workdir: .docker + files: | + ./docker-bake.hcl + ${{ steps.meta-ci.outputs.bake-file }} + ${{ steps.meta-robot.outputs.bake-file }} + ${{ steps.meta-desktop.outputs.bake-file }} + ${{ steps.meta-desktop-nvidia.outputs.bake-file }} push: ${{ env.PUSH }} + set: | + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} + *.cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} + + # Pull request builds are not cached; and only built for AMD64 + - if: github.event_name == 'pull_request' + name: Build and push (PR) + uses: docker/bake-action@v5.5.0 + env: + BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} + BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} + with: + workdir: .docker + files: | + ./docker-bake.hcl + set: | + *.platform=linux/amd64 + *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} + *.cache-to= diff --git a/.gitignore b/.gitignore index eb28dd58..fce2ec85 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ mav.parm mav.tlog mav.tlog.raw logs/ + +# Allow overrides in docker-bake +.docker/docker-bake.override.hcl From 25bfbd761dc899d97cd9c284e46eb3097a19f071 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 20:36:00 -0700 Subject: [PATCH 34/72] Fix organization casing in docker workflow (#271) (#272) * Testing lowercase repo name for cache * Remove dev branch from workflow and fix cron schedule * Use lowercase repo for cache-from in PR build as well. --------- Co-authored-by: Aaron Marburg (cherry picked from commit eaa8ec1b3d30273857917192b3fd8e9578e9d157) Co-authored-by: Evan Palmer --- .github/workflows/docker.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 155b92eb..e729e976 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -1,9 +1,8 @@ name: Docker on: - # Disable schedule for preliminary testing - # schedule: - # - cron: "0 17 * * 6" + schedule: + - cron: "0 17 * * 6" push: branches: - iron @@ -114,8 +113,8 @@ jobs: ${{ steps.meta-desktop-nvidia.outputs.bake-file }} push: ${{ env.PUSH }} set: | - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} - *.cache-to=type=registry,mode=max,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} + *.cache-from=type=registry,ref=ghcr.io/${{ steps.lowercase-repo.outputs.repository }}:cache-${{ matrix.ROS_DISTRO }} + *.cache-to=type=registry,mode=max,ref=ghcr.io/${{ steps.lowercase-repo.outputs.repository }}:cache-${{ matrix.ROS_DISTRO }} # Pull request builds are not cached; and only built for AMD64 - if: github.event_name == 'pull_request' @@ -130,5 +129,5 @@ jobs: ./docker-bake.hcl set: | *.platform=linux/amd64 - *.cache-from=type=registry,ref=ghcr.io/${{ github.repository }}:cache-${{ matrix.ROS_DISTRO }} + *.cache-from=type=registry,ref=ghcr.io/${{ steps.lowercase-repo.outputs.repository }}:cache-${{ matrix.ROS_DISTRO }} *.cache-to= From c59462510cf9794bb17fbed45971c4b4075cc7c0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 23 Aug 2024 00:01:57 -0400 Subject: [PATCH 35/72] Add related projects to documentation (#237) (#275) * Added reference to alternative projects * Updated npm dependencies * Removed development branch from documentation build pipeline * Removed unnecessary whitespace * Reverted configuration changes in favor of separate PR (cherry picked from commit cec5e465af76ca852087e2c60bd6a361ac79bcf8) Co-authored-by: Evan Palmer --- docs/docs/overview.mdx | 7 + docs/package-lock.json | 6555 +++++++++++++++++++++++----------------- 2 files changed, 3857 insertions(+), 2705 deletions(-) diff --git a/docs/docs/overview.mdx b/docs/docs/overview.mdx index 48159e90..c6751443 100644 --- a/docs/docs/overview.mdx +++ b/docs/docs/overview.mdx @@ -79,3 +79,10 @@ Several vehicle models have been implemented and tested with Blue in integration of a small manipulator for intervention tasks.
+ +## Alternative projects + +If you find that Blue does not meet your needs, we recommend exploring the following alternative projects: + +- [Orca4](https://github.com/clydemcqueen/orca4) +- [Marine Vehicle Packages (MVP)](https://github.com/uri-ocean-robotics/mvp_readme) diff --git a/docs/package-lock.json b/docs/package-lock.json index a75032d3..0356d2fd 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -35,20 +35,11 @@ "node": ">=18.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "devOptional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@algolia/autocomplete-core": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", "@algolia/autocomplete-shared": "1.9.3" @@ -58,6 +49,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, @@ -69,6 +61,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, @@ -81,153 +74,171 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz", - "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", + "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.23.3" + "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/cache-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz", - "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==" + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", + "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", + "license": "MIT" }, "node_modules/@algolia/cache-in-memory": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz", - "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", + "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.23.3" + "@algolia/cache-common": "4.24.0" } }, "node_modules/@algolia/client-account": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz", - "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", + "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/transporter": "4.23.3" + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-analytics": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz", - "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", + "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz", - "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", + "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz", - "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", + "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/client-search": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz", - "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", + "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "license": "MIT", "dependencies": { - "@algolia/client-common": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/transporter": "4.23.3" + "@algolia/client-common": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/events": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", - "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==", + "license": "MIT" }, "node_modules/@algolia/logger-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz", - "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==" + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", + "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", + "license": "MIT" }, "node_modules/@algolia/logger-console": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz", - "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", + "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", + "license": "MIT", "dependencies": { - "@algolia/logger-common": "4.23.3" + "@algolia/logger-common": "4.24.0" } }, "node_modules/@algolia/recommend": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz", - "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.23.3", - "@algolia/cache-common": "4.23.3", - "@algolia/cache-in-memory": "4.23.3", - "@algolia/client-common": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/logger-console": "4.23.3", - "@algolia/requester-browser-xhr": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/requester-node-http": "4.23.3", - "@algolia/transporter": "4.23.3" + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", + "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz", - "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", + "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.23.3" + "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/requester-common": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz", - "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==" + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", + "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", + "license": "MIT" }, "node_modules/@algolia/requester-node-http": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz", - "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", + "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.23.3" + "@algolia/requester-common": "4.24.0" } }, "node_modules/@algolia/transporter": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz", - "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", + "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", + "license": "MIT", "dependencies": { - "@algolia/cache-common": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/requester-common": "4.23.3" + "@algolia/cache-common": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/requester-common": "4.24.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==", + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -237,11 +248,12 @@ } }, "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -249,28 +261,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", - "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", - "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.1", - "@babel/parser": "^7.24.1", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -289,16 +303,18 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", - "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -308,35 +324,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "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==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -348,23 +368,23 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", - "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", "semver": "^6.3.1" }, "engines": { @@ -378,16 +398,18 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -402,14 +424,16 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -421,69 +445,42 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "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==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -493,32 +490,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -528,13 +528,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -544,94 +545,92 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", - "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -644,6 +643,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -655,6 +655,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -668,6 +669,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -675,12 +677,14 @@ "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==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, "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==", + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -689,6 +693,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -697,6 +702,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -705,9 +711,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -715,12 +725,44 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -730,13 +772,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -746,12 +789,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -764,6 +808,7 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -775,6 +820,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -786,6 +832,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -797,6 +844,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -811,6 +859,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -822,6 +871,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -830,11 +880,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -844,11 +895,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -861,6 +913,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -872,6 +925,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -880,11 +934,12 @@ } }, "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -897,6 +952,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -908,6 +964,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -919,6 +976,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -930,6 +988,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -941,6 +1000,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -952,6 +1012,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -963,6 +1024,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -977,6 +1039,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -988,11 +1051,12 @@ } }, "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==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1005,6 +1069,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1017,11 +1082,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1031,14 +1097,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1048,13 +1115,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1064,11 +1132,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1078,11 +1147,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", - "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1092,12 +1162,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1107,12 +1178,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", - "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1123,17 +1195,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", - "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" }, "engines": { @@ -1147,17 +1218,19 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1167,11 +1240,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", - "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1181,12 +1255,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1196,11 +1271,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1209,12 +1285,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1225,12 +1318,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1240,11 +1334,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1255,12 +1350,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1270,13 +1366,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1286,11 +1383,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1301,11 +1399,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1315,11 +1414,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1330,11 +1430,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1344,12 +1445,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1359,13 +1461,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1375,14 +1478,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1392,12 +1496,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1407,12 +1512,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1422,11 +1528,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1436,11 +1543,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1451,11 +1559,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1466,14 +1575,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", - "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.1" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1483,12 +1593,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1498,11 +1609,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1513,12 +1625,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", - "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1529,11 +1642,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", - "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1543,12 +1657,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1558,13 +1673,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", - "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1575,11 +1691,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1589,11 +1706,12 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz", - "integrity": "sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz", + "integrity": "sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1603,11 +1721,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", - "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1617,15 +1736,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1635,11 +1755,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1649,12 +1770,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", - "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1664,11 +1786,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1679,11 +1802,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1693,12 +1817,13 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", - "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.1", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -1715,16 +1840,18 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1734,12 +1861,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1749,11 +1877,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1763,11 +1892,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1777,11 +1907,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", - "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1791,14 +1922,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz", - "integrity": "sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-typescript": "^7.24.1" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1808,11 +1941,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1822,12 +1956,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1837,12 +1972,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1852,12 +1988,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1867,25 +2004,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz", - "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==", - "dependencies": { - "@babel/compat-data": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1897,59 +2037,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.1", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.1", - "@babel/plugin-transform-classes": "^7.24.1", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.1", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.1", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.1", - "@babel/plugin-transform-parameters": "^7.24.1", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.1", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.1", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.4", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -1963,6 +2104,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1971,6 +2113,7 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1981,16 +2124,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", - "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-react-display-name": "^7.24.1", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2000,15 +2144,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", - "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-syntax-jsx": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-typescript": "^7.24.1" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2020,12 +2165,14 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", - "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2034,9 +2181,10 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz", - "integrity": "sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.25.0.tgz", + "integrity": "sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg==", + "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -2046,31 +2194,30 @@ } }, "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==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", - "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@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.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2082,17 +2229,19 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2102,12 +2251,14 @@ "node_modules/@braintree/sanitize-url": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "license": "MIT" }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -2117,23 +2268,26 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@docsearch/css": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", - "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==" + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", + "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", + "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz", - "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", + "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", + "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.6.0", + "@docsearch/css": "3.6.1", "algoliasearch": "^4.19.1" }, "peerDependencies": { @@ -2158,9 +2312,10 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.2.1.tgz", - "integrity": "sha512-ZeMAqNvy0eBv2dThEeMuNzzuu+4thqMQakhxsgT5s02A8LqRcdkg+rbcnuNqUIpekQ4GRx3+M5nj0ODJhBXo9w==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.5.1.tgz", + "integrity": "sha512-N3+9IbGI2jbkiRc6ZbEnU9dC02nHQXi8ivM1VJldkPQyP7WlyHXS+NDhmL3rwaYOMbGH96X2LcKigCKg7pEEqg==", + "license": "MIT", "dependencies": { "@babel/core": "^7.23.3", "@babel/generator": "^7.23.3", @@ -2172,14 +2327,12 @@ "@babel/runtime": "^7.22.6", "@babel/runtime-corejs3": "^7.22.6", "@babel/traverse": "^7.22.8", - "@docusaurus/cssnano-preset": "3.2.1", - "@docusaurus/logger": "3.2.1", - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", - "@svgr/webpack": "^6.5.1", + "@docusaurus/cssnano-preset": "3.5.1", + "@docusaurus/logger": "3.5.1", + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "autoprefixer": "^10.4.14", "babel-loader": "^9.1.3", "babel-plugin-dynamic-import-node": "^2.3.3", @@ -2193,8 +2346,8 @@ "copy-webpack-plugin": "^11.0.0", "core-js": "^3.31.1", "css-loader": "^6.8.1", - "css-minimizer-webpack-plugin": "^4.2.2", - "cssnano": "^5.1.15", + "css-minimizer-webpack-plugin": "^5.0.1", + "cssnano": "^6.1.2", "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", @@ -2214,7 +2367,7 @@ "prompts": "^2.4.2", "react-dev-utils": "^12.0.1", "react-helmet-async": "^1.3.0", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", @@ -2245,13 +2398,14 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.2.1.tgz", - "integrity": "sha512-wTL9KuSSbMJjKrfu385HZEzAoamUsbKqwscAQByZw4k6Ja/RWpqgVvt/CbAC+aYEH6inLzOt+MjuRwMOrD3VBA==", - "dependencies": { - "cssnano-preset-advanced": "^5.3.10", - "postcss": "^8.4.26", - "postcss-sort-media-queries": "^4.4.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.1.tgz", + "integrity": "sha512-mvtWPLWePlm+4doepxMUT5ynsJQ3CgPtDdbaQh9wm3iAE/7OATBpSgLlfz5N+YtxI5bjIErjbkH8yzISP+S65g==", + "license": "MIT", + "dependencies": { + "cssnano-preset-advanced": "^6.1.2", + "postcss": "^8.4.38", + "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" }, "engines": { @@ -2259,9 +2413,10 @@ } }, "node_modules/@docusaurus/logger": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.2.1.tgz", - "integrity": "sha512-0voOKJCn9RaM3np6soqEfo7SsVvf2C+CDTWhW+H/1AyBhybASpExtDEz+7ECck9TwPzFQ5tt+I3zVugUJbJWDg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.1.tgz", + "integrity": "sha512-B36a88CEHCtxIylAV1HNuiiISpoKBqm0UxA6a/JwtHX++Dxb7LNDSGs8ELBlQsZN0OG2tX3tBsCWyaLPwYorkQ==", + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" @@ -2271,13 +2426,14 @@ } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.2.1.tgz", - "integrity": "sha512-Fs8tXhXKZjNkdGaOy1xSLXSwfjCMT73J3Zfrju2U16uGedRFRjgK0ojpK5tiC7TnunsL3tOFgp1BSMBRflX9gw==", - "dependencies": { - "@docusaurus/logger": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.5.1.tgz", + "integrity": "sha512-D6Ea2dt32xhoqH+1EuHLGDVSX2HLFiR4QpI0GTU46qOu2hb2ChpQENIUZ2inOsdGFunNa0fCnDG3qn7Kdbzq1A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -2309,18 +2465,18 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.2.1.tgz", - "integrity": "sha512-FyViV5TqhL1vsM7eh29nJ5NtbRE6Ra6LP1PDcPvhwPSlA7eiWGRKAn3jWwMUcmjkos5SYY+sr0/feCdbM3eQHQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.1.tgz", + "integrity": "sha512-SKKdA5RnvZr3pvFXkxtfsBVNgflRGa/bN1HbNi+1s0HNVYPuhB9DFC/CrKe2OoOfUXx7F7k2gg0Jg9gJYDy4rA==", + "license": "MIT", "dependencies": { - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/types": "3.2.1", + "@docusaurus/types": "3.5.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", "react-helmet-async": "*", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { "react": "*", @@ -2328,9 +2484,10 @@ } }, "node_modules/@docusaurus/module-type-aliases/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2348,18 +2505,20 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.2.1.tgz", - "integrity": "sha512-lOx0JfhlGZoZu6pEJfeEpSISZR5dQbJGGvb42IP13G5YThNHhG9R9uoWuo4IOimPqBC7sHThdLA3VLevk61Fsw==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/logger": "3.2.1", - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", - "cheerio": "^1.0.0-rc.12", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.1.tgz", + "integrity": "sha512-aPmrMV5cDa2QUZ+kPVJID5O6r+ZuLFtHEyneVl9AgryL/9ECudhtpTUdmdnmapnWfUzSSgqYRZ1JtydGLheSzw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/logger": "3.5.1", + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", + "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", @@ -2374,14 +2533,16 @@ "node": ">=18.0" }, "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/plugin-content-blog/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2399,18 +2560,20 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.2.1.tgz", - "integrity": "sha512-GHe5b/lCskAR8QVbfWAfPAApvRZgqk7FN3sOHgjCtjzQACZxkHmq6QqyqZ8Jp45V7lVck4wt2Xw2IzBJ7Cz3bA==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/logger": "3.2.1", - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/module-type-aliases": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.1.tgz", + "integrity": "sha512-DX+I3eVyXak9KqYXg8dgptomqz/O4twjydpLJT8ZSe9lsZ0Pa1ZNPwmftWYn160O3o6GGeUYzr13Y1Got3iXRQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/logger": "3.5.1", + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/module-type-aliases": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", @@ -2429,9 +2592,10 @@ } }, "node_modules/@docusaurus/plugin-content-docs/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2449,15 +2613,16 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.2.1.tgz", - "integrity": "sha512-TOqVfMVTAHqWNEGM94Drz+PUpHDbwFy6ucHFgyTx9zJY7wPNSG5EN+rd/mU7OvAi26qpOn2o9xTdUmb28QLjEQ==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.1.tgz", + "integrity": "sha512-V2PDVrO2vHYJ7uhrEHpfzg3TTuwfrgNC0pGhM5gXaMfCbdhKm7iwV0huGLcyIX5Peyh7EMP2e8GFccUzWFMYOg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" @@ -2471,9 +2636,10 @@ } }, "node_modules/@docusaurus/plugin-content-pages/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2491,13 +2657,14 @@ } }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.2.1.tgz", - "integrity": "sha512-AMKq8NuUKf2sRpN1m/sIbqbRbnmk+rSA+8mNU1LNxEl9BW9F/Gng8m9HKlzeyMPrf5XidzS1jqkuTLDJ6KIrFw==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.5.1.tgz", + "integrity": "sha512-teFZamoECDiELwM1cx5OXd6dBpRtHarc7kWGL1iQozAkYcobZmqOWykBl4joMjSWUbJlx5v9/CVciykWbFNXjA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", "fs-extra": "^11.1.1", "react-json-view-lite": "^1.2.0", "tslib": "^2.6.0" @@ -2511,9 +2678,10 @@ } }, "node_modules/@docusaurus/plugin-debug/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2531,13 +2699,14 @@ } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.2.1.tgz", - "integrity": "sha512-/rJ+9u+Px0eTCiF4TNcNtj3kHf8cp6K1HCwOTdbsSlz6Xn21syZYcy+f1VM9wF6HrvUkXUcbM5TDCvg2IRL6bQ==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.1.tgz", + "integrity": "sha512-5FUiYZQWPXTPucMzaOOM25R7IwIPvMKbiB0SNVGtxVsGyFyo5i5fzrkBQl4mkZd7uqmslEPzwYbC28ZeFnrxjg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "tslib": "^2.6.0" }, "engines": { @@ -2549,9 +2718,10 @@ } }, "node_modules/@docusaurus/plugin-google-analytics/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2569,13 +2739,14 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.2.1.tgz", - "integrity": "sha512-XtuJnlMvYfppeVdUyKiDIJAa/gTJKCQU92z8CLZZ9ibJdgVjFOLS10s0hIC0eL5z0U2u2loJz2rZ63HOkNHbBA==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.1.tgz", + "integrity": "sha512-jxBtLBPMv9BJXPXrwJSs69qYcHP/evT1NkVza2yOai7wi5r3E1tVm0bAxdciWitpM0dgS/HDa30qXE7vA1NRDg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, @@ -2588,9 +2759,10 @@ } }, "node_modules/@docusaurus/plugin-google-gtag/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2608,13 +2780,14 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.2.1.tgz", - "integrity": "sha512-wiS/kE0Ny5pnjTxVCs8ljRnkL1RVMj59t6jmSsgEX7piDOoaXSMIUaoIt9ogS/v132uO0xEsxHstkRUZHQyPcQ==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.1.tgz", + "integrity": "sha512-W5WsKoRmb3lDmg2IBfmKsZDlQAkEx/dXuwr4bj7sSQdM8qd829Rsc4Gp5RddUrQdUz/W3Iocn7LayRM5aacJlA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "tslib": "^2.6.0" }, "engines": { @@ -2626,9 +2799,10 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2646,16 +2820,17 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.2.1.tgz", - "integrity": "sha512-uWZ7AxzdeaQSTCwD2yZtOiEm9zyKU+wqCmi/Sf25kQQqqFSBZUStXfaQ8OHP9cecnw893ZpZ811rPhB/wfujJw==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/logger": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.1.tgz", + "integrity": "sha512-VXMGJM6uy4jx6HUsFs+kn8MujWGjN7S7p7PYUYSf1bmcFNlf+Qg5vDZtwBElHa2hapeH2AIj2b3QmTgmWeyOHw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/logger": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" @@ -2669,9 +2844,10 @@ } }, "node_modules/@docusaurus/plugin-sitemap/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2689,23 +2865,24 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.2.1.tgz", - "integrity": "sha512-E3OHSmttpEBcSMhfPBq3EJMBxZBM01W1rnaCUTXy9EHvkmB5AwgTfW1PwGAybPAX579ntE03R+2zmXdizWfKnQ==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/plugin-content-blog": "3.2.1", - "@docusaurus/plugin-content-docs": "3.2.1", - "@docusaurus/plugin-content-pages": "3.2.1", - "@docusaurus/plugin-debug": "3.2.1", - "@docusaurus/plugin-google-analytics": "3.2.1", - "@docusaurus/plugin-google-gtag": "3.2.1", - "@docusaurus/plugin-google-tag-manager": "3.2.1", - "@docusaurus/plugin-sitemap": "3.2.1", - "@docusaurus/theme-classic": "3.2.1", - "@docusaurus/theme-common": "3.2.1", - "@docusaurus/theme-search-algolia": "3.2.1", - "@docusaurus/types": "3.2.1" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.5.1.tgz", + "integrity": "sha512-afDMZoNYxdloJ7qJJbd3Lmv9uYXKKsEAOtvnvu2945kqe1LUGIIwOo1nMAKgB9y21E5FEvWKnla0MvkMraumZA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/plugin-content-blog": "3.5.1", + "@docusaurus/plugin-content-docs": "3.5.1", + "@docusaurus/plugin-content-pages": "3.5.1", + "@docusaurus/plugin-debug": "3.5.1", + "@docusaurus/plugin-google-analytics": "3.5.1", + "@docusaurus/plugin-google-gtag": "3.5.1", + "@docusaurus/plugin-google-tag-manager": "3.5.1", + "@docusaurus/plugin-sitemap": "3.5.1", + "@docusaurus/theme-classic": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/theme-search-algolia": "3.5.1", + "@docusaurus/types": "3.5.1" }, "engines": { "node": ">=18.0" @@ -2716,9 +2893,10 @@ } }, "node_modules/@docusaurus/preset-classic/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2735,39 +2913,28 @@ "react-dom": "^18.0.0" } }, - "node_modules/@docusaurus/react-loadable": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": "*" - } - }, "node_modules/@docusaurus/theme-classic": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.2.1.tgz", - "integrity": "sha512-+vSbnQyoWjc6vRZi4vJO2dBU02wqzynsai15KK+FANZudrYaBHtkbLZAQhgmxzBGVpxzi87gRohlMm+5D8f4tA==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/module-type-aliases": "3.2.1", - "@docusaurus/plugin-content-blog": "3.2.1", - "@docusaurus/plugin-content-docs": "3.2.1", - "@docusaurus/plugin-content-pages": "3.2.1", - "@docusaurus/theme-common": "3.2.1", - "@docusaurus/theme-translations": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.5.1.tgz", + "integrity": "sha512-k8rLMwHuTc3SqYekc20s1uZHjabt9yi6mt1RUjbkwmjsJlAB6zrtYvsB+ZxrhY5yeUD8DZm3h0qVvKbClHVCCA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/module-type-aliases": "3.5.1", + "@docusaurus/plugin-content-blog": "3.5.1", + "@docusaurus/plugin-content-docs": "3.5.1", + "@docusaurus/plugin-content-pages": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/theme-translations": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", - "infima": "0.2.0-alpha.43", + "infima": "0.2.0-alpha.44", "lodash": "^4.17.21", "nprogress": "^0.2.0", "postcss": "^8.4.26", @@ -2787,9 +2954,10 @@ } }, "node_modules/@docusaurus/theme-classic/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2807,17 +2975,15 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.2.1.tgz", - "integrity": "sha512-d+adiD7L9xv6EvfaAwUqdKf4orsM3jqgeqAM+HAjgL/Ux0GkVVnfKr+tsoe+4ow4rHe6NUt+nkkW8/K8dKdilA==", - "dependencies": { - "@docusaurus/mdx-loader": "3.2.1", - "@docusaurus/module-type-aliases": "3.2.1", - "@docusaurus/plugin-content-blog": "3.2.1", - "@docusaurus/plugin-content-docs": "3.2.1", - "@docusaurus/plugin-content-pages": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.5.1.tgz", + "integrity": "sha512-r34YDzSjggX+B+8W+mG2dVh1ps4JJRCiyq8E1LnZIKLU6F89I2KpAZpPQ2/njKsKhBRLtQ1x92HVkD0FZ3xjrg==", + "license": "MIT", + "dependencies": { + "@docusaurus/mdx-loader": "3.5.1", + "@docusaurus/module-type-aliases": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2831,20 +2997,22 @@ "node": ">=18.0" }, "peerDependencies": { + "@docusaurus/plugin-content-docs": "*", "react": "^18.0.0", "react-dom": "^18.0.0" } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.2.1.tgz", - "integrity": "sha512-l1FzUPgDUor/25XeJDeO22dttmzB0QnmAbF2qKjDz3ENa9vlD5rd5r0NrItZIe8y7qoa+OOxkl5lLBKBxBVbLg==", - "dependencies": { - "@docusaurus/core": "3.2.1", - "@docusaurus/module-type-aliases": "3.2.1", - "@docusaurus/theme-common": "3.2.1", - "@docusaurus/types": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.5.1.tgz", + "integrity": "sha512-yCYNMuRVcAUsn2Nods+SjYWsifAO76JXgsMHzb6ZFaVNfvXBWxX77ZdotsLAsA43apnPC4BMQ31Ux41dT155vg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.5.1", + "@docusaurus/module-type-aliases": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/types": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "mermaid": "^10.4.0", "tslib": "^2.6.0" }, @@ -2857,9 +3025,10 @@ } }, "node_modules/@docusaurus/theme-mermaid/node_modules/@docusaurus/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.1.tgz", - "integrity": "sha512-n/toxBzL2oxTtRTOFiGKsHypzn/Pm+sXyw+VSk1UbqbXQiHOwHwts55bpKwbcUgA530Is6kix3ELiFOv9GAMfw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.1.tgz", + "integrity": "sha512-IXTGQBoXAGFliGF5Cn3F+gSGskgzAL8+4y6dDY1gcePA0r8WngHj8oovS1YPv+b9JOff32nv8YGGZITHOMXJsA==", + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2877,18 +3046,19 @@ } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.2.1.tgz", - "integrity": "sha512-bzhCrpyXBXzeydNUH83II2akvFEGfhsNTPPWsk5N7e+odgQCQwoHhcF+2qILbQXjaoZ6B3c48hrvkyCpeyqGHw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.1.tgz", + "integrity": "sha512-IcUbgh9YcedANhpa0Q3+67WUKY8G7YkN/pZxVBEFjq3d2bniRKktPv41Nh/+AtGLSNJIcspZwEAs/r/mKSZGug==", + "license": "MIT", "dependencies": { "@docsearch/react": "^3.5.2", - "@docusaurus/core": "3.2.1", - "@docusaurus/logger": "3.2.1", - "@docusaurus/plugin-content-docs": "3.2.1", - "@docusaurus/theme-common": "3.2.1", - "@docusaurus/theme-translations": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-validation": "3.2.1", + "@docusaurus/core": "3.5.1", + "@docusaurus/logger": "3.5.1", + "@docusaurus/plugin-content-docs": "3.5.1", + "@docusaurus/theme-common": "3.5.1", + "@docusaurus/theme-translations": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-validation": "3.5.1", "algoliasearch": "^4.18.0", "algoliasearch-helper": "^3.13.3", "clsx": "^2.0.0", @@ -2907,9 +3077,10 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.2.1.tgz", - "integrity": "sha512-jAUMkIkFfY+OAhJhv6mV8zlwY6J4AQxJPTgLdR2l+Otof9+QdJjHNh/ifVEu9q0lp3oSPlJj9l05AaP7Ref+cg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.5.1.tgz", + "integrity": "sha512-fyzQOWrTm0+ZpTlS0/xHsIK4f+LA4qVFrq8rCzIHjxZRip/noYUOwF64lA95vcuw6qnOVBoNE/LyfbBvExnpcw==", + "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" @@ -2923,6 +3094,7 @@ "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.2.0.tgz", "integrity": "sha512-uG3FfTkkkbZIPPNYx6xRfZHKeGyRd/inIT1cqvYt1FobFLd+7WhRXrSBqwJ9JajJjEAjNioRMVFgGofGf/Wdww==", "devOptional": true, + "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", @@ -2940,13 +3112,14 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.2.1.tgz", - "integrity": "sha512-DPkIS/EPc+pGAV798PUXgNzJFM3HJouoQXgr0KDZuJVz1EkWbDLOcQwLIz8Qx7liI9ddfkN/TXTRQdsTPZNakw==", - "dependencies": { - "@docusaurus/logger": "3.2.1", - "@docusaurus/utils-common": "3.2.1", - "@svgr/webpack": "^6.5.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.5.1.tgz", + "integrity": "sha512-/4QAvXyiQviz2FQ4ct5l1ckvDihIdjS8FsOExC0T+Y1UD38jgPbjTwRJXsDaRsDRCCrDAtXvlonxXw2kixcnXw==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", @@ -2962,6 +3135,7 @@ "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", + "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { @@ -2977,9 +3151,10 @@ } }, "node_modules/@docusaurus/utils-common": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.2.1.tgz", - "integrity": "sha512-N5vadULnRLiqX2QfTjVEU3u5vo6RG2EZTdyXvJdzDOdrLCGIZAfnf/VkssinFZ922sVfaFfQ4FnStdhn5TWdVg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.5.1.tgz", + "integrity": "sha512-374n6/IW34gHR65JMMN33XLFogTCsrGVPQDVbv2vG96EYHvYzE/plfcGV7xSbXB8yS1YHsxVfvNgVUGi973bfQ==", + "license": "MIT", "dependencies": { "tslib": "^2.6.0" }, @@ -2996,15 +3171,18 @@ } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.2.1.tgz", - "integrity": "sha512-+x7IR9hNMXi62L1YAglwd0s95fR7+EtirjTxSN4kahYRWGqOi3jlQl1EV0az/yTEvKbxVvOPcdYicGu9dk4LJw==", - "dependencies": { - "@docusaurus/logger": "3.2.1", - "@docusaurus/utils": "3.2.1", - "@docusaurus/utils-common": "3.2.1", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.5.1.tgz", + "integrity": "sha512-LZdQnqVVLStgTCn0rfvf4wuOQkjPbGtLXJIQ449em1wJeSFO7lfmn5VGUNLt+xKHvIPfN272EHG8BuvijCI0+A==", + "license": "MIT", + "dependencies": { + "@docusaurus/logger": "3.5.1", + "@docusaurus/utils": "3.5.1", + "@docusaurus/utils-common": "3.5.1", + "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", + "lodash": "^4.17.21", "tslib": "^2.6.0" }, "engines": { @@ -3016,6 +3194,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" @@ -3027,34 +3206,23 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "devOptional": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "devOptional": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", - "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3073,27 +3241,12 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3101,17 +3254,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/@eslint/js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.0.0.tgz", - "integrity": "sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -3119,12 +3267,14 @@ "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -3133,7 +3283,9 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "devOptional": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -3149,6 +3301,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "devOptional": true, + "license": "Apache-2.0", "peer": true, "engines": { "node": ">=12.22" @@ -3162,13 +3315,16 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "devOptional": true, + "license": "BSD-3-Clause", "peer": 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==", + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3180,6 +3336,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3196,6 +3353,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3209,6 +3367,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3217,6 +3376,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3225,20 +3385,23 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "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==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3247,12 +3410,14 @@ "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" }, "node_modules/@mdx-js/mdx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -3287,6 +3452,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "license": "MIT", "dependencies": { "@types/mdx": "^2.0.0" }, @@ -3303,6 +3469,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3315,6 +3482,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -3323,6 +3491,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3335,6 +3504,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "license": "MIT", "engines": { "node": ">=12.22.0" } @@ -3343,6 +3513,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -3353,12 +3524,14 @@ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -3371,12 +3544,14 @@ "node_modules/@polka/url": { "version": "1.0.0-next.25", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", - "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "license": "MIT" }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -3384,22 +3559,26 @@ "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "license": "BSD-3-Clause" }, "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==" + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3411,6 +3590,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@slorber/remark-comment/-/remark-comment-1.0.0.tgz", "integrity": "sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==", + "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.1.0", @@ -3418,11 +3598,12 @@ } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", - "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3436,6 +3617,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "license": "MIT", "engines": { "node": ">=14" }, @@ -3451,6 +3633,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "license": "MIT", "engines": { "node": ">=14" }, @@ -3463,11 +3646,12 @@ } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", - "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3478,11 +3662,12 @@ } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", - "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3493,11 +3678,12 @@ } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", - "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3508,11 +3694,12 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", - "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3523,9 +3710,10 @@ } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", - "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -3538,21 +3726,22 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", - "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3563,18 +3752,19 @@ } }, "node_modules/@svgr/core": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", - "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3582,15 +3772,16 @@ } }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", - "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.21.3", "entities": "^4.4.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3598,37 +3789,39 @@ } }, "node_modules/@svgr/plugin-jsx": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", - "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@svgr/core": "^6.0.0" + "@svgr/core": "*" } }, "node_modules/@svgr/plugin-svgo": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", - "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3639,21 +3832,22 @@ } }, "node_modules/@svgr/webpack": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", - "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3664,6 +3858,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -3675,6 +3870,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", "engines": { "node": ">=10.13.0" } @@ -3683,6 +3879,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -3691,6 +3888,7 @@ "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -3700,6 +3898,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3708,6 +3907,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3716,6 +3916,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -3725,6 +3926,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", "dependencies": { "@types/d3-time": "*" } @@ -3732,25 +3934,29 @@ "node_modules/@types/d3-scale-chromatic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "license": "MIT" }, "node_modules/@types/d3-time": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "license": "MIT" }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/eslint": { - "version": "8.56.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", - "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -3760,6 +3966,7 @@ "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -3768,12 +3975,14 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -3782,6 +3991,7 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -3790,9 +4000,10 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.43", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", - "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3803,12 +4014,14 @@ "node_modules/@types/gtag.js": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", - "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==" + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -3816,27 +4029,32 @@ "node_modules/@types/history": { "version": "4.7.11", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "license": "MIT" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3844,12 +4062,14 @@ "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==" + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -3858,6 +4078,7 @@ "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==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -3865,49 +4086,57 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdx": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.12.tgz", - "integrity": "sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==" + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", - "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", + "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.13.0" } }, "node_modules/@types/node-forge": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3915,32 +4144,38 @@ "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" }, "node_modules/@types/prismjs": { - "version": "1.26.3", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", - "integrity": "sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==" + "version": "1.26.4", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz", + "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==", + "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", - "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" }, "node_modules/@types/react": { - "version": "18.2.73", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.73.tgz", - "integrity": "sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==", + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3950,6 +4185,7 @@ "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" @@ -3959,6 +4195,7 @@ "version": "5.0.11", "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz", "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==", + "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -3969,6 +4206,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -3978,12 +4216,14 @@ "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -3992,6 +4232,7 @@ "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -4001,24 +4242,27 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -4026,20 +4270,23 @@ "node_modules/@types/unist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "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==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -4047,17 +4294,20 @@ "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==" + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "ISC" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -4066,22 +4316,26 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4091,12 +4345,14 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4108,6 +4364,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -4116,6 +4373,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -4123,12 +4381,14 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4144,6 +4404,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -4156,6 +4417,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -4167,6 +4429,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -4180,6 +4443,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -4188,17 +4452,20 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -4211,6 +4478,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4219,6 +4487,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -4227,9 +4496,10 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -4237,10 +4507,11 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -4249,14 +4520,19 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "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==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -4265,6 +4541,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -4273,6 +4550,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4282,13 +4560,14 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { @@ -4300,6 +4579,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4312,43 +4592,65 @@ } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { - "ajv": "^8.8.2" + "ajv": "^6.9.1" } }, "node_modules/algoliasearch": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz", - "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.23.3", - "@algolia/cache-common": "4.23.3", - "@algolia/cache-in-memory": "4.23.3", - "@algolia/client-account": "4.23.3", - "@algolia/client-analytics": "4.23.3", - "@algolia/client-common": "4.23.3", - "@algolia/client-personalization": "4.23.3", - "@algolia/client-search": "4.23.3", - "@algolia/logger-common": "4.23.3", - "@algolia/logger-console": "4.23.3", - "@algolia/recommend": "4.23.3", - "@algolia/requester-browser-xhr": "4.23.3", - "@algolia/requester-common": "4.23.3", - "@algolia/requester-node-http": "4.23.3", - "@algolia/transporter": "4.23.3" + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", + "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", + "license": "MIT", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.24.0", + "@algolia/cache-common": "4.24.0", + "@algolia/cache-in-memory": "4.24.0", + "@algolia/client-account": "4.24.0", + "@algolia/client-analytics": "4.24.0", + "@algolia/client-common": "4.24.0", + "@algolia/client-personalization": "4.24.0", + "@algolia/client-search": "4.24.0", + "@algolia/logger-common": "4.24.0", + "@algolia/logger-console": "4.24.0", + "@algolia/recommend": "4.24.0", + "@algolia/requester-browser-xhr": "4.24.0", + "@algolia/requester-common": "4.24.0", + "@algolia/requester-node-http": "4.24.0", + "@algolia/transporter": "4.24.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.17.0.tgz", - "integrity": "sha512-R5422OiQjvjlK3VdpNQ/Qk7KsTIGeM5ACm8civGifOVWdRRV/3SgXuKmeNxe94Dz6fwj/IgpVmXbHutU4mHubg==", + "version": "3.22.3", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.3.tgz", + "integrity": "sha512-2eoEz8mG4KHE+DzfrBTrCmDPxVXv7aZZWPojAJFtARpxxMO6lkos1dJ+XDCXdPvq7q3tpYWRi6xXmVQikejtpA==", + "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" }, @@ -4360,6 +4662,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } @@ -4367,12 +4670,14 @@ "node_modules/ansi-align/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==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/ansi-align/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==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4389,6 +4694,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -4397,6 +4703,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -4405,6 +4712,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4419,6 +4727,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4430,20 +4739,23 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/array-buffer-byte-length": { @@ -4451,6 +4763,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -4465,13 +4778,15 @@ "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4491,6 +4806,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", "engines": { "node": ">=8" } @@ -4500,6 +4816,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4520,6 +4837,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -4540,6 +4858,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4558,6 +4877,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4571,29 +4891,21 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { @@ -4601,6 +4913,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -4622,12 +4935,14 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/astring": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "license": "MIT", "bin": { "astring": "bin/astring" } @@ -4636,14 +4951,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -4658,12 +4974,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4681,6 +4998,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -4692,27 +5010,30 @@ } }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -4729,17 +5050,19 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "license": "MIT", "dependencies": { "object.assign": "^4.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -4750,28 +5073,31 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4781,6 +5107,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4789,17 +5116,20 @@ "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==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", "engines": { "node": "*" } @@ -4808,6 +5138,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -4819,6 +5150,7 @@ "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -4842,6 +5174,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4850,19 +5183,34 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -4871,12 +5219,14 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/boxen": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^6.2.0", @@ -4898,6 +5248,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4907,6 +5258,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -4915,9 +5267,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -4932,11 +5284,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4948,12 +5301,14 @@ "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==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4962,6 +5317,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "license": "MIT", "engines": { "node": ">=14.16" } @@ -4970,6 +5326,7 @@ "version": "10.2.14", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -4983,21 +5340,11 @@ "node": ">=14.16" } }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -5016,6 +5363,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5024,6 +5372,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -5033,6 +5382,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5044,6 +5394,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -5052,9 +5403,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001603", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001603.tgz", - "integrity": "sha512-iL2iSS0eDILMb9n5yKQoTBim9jMZ0Yrk8g0N9K7UzYyWnfIKzXBZD5ngpM37ZcL/cv0Mli8XtVMRYMQAfFpi5Q==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "funding": [ { "type": "opencollective", @@ -5068,12 +5419,14 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5083,6 +5436,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5098,6 +5452,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", "engines": { "node": ">=10" } @@ -5106,6 +5461,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5115,6 +5471,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5124,6 +5481,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5133,6 +5491,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5142,6 +5501,7 @@ "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", @@ -5162,6 +5522,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -5178,6 +5539,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5198,9 +5560,10 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", "engines": { "node": ">=6.0" } @@ -5215,6 +5578,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -5223,6 +5587,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -5234,6 +5599,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5242,6 +5608,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5250,6 +5617,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -5258,9 +5626,10 @@ } }, "node_modules/cli-table3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", - "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -5274,12 +5643,14 @@ "node_modules/cli-table3/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==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/cli-table3/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5293,6 +5664,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -5302,21 +5674,11 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5325,6 +5687,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5334,6 +5697,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -5344,22 +5708,26 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" }, "node_modules/combine-promises": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==", + "license": "MIT", "engines": { "node": ">=10" } @@ -5368,6 +5736,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5377,6 +5746,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", "engines": { "node": ">= 6" } @@ -5384,12 +5754,14 @@ "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "license": "ISC" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -5398,9 +5770,10 @@ } }, "node_modules/compressible/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==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5409,6 +5782,7 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -5426,6 +5800,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5433,22 +5808,26 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -5458,6 +5837,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", @@ -5476,12 +5856,14 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -5489,12 +5871,14 @@ "node_modules/consola": { "version": "2.15.3", "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5503,6 +5887,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5510,12 +5895,14 @@ "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==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5523,12 +5910,14 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" }, "node_modules/copy-text-to-clipboard": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -5540,6 +5929,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "license": "MIT", "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -5563,6 +5953,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5574,6 +5965,7 @@ "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -5592,6 +5984,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -5600,21 +5993,23 @@ } }, "node_modules/core-js": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz", - "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz", + "integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", + "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -5622,10 +6017,11 @@ } }, "node_modules/core-js-pure": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.36.1.tgz", - "integrity": "sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.0.tgz", + "integrity": "sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -5634,35 +6030,49 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "dependencies": { "layout-base": "^1.0.0" } }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5676,6 +6086,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -5690,6 +6101,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5698,26 +6110,28 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "license": "ISC", "engines": { - "node": "^10 || ^12 || >=14" + "node": "^14 || ^16 || >=18" }, "peerDependencies": { "postcss": "^8.0.9" } }, "node_modules/css-loader": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", - "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" @@ -5743,16 +6157,17 @@ } }, "node_modules/css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "license": "MIT", "dependencies": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "engines": { "node": ">= 14.15.0" @@ -5785,18 +6200,11 @@ } } }, - "node_modules/css-minimizer-webpack-plugin/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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5809,29 +6217,23 @@ } }, "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-tree/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==", - "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -5843,6 +6245,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -5851,117 +6254,146 @@ } }, "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "license": "MIT", "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/cssnano" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-advanced": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", - "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", "dependencies": { - "autoprefixer": "^10.4.12", - "cssnano-preset-default": "^5.2.14", - "postcss-discard-unused": "^5.1.0", - "postcss-merge-idents": "^5.1.1", - "postcss-reduce-idents": "^5.2.0", - "postcss-zindex": "^5.1.0" + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", "dependencies": { - "css-tree": "^1.1.2" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/cytoscape": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.0.tgz", - "integrity": "sha512-ADqhlrCKhhQF8s/s3hTpvVAIyWwsfgFI/hD2vhAXc2ndncJFVZaq3/uBkDIhf4RrNwPw93vUarW36x6rFbUk0Q==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz", + "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==", + "license": "MIT", "engines": { "node": ">=0.10" } @@ -5970,6 +6402,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { "cose-base": "^1.0.0" }, @@ -5981,6 +6414,7 @@ "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -6021,6 +6455,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -6032,6 +6467,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6040,6 +6476,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -6055,6 +6492,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -6066,6 +6504,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6074,6 +6513,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -6085,6 +6525,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -6096,6 +6537,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6104,6 +6546,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -6116,6 +6559,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -6140,25 +6584,16 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, - "node_modules/d3-dsv/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==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -6167,6 +6602,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -6178,6 +6614,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -6191,6 +6628,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6199,6 +6637,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -6210,6 +6649,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6218,6 +6658,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -6229,6 +6670,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6237,6 +6679,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6245,6 +6688,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6253,6 +6697,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6261,6 +6706,7 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" @@ -6270,6 +6716,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" } @@ -6277,12 +6724,14 @@ "node_modules/d3-sankey/node_modules/d3-path": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } @@ -6290,12 +6739,14 @@ "node_modules/d3-sankey/node_modules/internmap": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -6311,6 +6762,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -6323,6 +6775,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6331,6 +6784,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -6342,6 +6796,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -6353,6 +6808,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -6364,6 +6820,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -6372,6 +6829,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -6390,6 +6848,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -6405,6 +6864,7 @@ "version": "7.0.10", "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "license": "MIT", "dependencies": { "d3": "^7.8.2", "lodash-es": "^4.17.21" @@ -6414,13 +6874,15 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -6438,6 +6900,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -6455,6 +6918,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -6468,19 +6932,22 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", + "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==", + "license": "MIT" }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -6497,6 +6964,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, @@ -6509,6 +6977,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -6523,6 +6992,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6530,10 +7000,44 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -6543,12 +7047,14 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "devOptional": true, + "license": "MIT", "peer": 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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6557,6 +7063,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -6568,6 +7075,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", "engines": { "node": ">=10" } @@ -6576,6 +7084,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6592,6 +7101,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6600,6 +7110,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -6616,6 +7127,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "license": "MIT", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -6637,6 +7149,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } @@ -6645,6 +7158,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6653,6 +7167,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6661,6 +7176,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -6669,12 +7185,14 @@ "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" }, "node_modules/detect-port": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", - "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "4" @@ -6682,12 +7200,16 @@ "bin": { "detect": "bin/detect-port.js", "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" @@ -6704,6 +7226,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6711,12 +7234,14 @@ "node_modules/detect-port-alt/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -6729,6 +7254,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -6737,6 +7263,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -6748,6 +7275,7 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -6760,6 +7288,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "devOptional": true, + "license": "Apache-2.0", "peer": true, "dependencies": { "esutils": "^2.0.2" @@ -6772,6 +7301,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.5.tgz", "integrity": "sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==", + "license": "MIT", "dependencies": { "sass-loader": "^10.1.1" }, @@ -6784,6 +7314,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -6792,6 +7323,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -6810,12 +7342,14 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -6827,14 +7361,16 @@ } }, "node_modules/dompurify": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.0.tgz", - "integrity": "sha512-yoU4rhgPKCo+p5UrWWWNKiIq+ToGqmVVhk0PmMYBK4kRsR3/qhemNFL8f6CFmBd4gMwm3F4T7HBoydP5uY07fA==" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -6848,6 +7384,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -6857,6 +7394,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -6871,6 +7409,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6878,50 +7417,59 @@ "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.723", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.723.tgz", - "integrity": "sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", + "integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==", + "license": "ISC" }, "node_modules/elkjs": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", - "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==" + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", + "license": "EPL-2.0" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/emojilib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/emoticon": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.0.1.tgz", - "integrity": "sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-4.1.0.tgz", + "integrity": "sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6931,14 +7479,16 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6951,6 +7501,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6962,6 +7513,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -6971,6 +7523,7 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -7030,6 +7583,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -7041,19 +7595,42 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", - "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", @@ -7071,15 +7648,17 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -7092,6 +7671,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -7106,6 +7686,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -7115,6 +7696,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -7131,6 +7713,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -7139,6 +7722,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -7149,12 +7733,14 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7167,6 +7753,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -7223,6 +7810,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-airbnb-base": "^15.0.0", "object.assign": "^4.1.2", @@ -7244,6 +7832,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, + "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -7263,6 +7852,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -7272,6 +7862,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -7283,6 +7874,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -7292,6 +7884,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -7309,6 +7902,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -7318,6 +7912,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -7349,6 +7944,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -7358,6 +7954,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7370,32 +7967,34 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" }, "engines": { "node": ">=4.0" @@ -7405,42 +8004,44 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", - "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7453,6 +8054,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7460,20 +8062,12 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -7491,29 +8085,38 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "devOptional": true, + "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", - "dev": true, + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -7524,6 +8127,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "ajv": "^6.12.4", @@ -7548,37 +8152,23 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "devOptional": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "devOptional": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -7587,75 +8177,18 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "devOptional": true, + "license": "ISC", "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "is-glob": "^4.0.3" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "devOptional": true, - "peer": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "devOptional": true, - "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "devOptional": true, - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "engines": { + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { @@ -7663,6 +8196,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -7674,89 +8208,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true, - "peer": true - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "devOptional": true, - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, - "peer": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "devOptional": true, - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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==", - "devOptional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "devOptional": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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==", - "devOptional": true, + "license": "(MIT OR CC0-1.0)", "peer": true, "engines": { "node": ">=10" @@ -7766,12 +8223,13 @@ } }, "node_modules/espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.0.0" }, @@ -7782,10 +8240,24 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -7795,10 +8267,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "devOptional": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "estraverse": "^5.1.0" @@ -7807,20 +8280,11 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -7828,18 +8292,11 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -7848,6 +8305,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -7860,6 +8318,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -7875,6 +8334,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -7884,6 +8344,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -7895,15 +8356,12 @@ } }, "node_modules/estree-util-value-to-estree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz", - "integrity": "sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.2.tgz", + "integrity": "sha512-S0gW2+XZkmsx00tU2uJ4L9hUT7IFabbml9pHh2WQqFmAbxit++YGZne0sKJbNwkj9Wvg9E4uqWl4nCIFQMmfag==", + "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "is-plain-obj": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" + "@types/estree": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/remcohaszing" @@ -7913,6 +8371,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" @@ -7926,6 +8385,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -7934,6 +8394,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -7942,6 +8403,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz", "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==", + "license": "MIT", "engines": { "node": ">=6.0.0" }, @@ -7953,6 +8415,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7972,12 +8435,14 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -7986,6 +8451,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -8008,6 +8474,7 @@ "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -8049,6 +8516,7 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -8060,6 +8528,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8067,17 +8536,20 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "license": "MIT" }, "node_modules/express/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8085,12 +8557,14 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -8101,12 +8575,14 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8121,19 +8597,28 @@ "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==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "devOptional": true, + "license": "MIT", "peer": true }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "license": "MIT" + }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "license": "MIT", "dependencies": { "punycode": "^1.3.2" } @@ -8142,6 +8627,7 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -8150,6 +8636,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "license": "MIT", "dependencies": { "format": "^0.2.0" }, @@ -8162,6 +8649,7 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -8173,6 +8661,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", "dependencies": { "xml-js": "^1.6.11" }, @@ -8185,6 +8674,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "flat-cache": "^3.0.4" @@ -8197,6 +8687,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -8212,38 +8703,11 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/file-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/file-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/file-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -8261,6 +8725,7 @@ "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } @@ -8269,6 +8734,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -8280,6 +8746,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -8297,6 +8764,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8304,12 +8772,14 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -8322,15 +8792,16 @@ } }, "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8340,6 +8811,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -8349,6 +8821,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "flatted": "^3.2.9", @@ -8364,6 +8837,7 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "devOptional": true, + "license": "ISC", "peer": true }, "node_modules/follow-redirects": { @@ -8376,6 +8850,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -8390,6 +8865,7 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -8398,6 +8874,7 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.8.3", "@types/json-schema": "^7.0.5", @@ -8432,33 +8909,11 @@ } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -8474,6 +8929,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -8484,15 +8940,11 @@ "node": ">=10" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", @@ -8510,6 +8962,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -8518,6 +8971,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "license": "MIT", "engines": { "node": ">= 14.17" } @@ -8534,6 +8988,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8542,6 +8997,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { "node": "*" }, @@ -8554,6 +9010,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8562,6 +9019,7 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -8572,20 +9030,23 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -8598,6 +9059,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8607,6 +9069,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8625,6 +9088,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8633,6 +9097,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -8641,6 +9106,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -8658,12 +9124,14 @@ "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "license": "ISC" }, "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==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -8676,6 +9144,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -8691,12 +9160,15 @@ "node_modules/github-slugger": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "license": "ISC" }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8716,6 +9188,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8726,12 +9199,14 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -8746,6 +9221,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -8754,6 +9230,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -8765,6 +9242,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -8778,6 +9256,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8786,10 +9265,11 @@ } }, "node_modules/globals": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.0.0.tgz", - "integrity": "sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -8798,12 +9278,14 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8816,6 +9298,7 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -8835,6 +9318,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -8846,6 +9330,7 @@ "version": "12.6.1", "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -8870,6 +9355,7 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -8880,19 +9366,22 @@ "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==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "devOptional": true, + "license": "MIT", "peer": true }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", @@ -8907,6 +9396,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -8915,6 +9405,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -8927,6 +9418,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "license": "MIT", "dependencies": { "duplexer": "^0.1.2" }, @@ -8940,13 +9432,15 @@ "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8955,6 +9449,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -8963,6 +9458,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -8974,6 +9470,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8985,6 +9482,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8997,6 +9495,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -9011,6 +9510,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -9022,6 +9522,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9033,6 +9534,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -9052,6 +9554,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -9061,9 +9564,10 @@ } }, "node_modules/hast-util-raw": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", - "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -9088,6 +9592,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -9115,6 +9620,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -9140,12 +9646,14 @@ "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", - "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==", + "license": "MIT" }, "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "license": "MIT", "dependencies": { "inline-style-parser": "0.2.3" } @@ -9154,6 +9662,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -9172,6 +9681,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -9184,6 +9694,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -9200,6 +9711,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", "bin": { "he": "bin/he" } @@ -9208,6 +9720,7 @@ "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -9221,6 +9734,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -9229,6 +9743,7 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -9239,12 +9754,14 @@ "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9258,12 +9775,14 @@ "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -9281,17 +9800,20 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "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==" + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "license": "MIT" }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -9312,6 +9834,7 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", "engines": { "node": ">=14" } @@ -9320,6 +9843,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -9331,6 +9855,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9340,6 +9865,7 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -9371,6 +9897,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -9379,6 +9906,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -9406,6 +9934,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -9416,17 +9945,20 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9441,12 +9973,14 @@ "node_modules/http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -9460,6 +9994,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -9483,6 +10018,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9494,6 +10030,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -9506,16 +10043,18 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -9525,6 +10064,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -9536,6 +10076,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -9544,6 +10085,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "license": "MIT", "dependencies": { "queue": "6.0.2" }, @@ -9558,20 +10100,23 @@ "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9587,6 +10132,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "license": "MIT", "engines": { "node": ">=8" } @@ -9595,6 +10141,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -9603,14 +10150,16 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infima": { - "version": "0.2.0-alpha.43", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", - "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "version": "0.2.0-alpha.44", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.44.tgz", + "integrity": "sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ==", + "license": "MIT", "engines": { "node": ">=12" } @@ -9619,6 +10168,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9627,23 +10178,27 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" }, "node_modules/inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "license": "MIT" }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -9657,6 +10212,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -9665,6 +10221,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -9673,14 +10230,16 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -9689,6 +10248,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9698,6 +10258,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -9707,14 +10268,15 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9723,16 +10285,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" }, "node_modules/is-async-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9748,6 +10329,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -9759,6 +10341,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9771,6 +10354,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9787,6 +10371,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9798,6 +10383,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -9806,11 +10392,15 @@ } }, "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==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9821,6 +10411,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -9836,6 +10427,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9850,6 +10442,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9859,6 +10452,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9873,6 +10467,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9881,6 +10476,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9890,6 +10486,7 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -9901,6 +10498,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -9910,6 +10508,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -9924,6 +10523,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -9935,6 +10535,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9944,6 +10545,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -9960,6 +10562,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9972,6 +10575,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9983,6 +10587,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -9994,6 +10599,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -10003,6 +10609,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10017,6 +10624,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10025,6 +10633,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10033,6 +10642,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10041,6 +10651,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -10049,9 +10660,13 @@ } }, "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -10060,6 +10675,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -10069,6 +10685,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10084,6 +10701,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10092,6 +10710,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10101,6 +10720,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10113,6 +10733,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -10127,6 +10748,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -10139,6 +10761,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10154,6 +10777,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -10169,6 +10793,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -10182,13 +10807,15 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10201,6 +10828,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -10213,6 +10841,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4" @@ -10228,6 +10857,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -10239,24 +10869,29 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10266,6 +10901,7 @@ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -10278,6 +10914,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10294,6 +10931,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -10308,6 +10946,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10319,17 +10958,19 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/joi": { - "version": "17.12.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", - "integrity": "sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -10341,12 +10982,14 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -10358,6 +11001,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -10368,29 +11012,34 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "devOptional": true, + "license": "MIT", "peer": 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==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -10402,6 +11051,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -10414,6 +11064,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -10425,13 +11076,14 @@ } }, "node_modules/katex": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", - "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "version": "0.16.11", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", + "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -10443,6 +11095,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -10451,6 +11104,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -10464,6 +11118,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10472,6 +11127,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10480,21 +11136,24 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" }, @@ -10506,6 +11165,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -10517,9 +11177,10 @@ } }, "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -10528,12 +11189,14 @@ "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" }, "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==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10543,6 +11206,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1", @@ -10553,22 +11217,28 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "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==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -10577,6 +11247,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -10587,14 +11258,15 @@ } }, "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10603,39 +11275,46 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "devOptional": true, + "license": "MIT", "peer": true }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10645,6 +11324,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10656,6 +11336,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -10664,6 +11345,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10675,6 +11357,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -10683,6 +11366,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -10694,6 +11378,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10703,6 +11388,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -10722,6 +11408,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -10737,6 +11424,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -10745,9 +11433,10 @@ } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", - "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -10780,12 +11469,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mdast-util-frontmatter": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -10803,6 +11494,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -10814,6 +11506,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -10832,6 +11525,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", @@ -10858,6 +11552,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -10876,12 +11571,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mdast-util-gfm-footnote": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -10898,6 +11595,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -10912,6 +11610,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -10928,6 +11627,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -10943,6 +11643,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", @@ -10959,6 +11660,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -10976,6 +11678,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -11000,6 +11703,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -11017,6 +11721,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -11027,9 +11732,10 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", - "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -11050,6 +11756,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -11069,6 +11776,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, @@ -11078,14 +11786,16 @@ } }, "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11094,6 +11804,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -11104,25 +11815,29 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "license": "MIT" }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/mermaid": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz", - "integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz", + "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==", + "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^6.0.1", "@types/d3-scale": "^4.0.3", @@ -11150,6 +11865,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } @@ -11157,12 +11873,14 @@ "node_modules/mermaid/node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "license": "MIT" }, "node_modules/mermaid/node_modules/mdast-util-from-markdown": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -11186,6 +11904,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "license": "MIT", "dependencies": { "@types/mdast": "^3.0.0" }, @@ -11208,6 +11927,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -11242,6 +11962,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-factory-destination": "^1.0.0", @@ -11275,6 +11996,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -11295,6 +12017,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -11316,6 +12039,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -11337,6 +12061,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -11358,6 +12083,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -11376,6 +12102,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -11396,6 +12123,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -11415,6 +12143,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -11433,6 +12162,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -11453,7 +12183,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mermaid/node_modules/micromark-util-html-tag-name": { "version": "1.2.0", @@ -11468,7 +12199,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mermaid/node_modules/micromark-util-normalize-identifier": { "version": "1.1.0", @@ -11484,6 +12216,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -11502,6 +12235,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-types": "^1.0.0" } @@ -11520,6 +12254,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-encode": "^1.0.0", @@ -11540,6 +12275,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -11560,12 +12296,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mermaid/node_modules/unist-util-stringify-position": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -11574,22 +12312,11 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mermaid/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11608,6 +12335,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -11629,9 +12357,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz", - "integrity": "sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", "funding": [ { "type": "GitHub Sponsors", @@ -11642,6 +12370,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", @@ -11675,6 +12404,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11694,6 +12424,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11712,12 +12443,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", - "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.1.tgz", + "integrity": "sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -11746,6 +12479,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11765,6 +12499,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11783,12 +12518,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-frontmatter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "license": "MIT", "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -11814,6 +12551,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11832,12 +12570,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", @@ -11854,9 +12594,10 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", - "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -11882,6 +12623,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11900,12 +12642,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -11935,6 +12679,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11954,6 +12699,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -11972,12 +12718,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -12004,12 +12752,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", - "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -12036,6 +12786,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12055,6 +12806,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12073,12 +12825,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -12088,9 +12842,10 @@ } }, "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", - "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -12117,6 +12872,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12136,6 +12892,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12154,7 +12911,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.0", @@ -12170,6 +12928,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -12195,6 +12954,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12214,6 +12974,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12232,12 +12993,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-mdx-jsx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "license": "MIT", "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", @@ -12269,6 +13032,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12288,6 +13052,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12306,12 +13071,14 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-extension-mdx-md": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -12324,6 +13091,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -12343,6 +13111,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -12373,6 +13142,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12391,7 +13161,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-destination": { "version": "2.0.0", @@ -12407,6 +13178,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -12427,6 +13199,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12445,7 +13218,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-label": { "version": "2.0.0", @@ -12461,6 +13235,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -12482,6 +13257,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12500,7 +13276,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-mdx-expression": { "version": "2.0.1", @@ -12516,6 +13293,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -12541,6 +13319,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12559,7 +13338,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-space": { "version": "1.1.0", @@ -12575,6 +13355,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -12593,7 +13374,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-title": { "version": "2.0.0", @@ -12609,6 +13391,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -12630,6 +13413,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12649,6 +13433,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12667,7 +13452,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-factory-whitespace": { "version": "2.0.0", @@ -12683,6 +13469,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -12704,6 +13491,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12723,6 +13511,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12741,7 +13530,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-character": { "version": "1.2.0", @@ -12757,6 +13547,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -12775,7 +13566,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-chunked": { "version": "2.0.0", @@ -12791,6 +13583,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -12808,7 +13601,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-classify-character": { "version": "2.0.0", @@ -12824,6 +13618,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -12844,6 +13639,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12862,7 +13658,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-combine-extensions": { "version": "2.0.0", @@ -12878,6 +13675,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12897,6 +13695,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -12914,7 +13713,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-decode-string": { "version": "2.0.0", @@ -12930,6 +13730,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -12951,6 +13752,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -12969,7 +13771,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-encode": { "version": "2.0.0", @@ -12984,7 +13787,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.2", @@ -13000,6 +13804,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", @@ -13024,7 +13829,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.0", @@ -13039,7 +13845,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.0", @@ -13055,6 +13862,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -13072,7 +13880,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-resolve-all": { "version": "2.0.0", @@ -13088,6 +13897,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } @@ -13106,6 +13916,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -13126,6 +13937,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13144,12 +13956,13 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz", - "integrity": "sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", "funding": [ { "type": "GitHub Sponsors", @@ -13160,6 +13973,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -13180,7 +13994,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-symbol": { "version": "1.1.0", @@ -13195,7 +14010,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-types": { "version": "2.0.0", @@ -13210,7 +14026,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark/node_modules/micromark-factory-space": { "version": "2.0.0", @@ -13226,6 +14043,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13245,6 +14063,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -13263,14 +14082,16 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -13281,6 +14102,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -13292,6 +14114,7 @@ "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13300,6 +14123,7 @@ "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "license": "MIT", "dependencies": { "mime-db": "~1.33.0" }, @@ -13311,6 +14135,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -13319,6 +14144,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -13327,9 +14153,10 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", - "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -13348,12 +14175,14 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13365,6 +14194,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13373,6 +14203,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -13381,6 +14212,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "license": "MIT", "engines": { "node": ">=10" } @@ -13388,12 +14220,14 @@ "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==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -13412,6 +14246,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -13424,12 +14259,14 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "devOptional": true, + "license": "MIT", "peer": true }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13437,12 +14274,14 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -13452,6 +14291,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.6.0", "char-regex": "^1.0.2", @@ -13466,24 +14306,28 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "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==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13492,16 +14336,18 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13511,6 +14357,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -13521,12 +14368,14 @@ "node_modules/nprogress": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==", + "license": "MIT" }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -13538,14 +14387,36 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13554,6 +14425,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -13562,6 +14434,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -13580,6 +14453,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13594,6 +14468,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13612,6 +14487,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13621,28 +14497,12 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13658,12 +14518,14 @@ "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -13675,6 +14537,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -13683,6 +14546,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -13691,6 +14555,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -13705,6 +14570,7 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -13721,23 +14587,25 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -13747,33 +14615,36 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", "engines": { "node": ">=12.20" } }, "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13783,6 +14654,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -13797,6 +14669,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -13809,6 +14682,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -13817,6 +14691,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -13834,6 +14709,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -13843,6 +14719,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -13854,6 +14731,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "character-entities": "^2.0.0", @@ -13872,12 +14750,14 @@ "node_modules/parse-entities/node_modules/@types/unist": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -13894,12 +14774,14 @@ "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -13911,6 +14793,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "license": "MIT", "dependencies": { "domhandler": "^5.0.2", "parse5": "^7.0.0" @@ -13923,6 +14806,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -13931,23 +14815,26 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13955,12 +14842,14 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -13968,20 +14857,29 @@ "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==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "license": "MIT", "dependencies": { "isarray": "0.0.1" } }, + "node_modules/path-to-regexp/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { "node": ">=8" } @@ -13990,6 +14888,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^3.0.0", @@ -13997,14 +14896,16 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -14016,6 +14917,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -14026,10 +14928,93 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -14041,6 +15026,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -14052,6 +15038,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -14064,6 +15051,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -14078,6 +15066,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -14089,6 +15078,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -14098,14 +15088,15 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "funding": [ { "type": "opencollective", @@ -14120,9 +15111,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -14130,111 +15122,123 @@ } }, "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, "peerDependencies": { "postcss": "^8.2.2" } }, "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "colord": "^2.9.1", + "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-unused": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", - "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz", + "integrity": "sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", + "license": "MIT", "dependencies": { "cosmiconfig": "^8.3.5", "jiti": "^1.20.0", @@ -14252,142 +15256,125 @@ "webpack": "^5.0.0" } }, - "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/postcss-merge-idents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", - "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", + "integrity": "sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==", + "license": "MIT", "dependencies": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "stylehacks": "^6.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "license": "MIT", "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -14396,9 +15383,10 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", - "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -14412,9 +15400,10 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", - "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -14429,6 +15418,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -14440,192 +15430,205 @@ } }, "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "license": "MIT", "dependencies": { - "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "license": "MIT", "dependencies": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-idents": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", - "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", + "integrity": "sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.23.0", "caniuse-api": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14635,62 +15638,67 @@ } }, "node_modules/postcss-sort-media-queries": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz", - "integrity": "sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "license": "MIT", "dependencies": { - "sort-css-media-queries": "2.1.0" + "sort-css-media-queries": "2.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.4.16" + "postcss": "^8.4.23" } }, "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "svgo": "^3.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >= 18" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/postcss-zindex": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", - "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz", + "integrity": "sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/prelude-ls": { @@ -14698,6 +15706,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "devOptional": true, + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8.0" @@ -14707,6 +15716,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -14716,6 +15726,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -14724,6 +15735,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz", "integrity": "sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==", + "license": "MIT", "dependencies": { "@types/prismjs": "^1.26.0", "clsx": "^2.0.0" @@ -14736,6 +15748,7 @@ "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", "engines": { "node": ">=6" } @@ -14743,12 +15756,14 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -14761,6 +15776,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -14768,9 +15784,10 @@ } }, "node_modules/property-information": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz", - "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -14779,12 +15796,14 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "license": "ISC" }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -14797,6 +15816,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -14804,12 +15824,14 @@ "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" }, "node_modules/pupa": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" }, @@ -14824,6 +15846,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -14838,6 +15861,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "license": "MIT", "dependencies": { "inherits": "~2.0.3" } @@ -14859,12 +15883,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -14876,6 +15902,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -14884,6 +15911,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14892,6 +15920,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -14906,14 +15935,28 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -14928,14 +15971,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -14947,6 +15992,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.0", "address": "^1.1.2", @@ -14977,116 +16023,45 @@ "node": ">=14" } }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "license": "MIT", "engines": { "node": ">= 12.13.0" } }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-error-overlay": { "version": "6.0.11", "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", + "license": "MIT" }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" }, "node_modules/react-helmet-async": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -15102,12 +16077,14 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/react-json-view-lite": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.3.0.tgz", - "integrity": "sha512-aN1biKC5v4DQkmQBlZjuMFR09MKZGMPtIg+cut8zEeg2HXd6gl2gRy0n4HMacHf0dznQgo0SVXN7eT8zV3hEuQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz", + "integrity": "sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==", + "license": "MIT", "engines": { "node": ">=14" }, @@ -15117,12 +16094,12 @@ }, "node_modules/react-loadable": { "name": "@docusaurus/react-loadable", - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", + "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", + "license": "MIT", "dependencies": { - "@types/react": "*", - "prop-types": "^15.6.2" + "@types/react": "*" }, "peerDependencies": { "react": "*" @@ -15132,6 +16109,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.3" }, @@ -15147,6 +16125,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -15166,6 +16145,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2" }, @@ -15178,6 +16158,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -15195,6 +16176,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -15208,6 +16190,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -15218,7 +16201,8 @@ "node_modules/reading-time": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", + "license": "MIT" }, "node_modules/rechoir": { "version": "0.6.2", @@ -15235,6 +16219,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, @@ -15247,6 +16232,7 @@ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -15266,12 +16252,14 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -15282,12 +16270,14 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -15297,6 +16287,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -15314,6 +16305,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -15330,6 +16322,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -15341,6 +16334,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -15355,6 +16349,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -15374,6 +16369,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -15388,6 +16384,7 @@ "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -15396,6 +16393,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -15411,6 +16409,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-4.0.1.tgz", "integrity": "sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.2", "emoticon": "^4.0.1", @@ -15426,6 +16425,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", @@ -15441,6 +16441,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -15458,6 +16459,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -15471,6 +16473,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -15486,6 +16489,7 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -15502,6 +16506,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -15516,6 +16521,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -15528,6 +16534,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -15543,6 +16550,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -15556,6 +16564,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -15570,6 +16579,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -15583,6 +16593,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -15598,6 +16609,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -15609,6 +16621,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15624,12 +16637,14 @@ "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==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -15645,12 +16660,14 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", "engines": { "node": ">=4" } @@ -15658,12 +16675,14 @@ "node_modules/resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -15678,6 +16697,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -15686,6 +16706,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -15695,6 +16716,8 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -15708,17 +16731,20 @@ "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" }, "node_modules/rtl-detect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", - "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==" + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" }, "node_modules/rtlcss": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.1.tgz", - "integrity": "sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.2.0.tgz", + "integrity": "sha512-AV+V3oOVvCrqyH5Q/6RuT1IDH1Xy5kJTkEWTWZPN5rdQ3HCFOd8SrbC7c6N5Y8bPpCfZSR6yYbUATXslvfvu5g==", + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0", @@ -15750,6 +16776,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -15757,12 +16784,14 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "license": "MIT", "dependencies": { "mri": "^1.1.0" }, @@ -15775,6 +16804,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -15788,12 +16818,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -15811,13 +16835,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -15833,12 +16859,14 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sass": { - "version": "1.72.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", - "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -15855,6 +16883,7 @@ "version": "10.5.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.5.2.tgz", "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==", + "license": "MIT", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -15887,38 +16916,11 @@ } } }, - "node_modules/sass-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/sass-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/sass-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/sass-loader/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -15933,14 +16935,16 @@ } }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } @@ -15949,6 +16953,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -15958,21 +16963,57 @@ "engines": { "node": ">= 12.13.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/search-insights": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.13.0.tgz", - "integrity": "sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.16.1.tgz", + "integrity": "sha512-3OMcoa+6ZSl5KjpWiP+jsEURf81S3ipiTodfkguWaXNOvS4ILfYe8cwV4gXopTEN+G1avWqBdf0HmSToVcAxFA==", + "license": "MIT", "peer": true }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" @@ -15984,12 +17025,14 @@ "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -15999,12 +17042,10 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -16016,6 +17057,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -16026,26 +17068,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -16069,6 +17096,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16076,17 +17104,20 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/send/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16095,6 +17126,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -16103,6 +17135,7 @@ "version": "6.1.5", "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", @@ -16117,12 +17150,14 @@ "node_modules/serve-handler/node_modules/path-to-regexp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "license": "MIT" }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -16140,6 +17175,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16148,6 +17184,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16156,6 +17193,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -16169,22 +17207,26 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16193,6 +17235,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -16207,6 +17250,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16224,6 +17268,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16237,12 +17282,14 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -16253,12 +17300,14 @@ "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" }, "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==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -16270,6 +17319,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } @@ -16278,6 +17328,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16286,6 +17337,7 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -16302,6 +17354,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -16318,12 +17371,14 @@ "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==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", @@ -16336,12 +17391,14 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/sitemap": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", - "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", @@ -16359,12 +17416,14 @@ "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" }, "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", "dependencies": { "unicode-emoji-modifier-base": "^1.0.0" }, @@ -16376,24 +17435,46 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" } }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/sort-css-media-queries": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", - "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "license": "MIT", "engines": { "node": ">= 6.3.0" } @@ -16402,6 +17483,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -16410,6 +17492,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -16418,6 +17501,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -16427,6 +17511,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -16435,6 +17520,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -16444,6 +17530,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -16459,6 +17546,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -16471,12 +17559,14 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/srcset": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -16484,16 +17574,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -16501,12 +17586,27 @@ "node_modules/std-env": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -16515,6 +17615,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -16531,6 +17632,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -16542,6 +17644,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -16552,11 +17655,23 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16578,11 +17693,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16601,6 +17728,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16615,6 +17743,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16628,9 +17757,10 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -16644,6 +17774,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "license": "BSD-2-Clause", "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -16657,6 +17788,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16669,6 +17801,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -16677,6 +17810,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -16685,6 +17819,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -16693,6 +17828,7 @@ "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==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -16704,34 +17840,38 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "license": "MIT", "dependencies": { "inline-style-parser": "0.1.1" } }, "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/stylis": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", - "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -16743,6 +17883,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -16753,111 +17894,57 @@ "node_modules/svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "license": "MIT" }, "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=10.13.0" + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, "node_modules/svgo/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, - "node_modules/svgo/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/svgo/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/svgo/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/svgo/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { - "version": "5.30.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.1.tgz", - "integrity": "sha512-PJhOnRttZqqmIujxOQOMu4QuFGvh43lR7Youln3k6OJvmxwZ5FxK5rbCEh8XABRCpLf7ZnhrZuclCNCASsScnA==", + "version": "5.31.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.5.tgz", + "integrity": "sha512-YPmas0L0rE1UyLL/llTWA0SiDOqIcAQYLeUj7cJYzXHlRTAnMSg9pPe4VJ5PlKvTrPQsdVFuiRiwyeNlYgwh2Q==", + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -16875,6 +17962,7 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -16904,33 +17992,11 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -16940,15 +18006,11 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -16966,6 +18028,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -16979,32 +18042,38 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", "engines": { "node": ">=4" } @@ -17013,6 +18082,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -17024,6 +18094,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -17032,6 +18103,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -17040,6 +18112,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17049,6 +18122,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17058,6 +18132,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "engines": { "node": ">=6.10" } @@ -17067,6 +18142,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -17079,6 +18155,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -17087,15 +18164,17 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "devOptional": true, + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1" @@ -17108,6 +18187,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -17119,6 +18199,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -17131,6 +18212,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17139,6 +18221,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -17151,6 +18234,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -17165,6 +18249,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -17184,6 +18269,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -17204,6 +18290,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -17223,14 +18310,16 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", @@ -17245,6 +18334,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -17256,14 +18346,16 @@ } }, "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==" + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -17272,6 +18364,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", "engines": { "node": ">=4" } @@ -17280,6 +18373,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -17292,6 +18386,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -17300,14 +18395,16 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unified": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", - "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -17326,6 +18423,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -17340,6 +18438,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -17352,6 +18451,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -17364,6 +18464,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -17376,6 +18477,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" @@ -17389,6 +18491,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -17401,6 +18504,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -17415,6 +18519,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -17428,6 +18533,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -17436,14 +18542,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -17458,9 +18565,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17473,6 +18581,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "license": "BSD-2-Clause", "dependencies": { "boxen": "^7.0.0", "chalk": "^5.0.1", @@ -17500,6 +18609,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", @@ -17521,6 +18631,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -17532,6 +18643,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -17543,6 +18655,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -17551,6 +18664,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -17559,6 +18673,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "mime-types": "^2.1.27", @@ -17581,38 +18696,11 @@ } } }, - "node_modules/url-loader/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/url-loader/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/url-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/url-loader/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==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17621,6 +18709,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -17632,6 +18721,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17648,17 +18738,20 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "license": "MIT" }, "node_modules/utility-types": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -17667,14 +18760,20 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -17683,6 +18782,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -17700,6 +18800,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -17707,20 +18808,23 @@ "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0", @@ -17732,9 +18836,10 @@ } }, "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -17748,6 +18853,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -17761,6 +18867,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -17773,6 +18880,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -17781,6 +18889,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17789,12 +18898,14 @@ "node_modules/web-worker": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", - "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "license": "Apache-2.0" }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -17802,10 +18913,10 @@ "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -17838,9 +18949,10 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", - "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", @@ -17850,7 +18962,6 @@ "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", "html-escaper": "^2.0.2", - "is-plain-object": "^5.0.0", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", @@ -17867,6 +18978,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -17875,6 +18987,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -17897,6 +19010,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17905,6 +19019,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -17916,6 +19031,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17924,6 +19040,7 @@ "version": "4.15.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -17979,9 +19096,10 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -18002,6 +19120,7 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -18015,42 +19134,38 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/webpack/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==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18059,6 +19174,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -18070,6 +19186,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -18087,6 +19204,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "consola": "^2.15.3", @@ -18104,6 +19222,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -18117,6 +19236,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -18125,6 +19245,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -18140,6 +19261,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -18152,13 +19274,14 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", "dev": true, + "license": "MIT", "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", "is-finalizationregistry": "^1.0.2", @@ -18167,8 +19290,8 @@ "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -18177,17 +19300,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -18206,6 +19324,7 @@ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -18224,6 +19343,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -18237,12 +19357,25 @@ "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "devOptional": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -18259,6 +19392,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -18270,6 +19404,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -18281,6 +19416,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -18294,12 +19430,14 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -18308,9 +19446,10 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -18331,6 +19470,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -18342,6 +19482,7 @@ "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", "dependencies": { "sax": "^1.2.4" }, @@ -18352,22 +19493,25 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18377,6 +19521,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" From 62e5b67f7af3d94f5e5bbf644c7c5a719fef92d9 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 21:36:06 -0700 Subject: [PATCH 36/72] Bump docker/bake-action from 5.5.0 to 5.7.0 (#279) (#280) Bumps [docker/bake-action](https://github.com/docker/bake-action) from 5.5.0 to 5.7.0. - [Release notes](https://github.com/docker/bake-action/releases) - [Commits](https://github.com/docker/bake-action/compare/v5.5.0...v5.7.0) --- updated-dependencies: - dependency-name: docker/bake-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit a433dfa5b7fe88540e14c27660967f54def0245a) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index e729e976..4a5e391d 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -99,7 +99,7 @@ jobs: - if: github.event_name == 'push' name: Build and push (non PR) - uses: docker/bake-action@v5.5.0 + uses: docker/bake-action@v5.7.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} @@ -119,7 +119,7 @@ jobs: # Pull request builds are not cached; and only built for AMD64 - if: github.event_name == 'pull_request' name: Build and push (PR) - uses: docker/bake-action@v5.5.0 + uses: docker/bake-action@v5.7.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} From 7ebcbecd9e948f1747a20a236b545a18a1024c6a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 12:36:28 -0700 Subject: [PATCH 37/72] Bump micromatch from 4.0.7 to 4.0.8 in /docs (#282) (#284) Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.7 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.7...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit eae895e2d595c95eb74b19b4a34b3b94b97b0690) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 0356d2fd..6030e820 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -14086,10 +14086,9 @@ "license": "MIT" }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "license": "MIT", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" From d3e5146b9ac3ab68ab66914607d9bb7fc64f7553 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 18:04:12 -0700 Subject: [PATCH 38/72] Bump webpack from 5.93.0 to 5.94.0 in /docs (#287) (#289) Bumps [webpack](https://github.com/webpack/webpack) from 5.93.0 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.93.0...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit faf5edb12fc60a09b260eeea343c160cfa8270b4) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 6030e820..9a29d9d2 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -3952,26 +3952,6 @@ "@types/ms": "*" } }, - "node_modules/@types/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -18901,12 +18881,10 @@ "license": "Apache-2.0" }, "node_modules/webpack": { - "version": "5.93.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", - "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", - "license": "MIT", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -18915,7 +18893,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", From eefc465422b9da9700acedbdd0b066a9ac7caf03 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 11:49:41 -0700 Subject: [PATCH 39/72] Added ament hooks to track blue description files (#296) (#300) (cherry picked from commit f74bcd2510f27c01117f2f32e36d0c16e2e178f1) Co-authored-by: Evan Palmer --- .docker/Dockerfile | 7 ------- blue_description/CMakeLists.txt | 2 ++ blue_description/hooks/hooks.dsv.in | 2 ++ 3 files changed, 4 insertions(+), 7 deletions(-) create mode 100644 blue_description/hooks/hooks.dsv.in diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 16ca16a3..c2d5dd59 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -205,13 +205,6 @@ export GZ_SIM_SYSTEM_PLUGIN_PATH=\$HOME/ardupilot_gazebo/build:\$GZ_SIM_SYSTEM_P # Add ardupilot_gazebo models and worlds export GZ_SIM_RESOURCE_PATH=\$HOME/ardupilot_gazebo/models:\$HOME/ardupilot_gazebo/worlds:\$GZ_SIM_RESOURCE_PATH - -# Add blue models and worlds -BLUE_DESCRIPTION=\$USER_WORKSPACE/src/blue/blue_description -export GZ_SIM_RESOURCE_PATH=\$BLUE_DESCRIPTION/gazebo/models:\$BLUE_DESCRIPTION/gazebo/worlds:\$GZ_SIM_RESOURCE_PATH - -# Add blue meshes -export GZ_SIM_RESOURCE_PATH=\$BLUE_DESCRIPTION/meshes:\$GZ_SIM_RESOURCE_PATH EOT FROM desktop AS desktop-nvidia diff --git a/blue_description/CMakeLists.txt b/blue_description/CMakeLists.txt index de084cee..cc68f270 100644 --- a/blue_description/CMakeLists.txt +++ b/blue_description/CMakeLists.txt @@ -8,4 +8,6 @@ install( DESTINATION share/blue_description ) +ament_environment_hooks("${CMAKE_CURRENT_SOURCE_DIR}/hooks/hooks.dsv.in") + ament_package() diff --git a/blue_description/hooks/hooks.dsv.in b/blue_description/hooks/hooks.dsv.in new file mode 100644 index 00000000..9e0cfbd7 --- /dev/null +++ b/blue_description/hooks/hooks.dsv.in @@ -0,0 +1,2 @@ +prepend-non-duplicate;GZ_SIM_RESOURCE_PATH;@CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@/gazebo/models +prepend-non-duplicate;GZ_SIM_RESOURCE_PATH;@CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@/gazebo/worlds From 652f5eee66fa7888f584181184746cde0ce82cb0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 11:51:56 -0700 Subject: [PATCH 40/72] Consolidated worlds into a single file (#298) (#303) * Consolidated worlds into a single file * Merge upstream * Fixed stale compose file change (cherry picked from commit 6155ac860221ec695fd31eccef502169356734a5) Co-authored-by: Evan Palmer --- .docker/compose/nouveau-desktop.yaml | 1 - .docker/compose/nvidia-desktop.yaml | 1 - .../launch/bluerov2/bluerov2.launch.yaml | 2 +- .../bluerov2_heavy/bluerov2_heavy.launch.yaml | 2 +- .../bluerov2_heavy_reach.launch.yaml | 2 +- .../bluerov2_heavy_reach_underwater.world | 47 ------------------- .../worlds/bluerov2_heavy_underwater.world | 47 ------------------- ...rov2_underwater.world => underwater.world} | 3 +- 8 files changed, 4 insertions(+), 101 deletions(-) delete mode 100644 blue_description/gazebo/worlds/bluerov2_heavy_reach_underwater.world delete mode 100644 blue_description/gazebo/worlds/bluerov2_heavy_underwater.world rename blue_description/gazebo/worlds/{bluerov2_underwater.world => underwater.world} (93%) diff --git a/.docker/compose/nouveau-desktop.yaml b/.docker/compose/nouveau-desktop.yaml index e0745b33..a2fa8907 100644 --- a/.docker/compose/nouveau-desktop.yaml +++ b/.docker/compose/nouveau-desktop.yaml @@ -1,4 +1,3 @@ -version: "3" services: blue: image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop diff --git a/.docker/compose/nvidia-desktop.yaml b/.docker/compose/nvidia-desktop.yaml index 0d255b00..0afd8fe7 100644 --- a/.docker/compose/nvidia-desktop.yaml +++ b/.docker/compose/nvidia-desktop.yaml @@ -1,4 +1,3 @@ -version: "3" services: blue: image: ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia diff --git a/blue_bringup/launch/bluerov2/bluerov2.launch.yaml b/blue_bringup/launch/bluerov2/bluerov2.launch.yaml index b57e0937..f8aa9b50 100644 --- a/blue_bringup/launch/bluerov2/bluerov2.launch.yaml +++ b/blue_bringup/launch/bluerov2/bluerov2.launch.yaml @@ -39,7 +39,7 @@ launch: - arg: name: gazebo_world_file - default: $(find-pkg-share blue_description)/gazebo/worlds/$(var model_name)_underwater.world + default: $(find-pkg-share blue_description)/gazebo/worlds/underwater.world - arg: name: mavros_file diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml index 93897099..368be9ee 100644 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml @@ -39,7 +39,7 @@ launch: - arg: name: gazebo_world_file - default: $(find-pkg-share blue_description)/gazebo/worlds/$(var model_name)_underwater.world + default: $(find-pkg-share blue_description)/gazebo/worlds/underwater.world - arg: name: mavros_file diff --git a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml index d16e459b..6af54b05 100644 --- a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml @@ -39,7 +39,7 @@ launch: - arg: name: gazebo_world_file - default: $(find-pkg-share blue_description)/gazebo/worlds/$(var model_name)_underwater.world + default: $(find-pkg-share blue_description)/gazebo/worlds/underwater.world - arg: name: mavros_file diff --git a/blue_description/gazebo/worlds/bluerov2_heavy_reach_underwater.world b/blue_description/gazebo/worlds/bluerov2_heavy_reach_underwater.world deleted file mode 100644 index 4d908b1e..00000000 --- a/blue_description/gazebo/worlds/bluerov2_heavy_reach_underwater.world +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - 1000 - - 0 - 1 - - - bluerov2_heavy_reach - - - - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun - - - - model://sand_heightmap - 0 7 -10 0 0 0 - - - - diff --git a/blue_description/gazebo/worlds/bluerov2_heavy_underwater.world b/blue_description/gazebo/worlds/bluerov2_heavy_underwater.world deleted file mode 100644 index 715d1171..00000000 --- a/blue_description/gazebo/worlds/bluerov2_heavy_underwater.world +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - 1000 - - 0 - 1 - - - bluerov2_heavy - - - - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun - - - - model://sand_heightmap - 0 7 -10 0 0 0 - - - - diff --git a/blue_description/gazebo/worlds/bluerov2_underwater.world b/blue_description/gazebo/worlds/underwater.world similarity index 93% rename from blue_description/gazebo/worlds/bluerov2_underwater.world rename to blue_description/gazebo/worlds/underwater.world index c1d7ce12..1eb2ddde 100644 --- a/blue_description/gazebo/worlds/bluerov2_underwater.world +++ b/blue_description/gazebo/worlds/underwater.world @@ -1,6 +1,6 @@ - + 1 - bluerov2 From b15be8be5b10e9e8e587f087a10b8062cc4748fc Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 13:16:30 -0700 Subject: [PATCH 41/72] Add water and sky textures to underwater Gazebo world (#299) (#306) * Consolidated worlds into a single file * Added water and sky textures to underwater world * what * Remove random change (cherry picked from commit 5b34879454e28d0a2ed4fc002baf92057494f521) Co-authored-by: Evan Palmer --- .../gazebo/worlds/underwater.world | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/blue_description/gazebo/worlds/underwater.world b/blue_description/gazebo/worlds/underwater.world index 1eb2ddde..22e75d54 100644 --- a/blue_description/gazebo/worlds/underwater.world +++ b/blue_description/gazebo/worlds/underwater.world @@ -42,5 +42,26 @@ 0 7 -10 0 0 0 + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Coast Water + + 0 0 0 0 0 0 + + + + 1.0 1.0 1.0 + 0.8 0.8 0.8 + + + + + 50 0 150 0 0 0 + 1 1 1 1 + .1 .1 .1 1 + 0.3 0.3 -1 + false + + From 4a64479aa5d4efca6fcc09c36de4ab3119fe0885 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 21 Sep 2024 19:05:48 -0700 Subject: [PATCH 42/72] Bump express from 4.19.2 to 4.21.0 in /docs (#311) (#313) Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.0. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md) - [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 49a0fa2f0f47d48524c3607124a8b959612bec5a) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 142 +++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 85 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 9a29d9d2..82c09a77 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -5127,10 +5127,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "license": "MIT", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -5140,7 +5139,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -5154,7 +5153,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5163,7 +5161,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5172,7 +5169,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5183,8 +5179,7 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/bonjour-service": { "version": "1.2.1", @@ -5867,7 +5862,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7138,7 +7132,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7156,7 +7149,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -7409,8 +7401,7 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { "version": "1.5.6", @@ -7456,10 +7447,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -8395,7 +8385,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8451,37 +8440,36 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", - "license": "MIT", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -8520,10 +8508,9 @@ "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "license": "MIT" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/express/node_modules/range-parser": { "version": "1.2.1", @@ -8723,13 +8710,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "license": "MIT", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -8744,7 +8730,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8752,8 +8737,7 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-cache-dir": { "version": "4.0.0", @@ -8990,7 +8974,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9938,7 +9921,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -11775,7 +11757,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11793,10 +11774,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -14081,7 +14064,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -14504,7 +14486,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -15822,12 +15803,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "license": "BSD-3-Clause", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -15899,7 +15879,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -15914,7 +15893,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -15923,7 +15901,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -17048,10 +17025,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "license": "MIT", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -17075,7 +17051,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -17083,20 +17058,25 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/send/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -17211,15 +17191,14 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "license": "MIT", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -17261,8 +17240,7 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shallow-clone": { "version": "3.0.1", @@ -17557,7 +17535,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -18073,7 +18050,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", "engines": { "node": ">=0.6" } @@ -18178,7 +18154,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -18191,7 +18166,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18200,7 +18174,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -18521,7 +18494,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", "engines": { "node": ">= 0.8" } From 8772c8a2369e59e29d9b5bc19982c09d3e1d3835 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 22:39:14 -0700 Subject: [PATCH 43/72] Integrate latest mobile_to_maritime API (#316) (#317) * Added message transforms * Fixed launch file * cleanup launch file (cherry picked from commit 608e987f1f66d4ed998a55887774ed2dcd7f9e3b) Co-authored-by: Evan Palmer --- .../teleoperation/config/joy_teleop.yaml | 2 +- .../teleoperation/config/transforms.yaml | 10 ++++++++++ .../launch/joy_teleop.launch.yaml | 18 +++++++----------- docs/docs/tutorials/teleop.mdx | 11 +++++++++-- 4 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 blue_demos/teleoperation/config/transforms.yaml diff --git a/blue_demos/teleoperation/config/joy_teleop.yaml b/blue_demos/teleoperation/config/joy_teleop.yaml index c1d3dd7a..aa19c8b6 100644 --- a/blue_demos/teleoperation/config/joy_teleop.yaml +++ b/blue_demos/teleoperation/config/joy_teleop.yaml @@ -8,7 +8,7 @@ joy_teleop: manual_control: type: topic interface_type: geometry_msgs/msg/Twist - topic_name: cmd_vel + topic_name: /cmd_vel deadman_axes: [2] axis_mappings: linear-x: diff --git a/blue_demos/teleoperation/config/transforms.yaml b/blue_demos/teleoperation/config/transforms.yaml new file mode 100644 index 00000000..00c04540 --- /dev/null +++ b/blue_demos/teleoperation/config/transforms.yaml @@ -0,0 +1,10 @@ +message_transforms: + ros__parameters: + + incoming_topics: + - /cmd_vel + + transforms: + /cmd_vel: + outgoing_topic: /integral_sliding_mode_controller/reference + message_type: geometry_msgs/msg/Twist diff --git a/blue_demos/teleoperation/launch/joy_teleop.launch.yaml b/blue_demos/teleoperation/launch/joy_teleop.launch.yaml index 34598461..966f3620 100644 --- a/blue_demos/teleoperation/launch/joy_teleop.launch.yaml +++ b/blue_demos/teleoperation/launch/joy_teleop.launch.yaml @@ -5,8 +5,8 @@ launch: default: $(find-pkg-share blue_demos)/teleoperation/config/joy_teleop.yaml - arg: - name: use_maritime - default: "true" + name: transforms_file + default: $(find-pkg-share blue_demos)/teleoperation/config/transforms.yaml - node: pkg: joy_linux @@ -22,12 +22,8 @@ launch: param: - from: $(var joy_file) - - node: - pkg: mobile_to_maritime - exec: mobile_twist_to_maritime_twist - param: - - name: in_topic - value: cmd_vel - - name: out_topic - value: /integral_sliding_mode_controller/reference - if: $(var use_maritime) + - include: + file: $(find-pkg-share message_transforms)/launch/message_transforms.launch.py + arg: + - name: parameters_file + value: $(var transforms_file) diff --git a/docs/docs/tutorials/teleop.mdx b/docs/docs/tutorials/teleop.mdx index f2e1796a..6e468a91 100644 --- a/docs/docs/tutorials/teleop.mdx +++ b/docs/docs/tutorials/teleop.mdx @@ -51,10 +51,17 @@ Docker as described in the [installation instructions](/installation). [REP-105](https://ros.org/reps/rep-0105.html); however, the launched ISMC adheres to the maritime conventions recorded in [REP-156](https://github.com/ros-infrastructure/rep/pull/398). To convert the velocity commands to the appropriate convention, run the - following `mobile_to_maritime` message filter in a new terminal: + `message_transforms` node in a new terminal: ```bash - ros2 run mobile_to_maritime mobile_twist_to_maritime_twist --ros-args -p in_topic:=/cmd_vel -p out_topic:=/integral_sliding_mode_controller/reference + ros2 launch message_transforms message_transforms.launch.py parameters_file:= + ``` + + where `` should be replaced with the path to the + `transforms.yaml` file in the `blue_demos` package, e.g., + + ```bash + ros2 launch message_transforms message_transforms.launch.py parameters_file:=./blue_demos/teleoperation/config/transforms.yaml ``` 5. You should now be able to teleoperate the BlueROV2 using your keyboard. From 8b202aa3870192ddd9ded09792af20086c675bf5 Mon Sep 17 00:00:00 2001 From: Evan Palmer Date: Mon, 23 Sep 2024 22:42:09 -0700 Subject: [PATCH 44/72] Modified blue.repos to use correct auv_controllers branch --- blue.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blue.repos b/blue.repos index 20a32377..619a685e 100644 --- a/blue.repos +++ b/blue.repos @@ -8,7 +8,7 @@ repositories: auv_controllers: type: git url: https://github.com/Robotic-Decision-Making-Lab/auv_controllers.git - version: main + version: iron ardusub_driver: type: git From cbb7ebf6c6b99d5a3e2d3cb9202889a922159764 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:14:10 -0700 Subject: [PATCH 45/72] Fixed instances where mobile_to_maritime API wasn't updated (#320) (#321) * Fixed instances where old m2m api was used * precommit (cherry picked from commit 2d17d70bf940832a6dc21c905385a519926bd60c) Co-authored-by: Evan Palmer --- .../launch/bluerov2/bluerov2.launch.yaml | 2 +- .../bluerov2_heavy/bluerov2_heavy.launch.yaml | 2 +- .../bluerov2_heavy_reach.launch.yaml | 2 +- .../config/transforms.yaml | 11 +++++ .../launch/bluerov2_controllers.launch.py | 44 ++++++++++++------- .../bluerov2_heavy_controllers.launch.py | 44 ++++++++++++------- 6 files changed, 72 insertions(+), 33 deletions(-) create mode 100644 blue_demos/control_integration/config/transforms.yaml diff --git a/blue_bringup/launch/bluerov2/bluerov2.launch.yaml b/blue_bringup/launch/bluerov2/bluerov2.launch.yaml index f8aa9b50..7781fd27 100644 --- a/blue_bringup/launch/bluerov2/bluerov2.launch.yaml +++ b/blue_bringup/launch/bluerov2/bluerov2.launch.yaml @@ -122,4 +122,4 @@ launch: file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml - include: - file: $(find-pkg-share mobile_to_maritime)/launch/tf.launch.yaml + file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml index 368be9ee..8d8f8de7 100644 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy.launch.yaml @@ -122,4 +122,4 @@ launch: file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml - include: - file: $(find-pkg-share mobile_to_maritime)/launch/tf.launch.yaml + file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml diff --git a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml index 6af54b05..1464a0a8 100644 --- a/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy_reach/bluerov2_heavy_reach.launch.yaml @@ -122,4 +122,4 @@ launch: file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml - include: - file: $(find-pkg-share mobile_to_maritime)/launch/tf.launch.yaml + file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml diff --git a/blue_demos/control_integration/config/transforms.yaml b/blue_demos/control_integration/config/transforms.yaml new file mode 100644 index 00000000..6f562a34 --- /dev/null +++ b/blue_demos/control_integration/config/transforms.yaml @@ -0,0 +1,11 @@ +/control_integration/message_transforms: + ros__parameters: + + incoming_topics: + - /mavros/local_position/velocity_body + + transforms: + /mavros/local_position/velocity_body: + outgoing_topic: /integral_sliding_mode_controller/system_state + message_type: geometry_msgs/msg/TwistStamped + frame_id: base_link_fsd diff --git a/blue_demos/control_integration/launch/bluerov2_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_controllers.launch.py index b4e6d059..e37dc412 100644 --- a/blue_demos/control_integration/launch/bluerov2_controllers.launch.py +++ b/blue_demos/control_integration/launch/bluerov2_controllers.launch.py @@ -19,9 +19,14 @@ # THE SOFTWARE. from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument, RegisterEventHandler +from launch.actions import ( + DeclareLaunchArgument, + IncludeLaunchDescription, + RegisterEventHandler, +) from launch.event_handlers import OnProcessExit -from launch.substitutions import PathJoinSubstitution +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare @@ -48,18 +53,27 @@ def generate_launch_description() -> LaunchDescription: ] # The ISMC expects state information to be provided in the FSD frame - mobile_to_maritime_velocity_state = Node( - package="mobile_to_maritime", - executable="mobile_twist_stamped_to_maritime_twist", - name="velocity_state_transform", - parameters=[ - { - "in_topic": "/mavros/local_position/velocity_body", - "out_topic": "/integral_sliding_mode_controller/system_state", - "qos_reliability": "best_effort", - "qos_durability": "volatile", - } - ], + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "control_integration", + "config", + "transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), ) controller_manager = Node( @@ -151,7 +165,7 @@ def generate_launch_description() -> LaunchDescription: return LaunchDescription( [ *args, - mobile_to_maritime_velocity_state, + message_transformer, controller_manager, *delay_thruster_spawners, delay_tam_controller_spawner_after_thruster_controller_spawners, diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py index 5e367672..3f6ab9a9 100644 --- a/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py +++ b/blue_demos/control_integration/launch/bluerov2_heavy_controllers.launch.py @@ -19,9 +19,14 @@ # THE SOFTWARE. from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument, RegisterEventHandler +from launch.actions import ( + DeclareLaunchArgument, + IncludeLaunchDescription, + RegisterEventHandler, +) from launch.event_handlers import OnProcessExit -from launch.substitutions import PathJoinSubstitution +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution from launch_ros.actions import Node from launch_ros.substitutions import FindPackageShare @@ -47,18 +52,27 @@ def generate_launch_description() -> LaunchDescription: ] # The ISMC expects state information to be provided in the FSD frame - mobile_to_maritime_velocity_state = Node( - package="mobile_to_maritime", - executable="mobile_twist_stamped_to_maritime_twist", - name="velocity_state_transform", - parameters=[ - { - "in_topic": "/mavros/local_position/velocity_body", - "out_topic": "/integral_sliding_mode_controller/system_state", - "qos_reliability": "best_effort", - "qos_durability": "volatile", - } - ], + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "control_integration", + "config", + "transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), ) controller_manager = Node( @@ -150,7 +164,7 @@ def generate_launch_description() -> LaunchDescription: return LaunchDescription( [ *args, - mobile_to_maritime_velocity_state, + message_transformer, controller_manager, *delay_thruster_spawners, delay_tam_controller_spawner_after_thruster_controller_spawners, From 774ec3bc8bf2946fe0790d651e9286dcb496ddb0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 12:52:10 -0700 Subject: [PATCH 46/72] Bump docker/bake-action from 5.7.0 to 5.9.0 (#325) (#326) Bumps [docker/bake-action](https://github.com/docker/bake-action) from 5.7.0 to 5.9.0. - [Release notes](https://github.com/docker/bake-action/releases) - [Commits](https://github.com/docker/bake-action/compare/v5.7.0...v5.9.0) --- updated-dependencies: - dependency-name: docker/bake-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 52a55f52c9bf36cf2c0ea61b7077d2958c23fd10) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 4a5e391d..9cc9a212 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -99,7 +99,7 @@ jobs: - if: github.event_name == 'push' name: Build and push (non PR) - uses: docker/bake-action@v5.7.0 + uses: docker/bake-action@v5.9.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} @@ -119,7 +119,7 @@ jobs: # Pull request builds are not cached; and only built for AMD64 - if: github.event_name == 'pull_request' name: Build and push (PR) - uses: docker/bake-action@v5.7.0 + uses: docker/bake-action@v5.9.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} From 31771d153641e4727a7e9845e4a43bd0744fc27a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 13:06:52 -0700 Subject: [PATCH 47/72] Bump docker/bake-action from 5.9.0 to 5.10.0 (#329) (#330) Bumps [docker/bake-action](https://github.com/docker/bake-action) from 5.9.0 to 5.10.0. - [Release notes](https://github.com/docker/bake-action/releases) - [Commits](https://github.com/docker/bake-action/compare/v5.9.0...v5.10.0) --- updated-dependencies: - dependency-name: docker/bake-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 52048dc6d00546dff58370b6cc0a203b6195400d) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 9cc9a212..5e1a4d9b 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -99,7 +99,7 @@ jobs: - if: github.event_name == 'push' name: Build and push (non PR) - uses: docker/bake-action@v5.9.0 + uses: docker/bake-action@v5.10.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} @@ -119,7 +119,7 @@ jobs: # Pull request builds are not cached; and only built for AMD64 - if: github.event_name == 'pull_request' name: Build and push (PR) - uses: docker/bake-action@v5.9.0 + uses: docker/bake-action@v5.10.0 env: BLUE_ROS_DISTRO: ${{ matrix.ROS_DISTRO }} BLUE_GITHUB_REPO: ${{ steps.lowercase-repo.outputs.repository }} From 6160f54580a990e473a3d9b682f6012041f87a1b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 18:19:21 -0700 Subject: [PATCH 48/72] Bump cookie and express in /docs (#331) (#334) Bumps [cookie](https://github.com/jshttp/cookie) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together. Updates `cookie` from 0.6.0 to 0.7.1 - [Release notes](https://github.com/jshttp/cookie/releases) - [Commits](https://github.com/jshttp/cookie/compare/v0.6.0...v0.7.1) Updates `express` from 4.21.0 to 4.21.1 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md) - [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.1) --- updated-dependencies: - dependency-name: cookie dependency-type: indirect - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit af36d6f0619770387294c6d6fc3d8af81fce255d) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 82c09a77..6f732116 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -5873,10 +5873,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "license": "MIT", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -8440,16 +8439,16 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", From 9a85bae8b7b2b09399f79cde6364111b9d4d6f46 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Fri, 11 Oct 2024 12:23:23 -0700 Subject: [PATCH 49/72] mount volume --- .devcontainer/nvidia/devcontainer.json | 1 + .docker/Dockerfile | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.devcontainer/nvidia/devcontainer.json b/.devcontainer/nvidia/devcontainer.json index b6f36a06..73bbfd4e 100644 --- a/.devcontainer/nvidia/devcontainer.json +++ b/.devcontainer/nvidia/devcontainer.json @@ -14,6 +14,7 @@ "--privileged", "--volume=/tmp/.X11-unix:/tmp/.X11-unix", "--volume=/mnt/wslg:/mnt/wslg", + "--volume=/home/akshaya/Research/doc_vol/learn_ros2:/home/blue/ws_blue/src/learn_ros2", "--gpus=all" ], "containerEnv": { diff --git a/.docker/Dockerfile b/.docker/Dockerfile index c2d5dd59..de34a203 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -227,3 +227,7 @@ RUN sudo apt-get update \ ENV NVIDIA_VISIBLE_DEVICES=all ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute ENV QT_X11_NO_MITSHM=1 + +# Incase rqt is not showing all the plugins. +RUN sudo apt update +RUN sudo apt install ros-${ROS_DISTRO}-rqt* -y From 2964f3d42eb0cdf3d4af9c6cf4242f8c3791e3f7 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 22 Oct 2024 17:31:09 -0700 Subject: [PATCH 50/72] install ompl pinocchio rqt update --- .devcontainer/nvidia/Dockerfile | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile index 62421102..c8303703 100644 --- a/.devcontainer/nvidia/Dockerfile +++ b/.devcontainer/nvidia/Dockerfile @@ -16,6 +16,31 @@ RUN sudo apt-get -q update \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* +# Install OMPL with ROS2 +RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\ + && sudo apt-get update \ + && sudo apt-get install -y nano \ + && sudo apt-get install -y ros-iron-ompl + +# RUN cd ${USER_WORKSPACE}/src/learn_ros2 \ +# && echo "Check me" \ +# && echo ls -d -- */ + +# Install pinocchio +RUN sudo apt update && sudo apt install -y ros-${ROS_DISTRO}-pinocchio + +# Update rqt to find plugins work with ROS2 +RUN sudo apt update \ + && sudo apt install -y ros-${ROS_DISTRO}-rqt* + +# Install the learn_ros2 package +RUN cd ${USER_WORKSPACE} \ + && echo "Check me" \ + && pwd \ + && colcon build --packages-select learn_ros2 \ + && . install/setup.bash + +RUN echo 'nvidia' > ${USER_WORKSPACE}/nvidia.txt # Install debugging/linting Python packages RUN python3 -m pip install \ pre-commit \ From 9442d8dffea38ff72a37f1d12a00e7b5cdad8f87 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 22 Oct 2024 17:31:41 -0700 Subject: [PATCH 51/72] mount additional volume --- .devcontainer/nvidia/devcontainer.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.devcontainer/nvidia/devcontainer.json b/.devcontainer/nvidia/devcontainer.json index 73bbfd4e..e3bd61c8 100644 --- a/.devcontainer/nvidia/devcontainer.json +++ b/.devcontainer/nvidia/devcontainer.json @@ -28,8 +28,12 @@ "customizations": { "vscode": { "settings": { - "python.autoComplete.extraPaths": ["${workspaceFolder}/install/"], - "python.analysis.extraPaths": ["${workspaceFolder}/install/"] + "python.autoComplete.extraPaths": [ + "${workspaceFolder}/install/" + ], + "python.analysis.extraPaths": [ + "${workspaceFolder}/install/" + ] }, "extensions": [ "ms-azuretools.vscode-docker", From d220d681820f5e0790987361bb573a4d076bce2c Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 22 Oct 2024 17:32:45 -0700 Subject: [PATCH 52/72] working dockerfile --- .docker/Dockerfile | 60 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/.docker/Dockerfile b/.docker/Dockerfile index de34a203..f7c2973b 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,10 +1,17 @@ ARG ROS_DISTRO=iron -FROM ros:$ROS_DISTRO-ros-base AS ci +ARG USERNAME=blue +ARG USER_GID=1000 +ARG USER_UID=1000 +FROM ros:$ROS_DISTRO-ros-base AS ci +ARG USERNAME +ARG USER_UID +ARG USER_GID ENV DEBIAN_FRONTEND=noninteractive WORKDIR /root/ws_blue COPY . src/blue +RUN echo 'ompl' > ompl.txt # Install apt packages needed for CI RUN apt-get -q update \ @@ -50,7 +57,7 @@ FROM ci AS robot # Configure a new non-root user ARG USERNAME=blue ARG USER_UID=1000 -ARG USER_GID=$USER_UID +ARG USER_GID=1000 RUN groupadd --gid $USER_GID $USERNAME \ && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ @@ -78,6 +85,8 @@ COPY --chown=$USER_UID:$USER_GID . src/blue # Install the Python requirements that aren't available as rosdeps RUN python3 -m pip install -r $(pwd)/src/blue/requirements-build.txt +RUN sudo apt-get -q update && sudo apt-get install nano + # Install gstreamer RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ @@ -100,6 +109,7 @@ RUN sudo apt-get -q update \ WORKDIR $USER_WORKSPACE RUN sudo apt-get -q update \ && sudo apt-get -q -y upgrade \ + && sudo chown -R ${USER_UID}:${USER_GID} src \ && vcs import src < src/blue/blue.repos \ && rosdep update \ && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \ @@ -109,13 +119,16 @@ RUN sudo apt-get -q update \ # Actually build workspace RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ + && sudo chown -R ${USER_UID}:${USER_GID} $USER_WORKSPACE \ && colcon build RUN echo "source ${USER_WORKSPACE}/install/setup.bash" >> /home/$USERNAME/.bashrc \ && echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> /home/$USERNAME/.bashrc FROM robot AS desktop - +ARG USERNAME +ARG USER_UID +ARG USER_GID ENV DEBIAN_FRONTEND=noninteractive ENV GZ_VERSION=harmonic @@ -124,7 +137,12 @@ ENV GZ_VERSION=harmonic # https://github.com/hadolint/hadolint/wiki/DL3004 USER root # Install custom rosdep list -ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list +# ADD --chown=root:root --chmod=0644 https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list +ADD https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gz/00-gazebo.list /etc/ros/rosdep/sources.list.d/00-gazebo.list + +RUN sudo chown root:root /etc/ros/rosdep/sources.list.d/00-gazebo.list \ + && sudo chmod 0644 /etc/ros/rosdep/sources.list.d/00-gazebo.list + RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null \ && apt-get -q update \ @@ -142,7 +160,7 @@ RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pk && apt-get clean -y \ && rm -rf /var/lib/apt/lists/* USER $USERNAME - +RUN echo $USERNAME # Clone ArduSub # ArduSub is installed for simulation purposes ONLY # When deployed onto hardware, the native installation of ArduSub @@ -191,6 +209,12 @@ RUN sudo apt-get -q update \ RUN . "/opt/ros/${ROS_DISTRO}/setup.sh" \ && colcon build +# Install OMPL with ROS2 +RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\ + && sudo apt-get update \ + && sudo apt-get install -y nano \ + && sudo apt-get install -y ros-iron-ompl + # Setup the simulation environment variables RUN <> /home/$USERNAME/.bashrc @@ -208,7 +232,9 @@ export GZ_SIM_RESOURCE_PATH=\$HOME/ardupilot_gazebo/models:\$HOME/ardupilot_gaze EOT FROM desktop AS desktop-nvidia - +ARG USERNAME +ARG USER_UID +ARG USER_GID # Install NVIDIA software RUN sudo apt-get update \ && sudo apt-get -q -y upgrade \ @@ -223,11 +249,27 @@ RUN sudo apt-get update \ && sudo apt-get clean -y \ && sudo rm -rf /var/lib/apt/lists/* +#Install nano +RUN sudo apt-get update \ + && sudo apt-get install -y nano + # Env vars for the nvidia-container-runtime. ENV NVIDIA_VISIBLE_DEVICES=all ENV NVIDIA_DRIVER_CAPABILITIES=graphics,utility,compute ENV QT_X11_NO_MITSHM=1 -# Incase rqt is not showing all the plugins. -RUN sudo apt update -RUN sudo apt install ros-${ROS_DISTRO}-rqt* -y +# # Incase rqt is not showing all the plugins. +# RUN sudo apt update +# RUN sudo apt install ros-${ROS_DISTRO}-rqt* -y + + + +# # Install OMPL with ROS2 +# RUN curl http://repo.ros2.org/repos.key | sudo apt-key add - +# RUN sudo apt-get update +# RUN sudo apt-get install -y ros-${ROS_DISTRO}-ompl + +# # Install learn_ros2 +# RUN cd ../.. +# RUN colcon build --packages-select learn_ros2 +# RUN . install/setup.bash From af2653f96003f50c3bb2d4f79e6b6001d53462ad Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 22:58:58 -0700 Subject: [PATCH 53/72] Bump mermaid from 10.9.1 to 10.9.3 in /docs (#337) (#338) Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 10.9.1 to 10.9.3. - [Release notes](https://github.com/mermaid-js/mermaid/releases) - [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/CHANGELOG.md) - [Commits](https://github.com/mermaid-js/mermaid/compare/v10.9.1...v10.9.3) --- updated-dependencies: - dependency-name: mermaid dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit c598d42db09f67ed232d166b2491c3958b16e8a8) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 6f732116..75adb95b 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -11796,10 +11796,9 @@ } }, "node_modules/mermaid": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz", - "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==", - "license": "MIT", + "version": "10.9.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.3.tgz", + "integrity": "sha512-V80X1isSEvAewIL3xhmz/rVmc27CVljcsbWxkxlWJWY/1kQa4XOABqpDl2qQLGKzpKm6WbTfUEKImBlUfFYArw==", "dependencies": { "@braintree/sanitize-url": "^6.0.1", "@types/d3-scale": "^4.0.3", @@ -11810,7 +11809,7 @@ "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.10", "dayjs": "^1.11.7", - "dompurify": "^3.0.5", + "dompurify": "^3.0.5 <3.1.7", "elkjs": "^0.9.0", "katex": "^0.16.9", "khroma": "^2.0.0", From 9781629366917275c91e16f7abdfc9dbb581c843 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 23:03:24 -0700 Subject: [PATCH 54/72] Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /docs (#340) (#343) Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7. - [Release notes](https://github.com/chimurai/http-proxy-middleware/releases) - [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md) - [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7) --- updated-dependencies: - dependency-name: http-proxy-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 86f394e25651372c01dd57163d399e7cecca973c) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package-lock.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index 75adb95b..f1241005 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -9952,10 +9952,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "license": "MIT", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", From 6446798eb9a6fc93e066b55a2a92cca7a9c6a0d6 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Wed, 30 Oct 2024 22:58:43 +0000 Subject: [PATCH 55/72] tf2 dependencies --- .devcontainer/nvidia/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile index c8303703..25c8afdc 100644 --- a/.devcontainer/nvidia/Dockerfile +++ b/.devcontainer/nvidia/Dockerfile @@ -33,6 +33,9 @@ RUN sudo apt update && sudo apt install -y ros-${ROS_DISTRO}-pinocchio RUN sudo apt update \ && sudo apt install -y ros-${ROS_DISTRO}-rqt* +# tf2 depedencies +# RUN sudo apt-get install ros-${ROS_DISTRO}-rviz2 ros-${ROS_DISTRO}-turtle-tf2-py ros-${ROS_DISTRO}-tf2-ros ros-${ROS_DISTRO}-tf2-tools ros-${ROS_DISTRO}-turtlesim + # Install the learn_ros2 package RUN cd ${USER_WORKSPACE} \ && echo "Check me" \ From 1dcb9af02e2d5cdf5ea7b80a60903037b179d892 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 26 Nov 2024 15:44:21 -0800 Subject: [PATCH 56/72] get docker image from jbvakshaya ghcr --- .devcontainer/nvidia/Dockerfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile index 25c8afdc..c7436e14 100644 --- a/.devcontainer/nvidia/Dockerfile +++ b/.devcontainer/nvidia/Dockerfile @@ -1,4 +1,5 @@ -FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia +FROM ghcr.io/jbvakshaya/blue:iron-nvidia-ompl +# FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia # Install ROS dependencies # This is done in a previous stage, but we include it again here in case anyone wants to @@ -37,11 +38,11 @@ RUN sudo apt update \ # RUN sudo apt-get install ros-${ROS_DISTRO}-rviz2 ros-${ROS_DISTRO}-turtle-tf2-py ros-${ROS_DISTRO}-tf2-ros ros-${ROS_DISTRO}-tf2-tools ros-${ROS_DISTRO}-turtlesim # Install the learn_ros2 package -RUN cd ${USER_WORKSPACE} \ - && echo "Check me" \ - && pwd \ - && colcon build --packages-select learn_ros2 \ - && . install/setup.bash +# RUN cd ${USER_WORKSPACE} \ +# && echo "Check me" \ +# && pwd \ +# && colcon build --packages-select learn_ros2 \ +# && . install/setup.bash RUN echo 'nvidia' > ${USER_WORKSPACE}/nvidia.txt # Install debugging/linting Python packages From 5033652dbbce6ab24d9f82bb03eef21632dc81ff Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Wed, 27 Nov 2024 15:11:05 -0800 Subject: [PATCH 57/72] enable adding odom topic specific state interface --- .../description/ros2_control/bluerov2_heavy.ros2_control.xacro | 1 + 1 file changed, 1 insertion(+) diff --git a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro index 0ab9119a..40a622e4 100644 --- a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro +++ b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro @@ -7,6 +7,7 @@ thruster_hardware/ThrusterHardware ${max_set_param_attempts} + true From be87ef45b7835fb8f73ed7f44c68963a791650b6 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Wed, 27 Nov 2024 15:20:07 -0800 Subject: [PATCH 58/72] add joint trajectory controller as precedence controller to chainable controllers --- .../bluerov2_heavy_joint_traj_controller.yaml | 207 ++++++++++++++++++ ...uerov2_heavy_with_jt_controllers.launch.py | 193 ++++++++++++++++ 2 files changed, 400 insertions(+) create mode 100644 blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml create mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py diff --git a/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml b/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml new file mode 100644 index 00000000..f3cdc2e7 --- /dev/null +++ b/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml @@ -0,0 +1,207 @@ +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + jt_controller: + type: "joint_trajectory_controller/JointTrajectoryController" + + integral_sliding_mode_controller: + type: velocity_controllers/IntegralSlidingModeController + + thruster_allocation_matrix_controller: + type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController + + thruster1_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster2_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster3_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster4_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster5_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster6_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster7_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster8_controller: + type: thruster_controllers/PolynomialThrustCurveController + +jt_controller: + ros__parameters: + action_monitor_rate: 20.0 + allow_integration_in_goal_trajectories: false + allow_nonzero_velocity_at_trajectory_end: false + allow_partial_joints_goal: false + cmd_timeout: 1.0 + joints: + - joint_x + - joint_y + - joint_z + - joint_rx + - joint_ry + - joint_rz + + command_interfaces: + - velocity + + command_joints: + - integral_sliding_mode_controller/x + - integral_sliding_mode_controller/y + - integral_sliding_mode_controller/z + - integral_sliding_mode_controller/rx + - integral_sliding_mode_controller/ry + - integral_sliding_mode_controller/rz + + state_interfaces: + - position + - velocity + + action_monitor_rate: 20.0 + + allow_partial_joints_goal: true + open_loop_control: true + constraints: + stopped_velocity_tolerance: 0.01 + goal_time: 0.0 + joint1: + trajectory: 0.05 + goal: 0.03 + +integral_sliding_mode_controller: + ros__parameters: + use_external_measured_states: true + reference_controller: thruster_allocation_matrix_controller + gains: + rho: 20.0 + lambda: 200.0 + Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] + tf: + base_frame: "base_link_fsd" + odom_frame: "map_ned" + hydrodynamics: + mass: 13.5 + weight: 114.80 + buoyancy: 112.80 + moments_of_inertia: [0.16, 0.16, 0.16] + added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] + center_of_buoyancy: [0.0, 0.0, 0.0] + center_of_gravity: [0.0, 0.0, 0.0] + linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] + quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + +thruster_allocation_matrix_controller: + ros__parameters: + thrusters: + - thruster1_joint + - thruster2_joint + - thruster3_joint + - thruster4_joint + - thruster5_joint + - thruster6_joint + - thruster7_joint + - thruster8_joint + reference_controllers: + - thruster1_controller + - thruster2_controller + - thruster3_controller + - thruster4_controller + - thruster5_controller + - thruster6_controller + - thruster7_controller + - thruster8_controller + tam: + x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] + y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] + z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] + ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] + rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] + +thruster1_controller: + ros__parameters: + thruster: thruster1_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster2_controller: + ros__parameters: + thruster: thruster2_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster3_controller: + ros__parameters: + thruster: thruster3_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster4_controller: + ros__parameters: + thruster: thruster4_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster5_controller: + ros__parameters: + thruster: thruster5_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster6_controller: + ros__parameters: + thruster: thruster6_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster7_controller: + ros__parameters: + thruster: thruster7_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +thruster8_controller: + ros__parameters: + thruster: thruster8_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py new file mode 100644 index 00000000..85b2bfe7 --- /dev/null +++ b/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py @@ -0,0 +1,193 @@ +# Copyright 2024, Evan Palmer +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + IncludeLaunchDescription, + RegisterEventHandler, +) +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution +from launch_ros.actions import Node +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description() -> LaunchDescription: + """Generate a launch description for the BlueROV2. + This should be launched after MAVROS has fully loaded. + """ + args = [ + DeclareLaunchArgument( + "prefix", + default_value="", + description=( + "The prefix of the model. This is useful for multi-robot setups." + " Expected format '/'." + ), + ), + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + # The ISMC expects state information to be provided in the FSD frame + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "control_integration", + "config", + "transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), + ) + + controller_manager = Node( + package="controller_manager", + executable="ros2_control_node", + output="both", + parameters=[ + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "control_integration", + "config", + "bluerov2_heavy_joint_traj_controller.yaml", + ] + ), + ], + remappings=[ + ("/controller_manager/robot_description", "/robot_description"), + ], + ) + + jt_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "jt_controller", + "--controller-manager", + ["", "controller_manager"], + ], + ) + + velocity_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "integral_sliding_mode_controller", + "--controller-manager", + ["", "controller_manager"], + ], + ) + + thruster_spawners = [ + Node( + package="controller_manager", + executable="spawner", + arguments=[ + f"thruster{i + 1}_controller", + "--controller-manager", + ["", "controller_manager"], + ], + ) + for i in range(8) # BlueROV2 Heavy has 8 thrusters + ] + + delay_thruster_spawners = [] + for i, thruster_spawner in enumerate(thruster_spawners): + if not len(delay_thruster_spawners): + delay_thruster_spawners.append( + thruster_spawner, + ) + else: + delay_thruster_spawners.append( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[i - 1], + on_exit=[thruster_spawner], + ) + ) + ) + + tam_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "thruster_allocation_matrix_controller", + "--controller-manager", + ["", "controller_manager"], + ], + ) + + delay_tam_controller_spawner_after_thruster_controller_spawners = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[-1], + on_exit=[tam_controller_spawner], + ) + ) + ) + + delay_velocity_controller_spawner_after_tam_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=tam_controller_spawner, + on_exit=[velocity_controller_spawner], + ) + ) + ) + + delay_jt_controller_spawner_after_velocity_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=velocity_controller_spawner, + on_exit=[jt_controller_spawner], + ) + ) + ) + + return LaunchDescription( + [ + *args, + message_transformer, + controller_manager, + *delay_thruster_spawners, + delay_tam_controller_spawner_after_thruster_controller_spawners, + delay_velocity_controller_spawner_after_tam_controller_spawner, + delay_jt_controller_spawner_after_velocity_controller_spawner, + ] + ) From 0f8d9ef23bc58bf59007179c30ef11dd5cc76e8b Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Wed, 27 Nov 2024 15:22:20 -0800 Subject: [PATCH 59/72] execute a joint trajectory on jtc controller --- blue_planner_py/LICENSE | 202 ++++++++++++++++++ blue_planner_py/blue_planner_py/__init__.py | 0 blue_planner_py/blue_planner_py/plan_node.py | 103 +++++++++ .../publish_to_ismc_ref_node.py | 63 ++++++ .../blue_planner_py/subscribe_to_odom_node.py | 57 +++++ blue_planner_py/package.xml | 24 +++ blue_planner_py/resource/blue_planner_py | 0 blue_planner_py/setup.cfg | 4 + blue_planner_py/setup.py | 27 +++ blue_planner_py/test/test_copyright.py | 25 +++ blue_planner_py/test/test_flake8.py | 25 +++ blue_planner_py/test/test_pep257.py | 23 ++ 12 files changed, 553 insertions(+) create mode 100644 blue_planner_py/LICENSE create mode 100644 blue_planner_py/blue_planner_py/__init__.py create mode 100644 blue_planner_py/blue_planner_py/plan_node.py create mode 100644 blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py create mode 100644 blue_planner_py/blue_planner_py/subscribe_to_odom_node.py create mode 100644 blue_planner_py/package.xml create mode 100644 blue_planner_py/resource/blue_planner_py create mode 100644 blue_planner_py/setup.cfg create mode 100644 blue_planner_py/setup.py create mode 100644 blue_planner_py/test/test_copyright.py create mode 100644 blue_planner_py/test/test_flake8.py create mode 100644 blue_planner_py/test/test_pep257.py diff --git a/blue_planner_py/LICENSE b/blue_planner_py/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/blue_planner_py/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/blue_planner_py/blue_planner_py/__init__.py b/blue_planner_py/blue_planner_py/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/blue_planner_py/blue_planner_py/plan_node.py b/blue_planner_py/blue_planner_py/plan_node.py new file mode 100644 index 00000000..0c473b10 --- /dev/null +++ b/blue_planner_py/blue_planner_py/plan_node.py @@ -0,0 +1,103 @@ +import rclpy +from nav_msgs.msg import Odometry +from rclpy.duration import Duration +from rclpy.node import Node +from tf_transformations import euler_from_quaternion +from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint + + +def position_to_list(position): + return [position.x, position.y, position.z] + + +def quaternion_to_list(orientation): + return [orientation.x, orientation.y, orientation.z, orientation.w] + + +class MoveBluerov(Node): + def __init__(self): + super().__init__("move_bluerov") + + self.subscription = self.create_subscription( + Odometry, "/model/bluerov2_heavy/odometry", self.odom_callback, 10 + ) + self.subscription + + self.odom_pose_position = [] + self.odom_pose_orientation_rpy = [] + + self.publisher_ = self.create_publisher( + JointTrajectory, "/jt_controller/joint_trajectory", 10 + ) + timer_period = 2.0 # seconds + self.timer = self.create_timer(timer_period, self.issue_jt_control_command) + + def odom_callback(self, msg): + self.odom_pose_position = position_to_list(msg.pose.pose.position) + self.odom_pose_orientation_rpy = list( + euler_from_quaternion(quaternion_to_list(msg.pose.pose.orientation)) + ) + + def issue_jt_control_command(self): + # TODO: Implement this method + """ + create two points, point1 and point2, with position and velocity values + """ + self.get_logger().info( + "pose: {0}, {1}".format( + self.odom_pose_position, self.odom_pose_orientation_rpy + ) + ) + joint_state = [] + joint_state_position = self.odom_pose_position.copy() + joint_state_orientation = self.odom_pose_orientation_rpy.copy() + joint_state = joint_state_position + joint_state.extend(joint_state_orientation) + + if len(joint_state) != 0: + # self.get_logger().info("planning: {0}".format(joint_state)) + point1 = JointTrajectoryPoint() + point2 = JointTrajectoryPoint() + duration1 = Duration(seconds=0.0) + duration2 = Duration(seconds=4.0) + point1.time_from_start = duration1.to_msg() + point2.time_from_start = duration2.to_msg() + point1.positions = joint_state + vel_1 = [0.0] * 6 + vel_1[0] = 0.2 + point1.velocities = vel_1 + pos_2 = joint_state.copy() + pos_2[0] = pos_2[0] + (0.2 * 4.0) + point2.positions = pos_2 + vel_2 = [0.0] * 6 + point2.velocities = vel_2 + trajectory = JointTrajectory() + trajectory.joint_names = [ + "joint_x", + "joint_y", + "joint_z", + "joint_rx", + "joint_ry", + "joint_rz", + ] + trajectory.points = [point1, point2] + trajectory.header.stamp = self.get_clock().now().to_msg() + trajectory.header.frame_id = "base_link" + self.publisher_.publish(trajectory) + self.get_logger().info("published: {0}".format(trajectory)) + + +def main(args=None): + rclpy.init(args=args) + + stow_command = MoveBluerov() + + rclpy.spin_once(stow_command) + stow_command.issue_jt_control_command() + rclpy.spin(stow_command) + stow_command.destroy_node() + rclpy.shutdown() + + +if __name__ == "__main__": + main() diff --git a/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py b/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py new file mode 100644 index 00000000..194247ed --- /dev/null +++ b/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py @@ -0,0 +1,63 @@ +# Copyright 2016 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import rclpy +from geometry_msgs.msg import Twist +from rclpy.node import Node + + +class MinimalPublisher(Node): + def __init__(self): + super().__init__("minimal_publisher") + self.publisher_ = self.create_publisher( + Twist, "/integral_sliding_mode_controller/reference", 10 + ) + timer_period = 0.5 # seconds + self.timer = self.create_timer(timer_period, self.timer_callback) + self.i = 0 + + def timer_callback(self): + vel_msg = Twist() + vel_msg.linear.x = 0.5 + self.get_logger().info( + "Publishing: %f, %f, %f, %f, %f, %f" + % ( + vel_msg.linear.x, + vel_msg.linear.y, + vel_msg.linear.z, + vel_msg.angular.x, + vel_msg.angular.y, + vel_msg.angular.z, + ) + ) + self.publisher_.publish(vel_msg) + self.i += 1 + + +def main(args=None): + rclpy.init(args=args) + + minimal_publisher = MinimalPublisher() + + rclpy.spin(minimal_publisher) + + # Destroy the node explicitly + # (optional - otherwise it will be done automatically + # when the garbage collector destroys the node object) + minimal_publisher.destroy_node() + rclpy.shutdown() + + +if __name__ == "__main__": + main() diff --git a/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py b/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py new file mode 100644 index 00000000..3fa71003 --- /dev/null +++ b/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py @@ -0,0 +1,57 @@ +# Copyright 2016 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import rclpy +from nav_msgs.msg import Odometry +from rclpy.node import Node + + +class MinimalSubscriber(Node): + def __init__(self): + super().__init__("minimal_subscriber") + self.subscription = self.create_subscription( + Odometry, "/model/bluerov2_heavy/odometry", self.listener_callback, 10 + ) + self.subscription # prevent unused variable warning + + def listener_callback(self, msg): + self.get_logger().info( + "I heard: %f, %f, %f, %f, %f, %f," + % ( + msg.pose.pose.position.x, + msg.pose.pose.position.y, + msg.pose.pose.position.z, + msg.pose.pose.orientation.x, + msg.pose.pose.orientation.y, + msg.pose.pose.orientation.z, + ) + ) + + +def main(args=None): + rclpy.init(args=args) + + minimal_subscriber = MinimalSubscriber() + + rclpy.spin(minimal_subscriber) + + # Destroy the node explicitly + # (optional - otherwise it will be done automatically + # when the garbage collector destroys the node object) + minimal_subscriber.destroy_node() + rclpy.shutdown() + + +if __name__ == "__main__": + main() diff --git a/blue_planner_py/package.xml b/blue_planner_py/package.xml new file mode 100644 index 00000000..7d331f51 --- /dev/null +++ b/blue_planner_py/package.xml @@ -0,0 +1,24 @@ + + + + blue_planner_py + 0.0.0 + python planners + blue + Apache-2.0 + + rclpy + geometry_msgs + nav_msgs + trajectory_msgs + tf_transformation + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/blue_planner_py/resource/blue_planner_py b/blue_planner_py/resource/blue_planner_py new file mode 100644 index 00000000..e69de29b diff --git a/blue_planner_py/setup.cfg b/blue_planner_py/setup.cfg new file mode 100644 index 00000000..3e2eac8d --- /dev/null +++ b/blue_planner_py/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/blue_planner_py +[install] +install_scripts=$base/lib/blue_planner_py diff --git a/blue_planner_py/setup.py b/blue_planner_py/setup.py new file mode 100644 index 00000000..993a9888 --- /dev/null +++ b/blue_planner_py/setup.py @@ -0,0 +1,27 @@ +from setuptools import find_packages, setup + +package_name = "blue_planner_py" + +setup( + name=package_name, + version="0.0.0", + packages=find_packages(exclude=["test"]), + data_files=[ + ("share/ament_index/resource_index/packages", ["resource/" + package_name]), + ("share/" + package_name, ["package.xml"]), + ], + install_requires=["setuptools"], + zip_safe=True, + maintainer="blue", + maintainer_email="agrawaak@oregonstate.edu", + description="TODO: Package description", + license="Apache-2.0", + tests_require=["pytest"], + entry_points={ + "console_scripts": [ + "plan_node = blue_planner_py.plan_node:main", + "publish_to_ismc_ref_node = blue_planner_py.publish_to_ismc_ref_node:main", + "subscribe_to_odom_node = blue_planner_py.subscribe_to_odom_node:main", + ], + }, +) diff --git a/blue_planner_py/test/test_copyright.py b/blue_planner_py/test/test_copyright.py new file mode 100644 index 00000000..97a39196 --- /dev/null +++ b/blue_planner_py/test/test_copyright.py @@ -0,0 +1,25 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_copyright.main import main +import pytest + + +# Remove the `skip` decorator once the source file(s) have a copyright header +@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.') +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found errors' diff --git a/blue_planner_py/test/test_flake8.py b/blue_planner_py/test/test_flake8.py new file mode 100644 index 00000000..27ee1078 --- /dev/null +++ b/blue_planner_py/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_flake8.main import main_with_errors +import pytest + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, \ + 'Found %d code style errors / warnings:\n' % len(errors) + \ + '\n'.join(errors) diff --git a/blue_planner_py/test/test_pep257.py b/blue_planner_py/test/test_pep257.py new file mode 100644 index 00000000..b234a384 --- /dev/null +++ b/blue_planner_py/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_pep257.main import main +import pytest + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found code style errors / warnings' From 4e85046e0da93434b52792f7d30a705ae10f07c8 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 14 Jan 2025 18:31:45 -0800 Subject: [PATCH 60/72] launch files to include namespaces and obstacles in env --- .../bluerov2_heavy_demo_obs.launch.yaml | 33 +++++++++++++++++++ .../launch/bluerov2_heavy_with_obs.launch.py | 33 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml create mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml b/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml new file mode 100644 index 00000000..5b73adb2 --- /dev/null +++ b/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml @@ -0,0 +1,33 @@ +launch: + + - arg: + name: namespace + default: "rob_1" + + - group: + - push-ros-namespace: + namespace: "$(var namespace)" + + - arg: + name: use_sim + default: "false" + + - arg: + name: prefix + default: "rob_1/" + + - let: + name: description_file + value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro + + - let: + name: robot_description + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)') + + - include: + file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml + arg: + - name: robot_description + value: $(var robot_description) + - name: prefix + value: $(var prefix) diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py new file mode 100644 index 00000000..03806290 --- /dev/null +++ b/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py @@ -0,0 +1,33 @@ +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + IncludeLaunchDescription, +) +from launch.substitutions import PathJoinSubstitution +from launch_ros.substitutions import FindPackageShare +from launch_yaml.launch_description_sources import YAMLLaunchDescriptionSource + + +def generate_launch_description(): + args = [ + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + yaml_launch = IncludeLaunchDescription( + YAMLLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "control_integration", + "launch", + "bluerov2_heavy_demo_obs.launch.yaml", + ] + ), + ) + ) + + return LaunchDescription([*args, yaml_launch]) From 90fc26c4d7b9a7cbdd6c4b5812ae161939790845 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 14 Jan 2025 18:37:25 -0800 Subject: [PATCH 61/72] config files for mavros, localization and ardusub with ns ' --- .../config/ardusub/ns_ardusub_manager.yaml | 9 ++++ .../config/ardusub/ns_mavros.yaml | 48 +++++++++++++++++++ .../bluerov2_heavy/ns_localization.yaml | 38 +++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 blue_description/config/ardusub/ns_ardusub_manager.yaml create mode 100644 blue_description/config/ardusub/ns_mavros.yaml create mode 100644 blue_description/config/bluerov2_heavy/ns_localization.yaml diff --git a/blue_description/config/ardusub/ns_ardusub_manager.yaml b/blue_description/config/ardusub/ns_ardusub_manager.yaml new file mode 100644 index 00000000..71ee336c --- /dev/null +++ b/blue_description/config/ardusub/ns_ardusub_manager.yaml @@ -0,0 +1,9 @@ +rob_1: + ardusub_manager: + ros__parameters: + message_intervals: + ids: [31, 32] + rates: [50.0, 50.0] + set_ekf_origin: true + publish_tf: false + prefix: "rob_1/" diff --git a/blue_description/config/ardusub/ns_mavros.yaml b/blue_description/config/ardusub/ns_mavros.yaml new file mode 100644 index 00000000..a7171957 --- /dev/null +++ b/blue_description/config/ardusub/ns_mavros.yaml @@ -0,0 +1,48 @@ +rob_1: + mavros: + ros__parameters: + system_id: 255 + base_link_frame_id: rob_1/base_link + plugin_allowlist: + - sys_status + - command + - imu + - rc_io + - param + - vision* + - local* + - global_position + + mavros_node: + ros__parameters: + base_link_frame: "rob_1/base_link" + map_frame: "map" + odom_frame: "odom" + fcu_url: "tcp://localhost" + gcs_url: "udp://@localhost:14550" + tgt_system: 1 + + local_position: + ros__parameters: + frame_id: "map" + tf: + child_frame_id: "rob_1/base_link" + send: false + + imu: + ros__parameters: + frame_id: "rob_1/base_link" + + global_position: + ros__parameters: + child_frame_id: "rob_1/base_link" + frame_id: "map" + tf: + child_frame_id: "rob_1/base_link" + global_frame_id: "earth" + send: false + + vision_pose: + ros__parameters: + tf/child_frame_id: "rob_1/vision_estimate" + tf/frame_id: map diff --git a/blue_description/config/bluerov2_heavy/ns_localization.yaml b/blue_description/config/bluerov2_heavy/ns_localization.yaml new file mode 100644 index 00000000..501c0338 --- /dev/null +++ b/blue_description/config/bluerov2_heavy/ns_localization.yaml @@ -0,0 +1,38 @@ +rob_1: + camera: + ros__parameters: + port: 5600 + distortion_model: "plumb_bob" + frame: + height: 1080 + width: 1920 + camera_matrix: + [1078.17559, 0.0, 1010.57086, + 0.0, 1076.46176, 463.06243, + 0.0, 0.0, 1.0] + distortion_coefficients: + [0.019645, 0.007271, -0.004324, -0.001628, 0.000000] + projection_matrix: + [1108.25366, 0.0, 1003.75555, 0.0, + 0.0, 1108.39001, 456.92861, 0.0, + 0.0, 0.0, 1.0, 0.0] + + qualisys_mocap: + ros__parameters: + ip: "192.168.254.1" + port: 22223 + version: "1.22" + body: "bluerov" + prefix: "rob_1/" + + qualisys_localizer: + ros__parameters: + update_rate: 30.0 + body: "bluerov" # This should be the same as the body parameter setting for the qualisys_mocap node + prefix: "rob_1/" + + gazebo_localizer: + ros__parameters: + update_rate: 30.0 + gazebo_odom_topic: "/model/rob_1/bluerov2_heavy/odometry" + prefix: "rob_1/" From fcbb383be1383b437bca49b921ec4d3d9bac7f13 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 14 Jan 2025 18:39:36 -0800 Subject: [PATCH 62/72] modified files to include ns --- .../bluerov2_heavy/thrusters.launch.yaml | 19 +++++++++++-------- .../urdf/bluerov2_heavy.config.xacro | 2 +- .../description/bluerov2_heavy/gazebo.xacro | 13 +++++++++---- .../description/bluerov2_heavy/urdf.xacro | 2 +- .../description/camera/gazebo.xacro | 6 +++--- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/blue_bringup/launch/bluerov2_heavy/thrusters.launch.yaml b/blue_bringup/launch/bluerov2_heavy/thrusters.launch.yaml index dba2b883..20cd4b59 100644 --- a/blue_bringup/launch/bluerov2_heavy/thrusters.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy/thrusters.launch.yaml @@ -1,49 +1,52 @@ launch: + - arg: + name: prefix + default: "" - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster1 - args: --x 0.14 --y -0.092 --roll -1.571 --pitch 1.571 --yaw -0.785 --frame-id base_link --child-frame-id thruster1 + args: --x 0.14 --y -0.092 --roll -1.571 --pitch 1.571 --yaw -0.785 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster1 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster2 - args: --x 0.14 --y 0.092 --roll -1.571 --pitch 1.571 --yaw -2.356 --frame-id base_link --child-frame-id thruster2 + args: --x 0.14 --y 0.092 --roll -1.571 --pitch 1.571 --yaw -2.356 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster2 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster3 - args: --x -0.15 --y -0.092 --roll -1.571 --pitch 1.571 --yaw 0.785 --frame-id base_link --child-frame-id thruster3 + args: --x -0.15 --y -0.092 --roll -1.571 --pitch 1.571 --yaw 0.785 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster3 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster4 - args: --x -0.15 --y 0.092 --roll -1.571 --pitch 1.571 --yaw 2.356 --frame-id base_link --child-frame-id thruster4 + args: --x -0.15 --y 0.092 --roll -1.571 --pitch 1.571 --yaw 2.356 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster4 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster5 - args: --x 0.118 --y -0.215 --z 0.064 --frame-id base_link --child-frame-id thruster5 + args: --x 0.118 --y -0.215 --z 0.064 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster5 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster6 - args: --x 0.118 --y 0.215 --z 0.064 --frame-id base_link --child-frame-id thruster6 + args: --x 0.118 --y 0.215 --z 0.064 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster6 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster7 - args: --x -0.118 --y -0.215 --z 0.064 --frame-id base_link --child-frame-id thruster7 + args: --x -0.118 --y -0.215 --z 0.064 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster7 - node: pkg: tf2_ros exec: static_transform_publisher name: base_link_to_thruster8 - args: --x -0.118 --y 0.215 --z 0.064 --frame-id base_link --child-frame-id thruster8 + args: --x -0.118 --y 0.215 --z 0.064 --frame-id $(var prefix)base_link --child-frame-id $(var prefix)thruster8 diff --git a/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro b/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro index ece97666..b9d3c238 100644 --- a/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro +++ b/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro @@ -17,6 +17,6 @@ - + diff --git a/blue_description/description/bluerov2_heavy/gazebo.xacro b/blue_description/description/bluerov2_heavy/gazebo.xacro index 011dc392..b5a60299 100644 --- a/blue_description/description/bluerov2_heavy/gazebo.xacro +++ b/blue_description/description/bluerov2_heavy/gazebo.xacro @@ -2,7 +2,7 @@ - + @@ -20,7 +20,7 @@ 0 0 0 3.142 0 1.571 - imu_sensor + ${prefix}imu_sensor @@ -128,7 +128,7 @@ - + 0 0 0 3.142 0 0 @@ -149,9 +149,14 @@ + + - + diff --git a/blue_description/description/bluerov2_heavy/urdf.xacro b/blue_description/description/bluerov2_heavy/urdf.xacro index 89f91c63..3c2916fb 100644 --- a/blue_description/description/bluerov2_heavy/urdf.xacro +++ b/blue_description/description/bluerov2_heavy/urdf.xacro @@ -26,7 +26,7 @@ - + diff --git a/blue_description/description/camera/gazebo.xacro b/blue_description/description/camera/gazebo.xacro index 0bd0aa7a..3493cefd 100644 --- a/blue_description/description/camera/gazebo.xacro +++ b/blue_description/description/camera/gazebo.xacro @@ -1,6 +1,6 @@ - + @@ -13,7 +13,7 @@ - + 1.0855 @@ -28,7 +28,7 @@ true 10 true - /camera/image_raw + /${prefix}camera/image_raw From 9f0320fa48a0006826dcc83c233b61daa765c613 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 14 Jan 2025 18:42:43 -0800 Subject: [PATCH 63/72] modified localization code to include ns --- .../blue_localization/localizer.py | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/blue_localization/blue_localization/localizer.py b/blue_localization/blue_localization/localizer.py index a12a65f5..92007930 100644 --- a/blue_localization/blue_localization/localizer.py +++ b/blue_localization/blue_localization/localizer.py @@ -49,8 +49,10 @@ ) from scipy.spatial.transform import Rotation as R from sensor_msgs.msg import CameraInfo, Image -from tf2_ros import TransformException # type: ignore -from tf2_ros import Time +from tf2_ros import ( + Time, + TransformException, # type: ignore +) from tf2_ros.buffer import Buffer from tf2_ros.transform_listener import TransformListener @@ -73,6 +75,13 @@ def __init__(self, node_name: str) -> None: Node.__init__(self, node_name) ABC.__init__(self) + # Set frame_names according to namespace + self.declare_parameter("prefix", "") + self.prefix = self.get_parameter("prefix").get_parameter_value().string_value + self.BASE_LINK_FRAME = self.prefix + self.BASE_LINK_FRAME + self.BASE_LINK_FRD_FRAME = self.prefix + self.BASE_LINK_FRD_FRAME + self.CAMERA_FRAME = self.prefix + self.CAMERA_FRAME + self.declare_parameter("update_rate", 30.0) # Provide access to TF2 @@ -143,18 +152,28 @@ def __init__(self, node_name: str) -> None: node_name: The name of the localizer node. """ super().__init__(node_name) - - # Poses are sent to the ArduPilot EKF - self.vision_pose_pub = self.create_publisher( - PoseStamped, - "/mavros/vision_pose/pose", - qos_profile_default, - ) - self.vision_pose_cov_pub = self.create_publisher( - PoseWithCovarianceStamped, - "/mavros/vision_pose/pose_cov", - qos_profile_default, - ) + if self.prefix != "": + self.vision_pose_pub = self.create_publisher( + PoseStamped, + f"/{self.prefix}vision_pose/pose", + qos_profile_default, + ) + self.vision_pose_cov_pub = self.create_publisher( + PoseWithCovarianceStamped, + f"/{self.prefix}vision_pose/pose_cov", + qos_profile_default, + ) + else: + self.vision_pose_pub = self.create_publisher( + PoseStamped, + "/mavros/vision_pose/pose", + qos_profile_default, + ) + self.vision_pose_cov_pub = self.create_publisher( + PoseWithCovarianceStamped, + "/mavros/vision_pose/pose_cov", + qos_profile_default, + ) def publish(self) -> None: """Publish a pose message to the ArduSub EKF.""" @@ -183,7 +202,9 @@ def __init__(self, node_name: str) -> None: # Twists are sent to the ArduPilot EKF self.vision_speed_pub = self.create_publisher( - TwistStamped, "/mavros/vision_speed/speed", qos_profile_default + TwistStamped, + "/mavros/vision_speed/speed", + qos_profile_default, ) self.vision_speed_cov_pub = self.create_publisher( TwistWithCovarianceStamped, @@ -475,7 +496,7 @@ def __init__(self) -> None: self.mocap_sub = self.create_subscription( PoseStamped, - f"/blue/mocap/qualisys/{body}", + "/blue/mocap/qualisys/{body}", self.update_pose_cb, qos_profile_sensor_data, ) From 384866933b219f9c91019a40be24b4faeac19d0b Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 14 Jan 2025 18:44:25 -0800 Subject: [PATCH 64/72] launch file with ns and world file for including obstacles --- .../bluerov2_heavy_obs.launch.yaml | 138 +++++ .../worlds/underwater_with_obstacles.world | 547 ++++++++++++++++++ 2 files changed, 685 insertions(+) create mode 100644 blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml create mode 100644 blue_description/gazebo/worlds/underwater_with_obstacles.world diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml new file mode 100644 index 00000000..cdae1bf6 --- /dev/null +++ b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml @@ -0,0 +1,138 @@ +launch: + + - let: + name: model_name + value: bluerov2_heavy + + # Arguments + - arg: + name: use_camera + default: "false" + + - arg: + name: use_mocap + default: "false" + + - arg: + name: localization_source + default: gazebo + choice: + - value: gazebo + - value: mocap + - value: camera + + - arg: + name: use_sim + default: "false" + + - arg: + name: prefix + default: "" + + - arg: + name: use_rviz + default: "false" + + - arg: + name: use_manager + default: "true" + + - arg: + name: rviz_config + default: $(find-pkg-share blue_description)/rviz/$(var model_name).rviz + + - arg: + name: gazebo_world_file + default: $(find-pkg-share blue_description)/gazebo/worlds/underwater_with_obstacles.world + + - arg: + name: mavros_file + default: $(find-pkg-share blue_description)/config/ardusub/ns_mavros.yaml + + - arg: + name: manager_file + default: $(find-pkg-share blue_description)/config/ardusub/ns_ardusub_manager.yaml + + - arg: + name: ardusub_params_file + default: $(find-pkg-share blue_description)/config/$(var model_name)/ardusub.parm + + - arg: + name: localization_file + default: $(find-pkg-share blue_description)/config/$(var model_name)/ns_localization.yaml + + # Load the description file + - let: + name: description_file + value: $(find-pkg-share blue_description)/description/$(var model_name)/config.xacro + + - arg: + name: robot_description + default: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)') + + # Nodes + + - node: + pkg: robot_state_publisher + exec: robot_state_publisher + param: + - name: robot_description + value: $(var robot_description) + - name: use_sim_time + value: $(var use_sim) + - name: tf_prefix + value: $(var prefix) + + - node: + pkg: rviz2 + exec: rviz2 + if: $(var use_rviz) + args: -d $(var rviz_config) + param: + - name: robot_description + value: $(var robot_description) + +# Includes + - include: + file: $(find-pkg-share ardusub_bringup)/launch/ardusub.launch.yaml + arg: + - name: mavros_file + value: $(var mavros_file) + - name: gazebo_world_file + value: $(var gazebo_world_file) + - name: ardusub_params_file + value: $(var ardusub_params_file) + - name: manager_file + value: $(var manager_file) + - name: model_name + value: $(var model_name) + - name: use_sim + value: $(var use_sim) + - name: use_manager + value: $(var use_manager) + + - include: + file: $(find-pkg-share blue_localization)/localization.launch.py + arg: + - name: localization_source + value: $(var localization_source) + - name: use_camera + value: $(var use_camera) + - name: use_mocap + value: $(var use_mocap) + - name: use_sim_time + value: $(var use_sim) + - name: config_filepath + value: $(var localization_file) + + - include: + file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml + arg: + - name: prefix + value: $(var prefix) + + - include: + file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml + arg: + - name: prefix + value: $(var prefix) diff --git a/blue_description/gazebo/worlds/underwater_with_obstacles.world b/blue_description/gazebo/worlds/underwater_with_obstacles.world new file mode 100644 index 00000000..3034c122 --- /dev/null +++ b/blue_description/gazebo/worlds/underwater_with_obstacles.world @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + 1000 + + 0 + 1 + + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun + + + + model://sand_heightmap + 0 7 -10 0 0 0 + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Coast Water + + 0 0 0 0 0 0 + + + + 1.0 1.0 1.0 + 0.8 0.8 0.8 + + + + + 50 0 150 0 0 0 + 1 1 1 1 + .1 .1 .1 1 + 0.3 0.3 -1 + false + + + + + 6 0 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 970.0 + + + + + 1 1 1 + + + + + + + + 1 2 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 6 -6 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 6 6 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 4 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 971.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 4 3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 965.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 3 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 965.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 2 -4 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 968.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 2 0 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 969.0 + + + + + 1 1 1 + + + + + + + + 1 4 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 1 4 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 1 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + From 3d6c022366613cd94c1af1638176054ab48dd8ff Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 18 Feb 2025 19:20:24 -0800 Subject: [PATCH 65/72] refactored --- .../bluerov2_heavy_obs.launch.yaml | 138 ----- .../bluerov2_heavy_demo_obs.launch.yaml | 33 -- .../launch/bluerov2_heavy_with_obs.launch.py | 33 -- .../worlds/underwater_with_obstacles.world | 547 ------------------ 4 files changed, 751 deletions(-) delete mode 100644 blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml delete mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml delete mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py delete mode 100644 blue_description/gazebo/worlds/underwater_with_obstacles.world diff --git a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml b/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml deleted file mode 100644 index cdae1bf6..00000000 --- a/blue_bringup/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml +++ /dev/null @@ -1,138 +0,0 @@ -launch: - - - let: - name: model_name - value: bluerov2_heavy - - # Arguments - - arg: - name: use_camera - default: "false" - - - arg: - name: use_mocap - default: "false" - - - arg: - name: localization_source - default: gazebo - choice: - - value: gazebo - - value: mocap - - value: camera - - - arg: - name: use_sim - default: "false" - - - arg: - name: prefix - default: "" - - - arg: - name: use_rviz - default: "false" - - - arg: - name: use_manager - default: "true" - - - arg: - name: rviz_config - default: $(find-pkg-share blue_description)/rviz/$(var model_name).rviz - - - arg: - name: gazebo_world_file - default: $(find-pkg-share blue_description)/gazebo/worlds/underwater_with_obstacles.world - - - arg: - name: mavros_file - default: $(find-pkg-share blue_description)/config/ardusub/ns_mavros.yaml - - - arg: - name: manager_file - default: $(find-pkg-share blue_description)/config/ardusub/ns_ardusub_manager.yaml - - - arg: - name: ardusub_params_file - default: $(find-pkg-share blue_description)/config/$(var model_name)/ardusub.parm - - - arg: - name: localization_file - default: $(find-pkg-share blue_description)/config/$(var model_name)/ns_localization.yaml - - # Load the description file - - let: - name: description_file - value: $(find-pkg-share blue_description)/description/$(var model_name)/config.xacro - - - arg: - name: robot_description - default: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)') - - # Nodes - - - node: - pkg: robot_state_publisher - exec: robot_state_publisher - param: - - name: robot_description - value: $(var robot_description) - - name: use_sim_time - value: $(var use_sim) - - name: tf_prefix - value: $(var prefix) - - - node: - pkg: rviz2 - exec: rviz2 - if: $(var use_rviz) - args: -d $(var rviz_config) - param: - - name: robot_description - value: $(var robot_description) - -# Includes - - include: - file: $(find-pkg-share ardusub_bringup)/launch/ardusub.launch.yaml - arg: - - name: mavros_file - value: $(var mavros_file) - - name: gazebo_world_file - value: $(var gazebo_world_file) - - name: ardusub_params_file - value: $(var ardusub_params_file) - - name: manager_file - value: $(var manager_file) - - name: model_name - value: $(var model_name) - - name: use_sim - value: $(var use_sim) - - name: use_manager - value: $(var use_manager) - - - include: - file: $(find-pkg-share blue_localization)/localization.launch.py - arg: - - name: localization_source - value: $(var localization_source) - - name: use_camera - value: $(var use_camera) - - name: use_mocap - value: $(var use_mocap) - - name: use_sim_time - value: $(var use_sim) - - name: config_filepath - value: $(var localization_file) - - - include: - file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml - arg: - - name: prefix - value: $(var prefix) - - - include: - file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml - arg: - - name: prefix - value: $(var prefix) diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml b/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml deleted file mode 100644 index 5b73adb2..00000000 --- a/blue_demos/control_integration/launch/bluerov2_heavy_demo_obs.launch.yaml +++ /dev/null @@ -1,33 +0,0 @@ -launch: - - - arg: - name: namespace - default: "rob_1" - - - group: - - push-ros-namespace: - namespace: "$(var namespace)" - - - arg: - name: use_sim - default: "false" - - - arg: - name: prefix - default: "rob_1/" - - - let: - name: description_file - value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro - - - let: - name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)') - - - include: - file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/bluerov2_heavy_obs.launch.yaml - arg: - - name: robot_description - value: $(var robot_description) - - name: prefix - value: $(var prefix) diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py deleted file mode 100644 index 03806290..00000000 --- a/blue_demos/control_integration/launch/bluerov2_heavy_with_obs.launch.py +++ /dev/null @@ -1,33 +0,0 @@ -from launch import LaunchDescription -from launch.actions import ( - DeclareLaunchArgument, - IncludeLaunchDescription, -) -from launch.substitutions import PathJoinSubstitution -from launch_ros.substitutions import FindPackageShare -from launch_yaml.launch_description_sources import YAMLLaunchDescriptionSource - - -def generate_launch_description(): - args = [ - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - ] - - yaml_launch = IncludeLaunchDescription( - YAMLLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "control_integration", - "launch", - "bluerov2_heavy_demo_obs.launch.yaml", - ] - ), - ) - ) - - return LaunchDescription([*args, yaml_launch]) diff --git a/blue_description/gazebo/worlds/underwater_with_obstacles.world b/blue_description/gazebo/worlds/underwater_with_obstacles.world deleted file mode 100644 index 3034c122..00000000 --- a/blue_description/gazebo/worlds/underwater_with_obstacles.world +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - - - - - - - - - - - - - - 1000 - - 0 - 1 - - - - - - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun - - - - model://sand_heightmap - 0 7 -10 0 0 0 - - - - - https://fuel.gazebosim.org/1.0/OpenRobotics/models/Coast Water - - 0 0 0 0 0 0 - - - - 1.0 1.0 1.0 - 0.8 0.8 0.8 - - - - - 50 0 150 0 0 0 - 1 1 1 1 - .1 .1 .1 1 - 0.3 0.3 -1 - false - - - - - 6 0 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 970.0 - - - - - 1 1 1 - - - - - - - - 1 2 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - true - 6 -6 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 900.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - true - 6 6 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 900.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - - 4 -3 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 971.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - - 4 3 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 965.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - - 3 -3 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 965.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - - 2 -4 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 968.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - - 2 0 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 969.0 - - - - - 1 1 1 - - - - - - - - 1 4 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - true - 1 4 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 900.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - true - 1 -3 0 0 0 0 - - - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - 900.0 - - - - - 1 1 1 - - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - - - From 2f964080b3b3722a31dc6d3ef8049c27356245d9 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 18 Feb 2025 19:25:08 -0800 Subject: [PATCH 66/72] compatible with prefixes and namespaces --- .../ns_bluerov2_heavy.launch.yaml | 168 ++++++++++++++++++ .../bluerov2_heavy.ros2_control.xacro | 16 +- .../urdf/bluerov2_heavy.config.xacro | 15 +- .../launch/obstacles.launch.yaml | 18 ++ .../description/bluerov2_heavy/gazebo.xacro | 5 +- .../description/camera/gazebo.xacro | 4 +- 6 files changed, 217 insertions(+), 9 deletions(-) create mode 100644 blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml create mode 100644 blue_demos/control_integration/launch/obstacles.launch.yaml diff --git a/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml b/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml new file mode 100644 index 00000000..2bfa0089 --- /dev/null +++ b/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml @@ -0,0 +1,168 @@ +launch: + + - let: + name: model_name + value: bluerov2_heavy + + # Arguments + - arg: + name: use_camera + default: "false" + + - arg: + name: use_mocap + default: "false" + + - arg: + name: localization_source + default: gazebo + choice: + - value: gazebo + - value: mocap + - value: camera + + - arg: + name: use_sim + default: "false" + + - arg: + name: prefix + default: "" + + - arg: + name: use_rviz + default: "false" + + - arg: + name: use_manager + default: "true" + + - arg: + name: rviz_config + default: $(find-pkg-share blue_description)/rviz/$(var model_name).rviz + + - arg: + name: mavros_file + default: $(find-pkg-share blue_description)/config/ardusub/ns_mavros.yaml + + - arg: + name: manager_file + default: $(find-pkg-share blue_description)/config/ardusub/ns_ardusub_manager.yaml + + - arg: + name: ardusub_params_file + default: $(find-pkg-share blue_description)/config/$(var model_name)/ardusub.parm + + - arg: + name: localization_file + default: $(find-pkg-share blue_description)/config/$(var model_name)/ns_localization.yaml + + # Load the description file + - let: + name: description_file + value: $(find-pkg-share blue_description)/description/$(var model_name)/config.xacro + + - arg: + name: robot_description + default: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim)') + + - arg: + name: sitl_file + default: $(find-pkg-share ardusub_bringup)/launch/sitl_multi_robot.launch.yaml + + - arg: + name: ardusub_instance + default: "0" + + - arg: + name: sysid_thismav + default: "1" + + - arg: + name: rob_x + default: "0.0" + + - arg: + name: rob_y + default: "0.0" + + - arg: + name: rob_z + default: "0.0" + + # Nodes + + - node: + pkg: robot_state_publisher + exec: robot_state_publisher + param: + - name: robot_description + value: $(var robot_description) + - name: use_sim_time + value: $(var use_sim) + - name: tf_prefix + value: $(var prefix) + + - node: + pkg: rviz2 + exec: rviz2 + if: $(var use_rviz) + args: -d $(var rviz_config) + param: + - name: robot_description + value: $(var robot_description) + +# Includes + - include: + file: $(find-pkg-share ardusub_bringup)/launch/ns_ardusub.launch.yaml + arg: + - name: mavros_file + value: $(var mavros_file) + - name: ardusub_params_file + value: $(var ardusub_params_file) + - name: manager_file + value: $(var manager_file) + - name: model_name + value: $(var model_name) + - name: use_sim + value: $(var use_sim) + - name: use_manager + value: $(var use_manager) + - name: sitl_file + value: $(var sitl_file) + - name: ardusub_instance + value: $(var ardusub_instance) + - name: sysid_thismav + value: $(var sysid_thismav) + - name: rob_x + value: $(var rob_x) + - name: rob_y + value: $(var rob_y) + - name: rob_z + value: $(var rob_z) + + - include: + file: $(find-pkg-share blue_localization)/localization.launch.py + arg: + - name: localization_source + value: $(var localization_source) + - name: use_camera + value: $(var use_camera) + - name: use_mocap + value: $(var use_mocap) + - name: use_sim_time + value: $(var use_sim) + - name: config_filepath + value: $(var localization_file) + + - include: + file: $(find-pkg-share blue_bringup)/launch/$(var model_name)/thrusters.launch.yaml + arg: + - name: prefix + value: $(var prefix) + + - include: + file: $(find-pkg-share message_transforms)/launch/tf.launch.yaml + arg: + - name: prefix + value: $(var prefix) diff --git a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro index 40a622e4..da19f0c2 100644 --- a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro +++ b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro @@ -1,13 +1,14 @@ - + thruster_hardware/ThrusterHardware ${max_set_param_attempts} - true + ${prefix} @@ -67,6 +68,17 @@ + + + + mavros_odom_sensor/MavrosOdomSensor + ${max_set_param_attempts} + ${mavros_odom_topic} + ${prefix} + + + + diff --git a/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro b/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro index b9d3c238..c25a7119 100644 --- a/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro +++ b/blue_demos/control_integration/description/urdf/bluerov2_heavy.config.xacro @@ -3,6 +3,11 @@ + + + + + @@ -11,12 +16,16 @@ - + - + filename="$(find + blue_demos)/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro" /> + diff --git a/blue_demos/control_integration/launch/obstacles.launch.yaml b/blue_demos/control_integration/launch/obstacles.launch.yaml new file mode 100644 index 00000000..2239f677 --- /dev/null +++ b/blue_demos/control_integration/launch/obstacles.launch.yaml @@ -0,0 +1,18 @@ +launch: + + # Arguments + - arg: + name: gazebo_world_file + + # Nodes + - node: + pkg: ros_gz_bridge + exec: parameter_bridge + args: /clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock + + # Includes + - include: + file: $(find-pkg-share ros_gz_sim)/launch/gz_sim.launch.py + arg: + - name: gz_args + value: -v 4 -r $(var gazebo_world_file) diff --git a/blue_description/description/bluerov2_heavy/gazebo.xacro b/blue_description/description/bluerov2_heavy/gazebo.xacro index b5a60299..b7c67888 100644 --- a/blue_description/description/bluerov2_heavy/gazebo.xacro +++ b/blue_description/description/bluerov2_heavy/gazebo.xacro @@ -1,13 +1,14 @@ - + 127.0.0.1 - 9002 + ${fdm_port_in} + ${fdm_port_out} 5 1 diff --git a/blue_description/description/camera/gazebo.xacro b/blue_description/description/camera/gazebo.xacro index 3493cefd..762bce7c 100644 --- a/blue_description/description/camera/gazebo.xacro +++ b/blue_description/description/camera/gazebo.xacro @@ -3,13 +3,13 @@ - + From 6abfd465bf51845d3c40ff5c83ce3c60786a33a5 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 18 Feb 2025 19:27:06 -0800 Subject: [PATCH 67/72] Multi robot teleop demo --- blue_demos/CMakeLists.txt | 7 + .../rob_1_bluerov2_heavy_controllers.yaml | 163 ++++++ .../config/rob_1_transforms.yaml | 11 + .../rob_3_bluerov2_heavy_controllers.yaml | 163 ++++++ .../config/rob_3_transforms.yaml | 11 + ...rob_1_bluerov2_heavy_controllers.launch.py | 189 ++++++ .../rob_1_bluerov2_heavy_demo.launch.yaml | 118 ++++ ...rob_3_bluerov2_heavy_controllers.launch.py | 189 ++++++ .../rob_3_bluerov2_heavy_demo.launch.yaml | 110 ++++ .../config/ardusub/rob_1_ardusub_manager.yaml | 9 + .../config/ardusub/rob_1_mavros.yaml | 49 ++ .../config/ardusub/rob_3_ardusub_manager.yaml | 9 + .../config/ardusub/rob_3_mavros.yaml | 48 ++ .../bluerov2_heavy/rob_1_localization.yaml | 39 ++ .../bluerov2_heavy/rob_3_localization.yaml | 39 ++ .../worlds/underwater_with_obstacles.world | 553 ++++++++++++++++++ .../config/rob_1_transforms.yaml | 10 + .../config/rob_3_transforms.yaml | 10 + 18 files changed, 1727 insertions(+) create mode 100644 blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_controllers.yaml create mode 100644 blue_demos/multi_robot/control_integration/config/rob_1_transforms.yaml create mode 100644 blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_controllers.yaml create mode 100644 blue_demos/multi_robot/control_integration/config/rob_3_transforms.yaml create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml create mode 100644 blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml create mode 100644 blue_demos/multi_robot/description/config/ardusub/rob_1_mavros.yaml create mode 100644 blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml create mode 100644 blue_demos/multi_robot/description/config/ardusub/rob_3_mavros.yaml create mode 100644 blue_demos/multi_robot/description/config/bluerov2_heavy/rob_1_localization.yaml create mode 100644 blue_demos/multi_robot/description/config/bluerov2_heavy/rob_3_localization.yaml create mode 100644 blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world create mode 100644 blue_demos/multi_robot/teleoperation/config/rob_1_transforms.yaml create mode 100644 blue_demos/multi_robot/teleoperation/config/rob_3_transforms.yaml diff --git a/blue_demos/CMakeLists.txt b/blue_demos/CMakeLists.txt index 977d6090..7cbd9d3c 100644 --- a/blue_demos/CMakeLists.txt +++ b/blue_demos/CMakeLists.txt @@ -16,4 +16,11 @@ install( DESTINATION share/blue_demos/teleoperation ) +install( + DIRECTORY multi_robot/control_integration + multi_robot/teleoperation + multi_robot/description + DESTINATION share/blue_demos/multi_robot +) + ament_package() diff --git a/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_controllers.yaml b/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_controllers.yaml new file mode 100644 index 00000000..e9badfaa --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_controllers.yaml @@ -0,0 +1,163 @@ +rob_1/controller_manager: + ros__parameters: + update_rate: 100 # Hz + + integral_sliding_mode_controller: + type: velocity_controllers/IntegralSlidingModeController + + thruster_allocation_matrix_controller: + type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController + + thruster1_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster2_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster3_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster4_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster5_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster6_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster7_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster8_controller: + type: thruster_controllers/PolynomialThrustCurveController + +rob_1/integral_sliding_mode_controller: + ros__parameters: + use_external_measured_states: true + reference_controller: thruster_allocation_matrix_controller + gains: + rho: 20.0 + lambda: 200.0 + Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] + tf: + base_frame: "rob_1/base_link_fsd" + odom_frame: "map_ned" + hydrodynamics: + mass: 13.5 + weight: 114.80 + buoyancy: 112.80 + moments_of_inertia: [0.16, 0.16, 0.16] + added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] + center_of_buoyancy: [0.0, 0.0, 0.0] + center_of_gravity: [0.0, 0.0, 0.0] + linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] + quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + +rob_1/thruster_allocation_matrix_controller: + ros__parameters: + thrusters: + - rob_1/thruster1_joint + - rob_1/thruster2_joint + - rob_1/thruster3_joint + - rob_1/thruster4_joint + - rob_1/thruster5_joint + - rob_1/thruster6_joint + - rob_1/thruster7_joint + - rob_1/thruster8_joint + reference_controllers: + - thruster1_controller + - thruster2_controller + - thruster3_controller + - thruster4_controller + - thruster5_controller + - thruster6_controller + - thruster7_controller + - thruster8_controller + tam: + x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] + y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] + z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] + ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] + rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] + +rob_1/thruster1_controller: + ros__parameters: + thruster: rob_1/thruster1_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster2_controller: + ros__parameters: + thruster: rob_1/thruster2_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster3_controller: + ros__parameters: + thruster: rob_1/thruster3_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster4_controller: + ros__parameters: + thruster: rob_1/thruster4_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster5_controller: + ros__parameters: + thruster: rob_1/thruster5_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster6_controller: + ros__parameters: + thruster: rob_1/thruster6_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster7_controller: + ros__parameters: + thruster: rob_1/thruster7_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster8_controller: + ros__parameters: + thruster: rob_1/thruster8_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/multi_robot/control_integration/config/rob_1_transforms.yaml b/blue_demos/multi_robot/control_integration/config/rob_1_transforms.yaml new file mode 100644 index 00000000..fe331004 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_1_transforms.yaml @@ -0,0 +1,11 @@ +rob_1/control_integration/message_transforms: + ros__parameters: + + incoming_topics: + - /rob_1/local_position/velocity_body + + transforms: + /rob_1/local_position/velocity_body: + outgoing_topic: /rob_1/integral_sliding_mode_controller/system_state + message_type: geometry_msgs/msg/TwistStamped + frame_id: rob_1/base_link_fsd diff --git a/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_controllers.yaml b/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_controllers.yaml new file mode 100644 index 00000000..52280988 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_controllers.yaml @@ -0,0 +1,163 @@ +rob_3/controller_manager: + ros__parameters: + update_rate: 100 # Hz + + integral_sliding_mode_controller: + type: velocity_controllers/IntegralSlidingModeController + + thruster_allocation_matrix_controller: + type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController + + thruster1_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster2_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster3_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster4_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster5_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster6_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster7_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster8_controller: + type: thruster_controllers/PolynomialThrustCurveController + +rob_3/integral_sliding_mode_controller: + ros__parameters: + use_external_measured_states: true + reference_controller: thruster_allocation_matrix_controller + gains: + rho: 20.0 + lambda: 200.0 + Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] + tf: + base_frame: "rob_3/base_link_fsd" + odom_frame: "map_ned" + hydrodynamics: + mass: 13.5 + weight: 114.80 + buoyancy: 112.80 + moments_of_inertia: [0.16, 0.16, 0.16] + added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] + center_of_buoyancy: [0.0, 0.0, 0.0] + center_of_gravity: [0.0, 0.0, 0.0] + linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] + quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + +rob_3/thruster_allocation_matrix_controller: + ros__parameters: + thrusters: + - rob_3/thruster1_joint + - rob_3/thruster2_joint + - rob_3/thruster3_joint + - rob_3/thruster4_joint + - rob_3/thruster5_joint + - rob_3/thruster6_joint + - rob_3/thruster7_joint + - rob_3/thruster8_joint + reference_controllers: + - thruster1_controller + - thruster2_controller + - thruster3_controller + - thruster4_controller + - thruster5_controller + - thruster6_controller + - thruster7_controller + - thruster8_controller + tam: + x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] + y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] + z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] + ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] + rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] + +rob_3/thruster1_controller: + ros__parameters: + thruster: rob_3/thruster1_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster2_controller: + ros__parameters: + thruster: rob_3/thruster2_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster3_controller: + ros__parameters: + thruster: rob_3/thruster3_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster4_controller: + ros__parameters: + thruster: rob_3/thruster4_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster5_controller: + ros__parameters: + thruster: rob_3/thruster5_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster6_controller: + ros__parameters: + thruster: rob_3/thruster6_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster7_controller: + ros__parameters: + thruster: rob_3/thruster7_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster8_controller: + ros__parameters: + thruster: rob_3/thruster8_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/multi_robot/control_integration/config/rob_3_transforms.yaml b/blue_demos/multi_robot/control_integration/config/rob_3_transforms.yaml new file mode 100644 index 00000000..75ee4f0c --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_3_transforms.yaml @@ -0,0 +1,11 @@ +rob_3/control_integration/message_transforms: + ros__parameters: + + incoming_topics: + - /rob_3/local_position/velocity_body + + transforms: + /rob_3/local_position/velocity_body: + outgoing_topic: /rob_3/integral_sliding_mode_controller/system_state + message_type: geometry_msgs/msg/TwistStamped + frame_id: rob_3/base_link_fsd diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py new file mode 100644 index 00000000..d0600f47 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py @@ -0,0 +1,189 @@ +# Copyright 2024, Evan Palmer +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + GroupAction, + IncludeLaunchDescription, + RegisterEventHandler, +) +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution +from launch_ros.actions import Node, PushROSNamespace +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description() -> LaunchDescription: + """Generate a launch description for the BlueROV2. + This should be launched after MAVROS has fully loaded. + """ + args = [ + DeclareLaunchArgument( + "prefix", + default_value="rob_1/", + description=( + "The prefix of the model. This is useful for multi-robot setups." + " Expected format '/'." + ), + ), + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + # The ISMC expects state information to be provided in the FSD frame + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_1_transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), + ) + + message_transformer_with_ns = GroupAction( + actions=[ + PushROSNamespace("rob_1"), + message_transformer, + ] + ) + + controller_manager = Node( + package="controller_manager", + executable="ros2_control_node", + output="both", + namespace="rob_1", + parameters=[ + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_1_bluerov2_heavy_controllers.yaml", + ] + ), + ], + remappings=[ + ("controller_manager/robot_description", "robot_description"), + ], + ) + + velocity_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "integral_sliding_mode_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + + thruster_spawners = [ + Node( + package="controller_manager", + executable="spawner", + arguments=[ + f"thruster{i + 1}_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + for i in range(8) # BlueROV2 Heavy has 8 thrusters + ] + + delay_thruster_spawners = [] + for i, thruster_spawner in enumerate(thruster_spawners): + if not len(delay_thruster_spawners): + delay_thruster_spawners.append( + thruster_spawner, + ) + else: + delay_thruster_spawners.append( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[i - 1], + on_exit=[thruster_spawner], + ) + ) + ) + + tam_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "thruster_allocation_matrix_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + + delay_tam_controller_spawner_after_thruster_controller_spawners = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[-1], + on_exit=[tam_controller_spawner], + ) + ) + ) + + delay_velocity_controller_spawner_after_tam_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=tam_controller_spawner, + on_exit=[velocity_controller_spawner], + ) + ) + ) + + return LaunchDescription( + [ + *args, + message_transformer_with_ns, + controller_manager, + *delay_thruster_spawners, + delay_tam_controller_spawner_after_thruster_controller_spawners, + delay_velocity_controller_spawner_after_tam_controller_spawner, + ] + ) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml new file mode 100644 index 00000000..44ee01db --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml @@ -0,0 +1,118 @@ +launch: + + - arg: + name: namespace + default: "rob_1" + + - arg: + name: gazebo_world_file + default: $(find-pkg-share blue_demos)/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world + + - arg: + name: use_sim + default: "false" + + - arg: + name: prefix + default: "rob_1/" + + - arg: + name: use_rviz + default: "false" + + - arg: + name: mavros_file + default: $(find-pkg-share blue_demos)/multi_robot/description/config/ardusub/rob_1_mavros.yaml + + - let: + name: manager_file + value: $(find-pkg-share blue_demos)/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml + + - let: + name: localization_file + value: $(find-pkg-share blue_demos)/multi_robot/description/config/bluerov2_heavy/rob_1_localization.yaml + + - let: + name: ardusub_instance + value: "0" + + - let: + name: sysid_thismav + value: "1" + + - let: + name: rob_x + value: "0.0" + + - let: + name: rob_y + value: "4.0" + + - let: + name: rob_z + value: "0.0" + + - let: + name: sitl_file + value: $(find-pkg-share ardusub_bringup)/launch/sitl_multi_robot.launch.yaml + + - let: + name: fdm_port_in + value: "9002" + + - let: + name: fdm_port_out + value: "9003" + + - let: + name: use_mavros_odom + value: "true" + + - let: + name: mavros_odom_topic + value: /rob_1/local_position/odom + + - group: + - push-ros-namespace: + namespace: "$(var namespace)" + + - let: + name: description_file + value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro + + - let: + name: robot_description + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') + + - include: + file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml + arg: + - name: robot_description + value: $(var robot_description) + - name: prefix + value: $(var prefix) + - name: mavros_file + value: $(var mavros_file) + - name: manager_file + value: $(var manager_file) + - name: sitl_file + value: $(var sitl_file) + - name: ardusub_instance + value: $(var ardusub_instance) + - name: sysid_thismav + value: $(var sysid_thismav) + - name: localization_file + value: $(var localization_file) + - name: rob_x + value: $(var rob_x) + - name: rob_y + value: $(var rob_y) + - name: rob_z + value: $(var rob_z) + + #Spawn obstacles + - include: + file: $(find-pkg-share blue_demos)/control_integration/launch/obstacles.launch.yaml + arg: + - name: gazebo_world_file + value: $(var gazebo_world_file) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py new file mode 100644 index 00000000..3d10968d --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py @@ -0,0 +1,189 @@ +# Copyright 2024, Evan Palmer +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + GroupAction, + IncludeLaunchDescription, + RegisterEventHandler, +) +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution +from launch_ros.actions import Node, PushROSNamespace +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description() -> LaunchDescription: + """Generate a launch description for the BlueROV2. + This should be launched after MAVROS has fully loaded. + """ + args = [ + DeclareLaunchArgument( + "prefix", + default_value="rob_3/", + description=( + "The prefix of the model. This is useful for multi-robot setups." + " Expected format '/'." + ), + ), + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + # The ISMC expects state information to be provided in the FSD frame + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_3_transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), + ) + + message_transformer_with_ns = GroupAction( + actions=[ + PushROSNamespace("rob_3"), + message_transformer, + ] + ) + + controller_manager = Node( + package="controller_manager", + executable="ros2_control_node", + output="both", + namespace="rob_3", + parameters=[ + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_3_bluerov2_heavy_controllers.yaml", + ] + ), + ], + remappings=[ + ("controller_manager/robot_description", "robot_description"), + ], + ) + + velocity_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "integral_sliding_mode_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + + thruster_spawners = [ + Node( + package="controller_manager", + executable="spawner", + arguments=[ + f"thruster{i + 1}_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + for i in range(8) # BlueROV2 Heavy has 8 thrusters + ] + + delay_thruster_spawners = [] + for i, thruster_spawner in enumerate(thruster_spawners): + if not len(delay_thruster_spawners): + delay_thruster_spawners.append( + thruster_spawner, + ) + else: + delay_thruster_spawners.append( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[i - 1], + on_exit=[thruster_spawner], + ) + ) + ) + + tam_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "thruster_allocation_matrix_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + + delay_tam_controller_spawner_after_thruster_controller_spawners = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[-1], + on_exit=[tam_controller_spawner], + ) + ) + ) + + delay_velocity_controller_spawner_after_tam_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=tam_controller_spawner, + on_exit=[velocity_controller_spawner], + ) + ) + ) + + return LaunchDescription( + [ + *args, + message_transformer_with_ns, + controller_manager, + *delay_thruster_spawners, + delay_tam_controller_spawner_after_thruster_controller_spawners, + delay_velocity_controller_spawner_after_tam_controller_spawner, + ] + ) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml new file mode 100644 index 00000000..2f8418a3 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml @@ -0,0 +1,110 @@ +launch: + + - arg: + name: namespace + default: "rob_3" + + - arg: + name: gazebo_world_file + default: $(find-pkg-share blue_demos)/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world + + - arg: + name: use_sim + default: "false" + + - arg: + name: prefix + default: "rob_3/" + + - arg: + name: use_rviz + default: "false" + + - arg: + name: mavros_file + default: $(find-pkg-share blue_description)/config/ardusub/rob_3_mavros.yaml + + - let: + name: manager_file + value: $(find-pkg-share blue_description)/config/ardusub/ROB_3_ardusub_manager.yaml + + - let: + name: localization_file + value: $(find-pkg-share blue_description)/config/bluerov2_heavy/ROB_3_localization.yaml + + - let: + name: ardusub_instance + value: "1" + + - let: + name: sysid_thismav + value: "2" + + - let: + name: rob_x + value: "0.0" + + - let: + name: rob_y + value: "0.0" + + - let: + name: rob_z + value: "0.0" + + - let: + name: sitl_file + value: $(find-pkg-share ardusub_bringup)/launch/sitl_multi_robot.launch.yaml + + - let: + name: fdm_port_in + value: "9012" + + - let: + name: fdm_port_out + value: "9013" + + - group: + - push-ros-namespace: + namespace: "$(var namespace)" + + - let: + name: description_file + value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro + + - let: + name: robot_description + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out)') + + - include: + file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml + arg: + - name: robot_description + value: $(var robot_description) + - name: prefix + value: $(var prefix) + - name: mavros_file + value: $(var mavros_file) + - name: manager_file + value: $(var manager_file) + - name: sitl_file + value: $(var sitl_file) + - name: ardusub_instance + value: $(var ardusub_instance) + - name: sysid_thismav + value: $(var sysid_thismav) + - name: localization_file + value: $(var localization_file) + - name: rob_x + value: $(var rob_x) + - name: rob_y + value: $(var rob_y) + - name: rob_z + value: $(var rob_z) + + #Spawn obstacles + # - include: + # file: $(find-pkg-share blue_demos)/control_integration/launch/obstacles.launch.yaml + # arg: + # - name: gazebo_world_file + # value: $(var gazebo_world_file) diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml new file mode 100644 index 00000000..71ee336c --- /dev/null +++ b/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml @@ -0,0 +1,9 @@ +rob_1: + ardusub_manager: + ros__parameters: + message_intervals: + ids: [31, 32] + rates: [50.0, 50.0] + set_ekf_origin: true + publish_tf: false + prefix: "rob_1/" diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_1_mavros.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_1_mavros.yaml new file mode 100644 index 00000000..e2268fca --- /dev/null +++ b/blue_demos/multi_robot/description/config/ardusub/rob_1_mavros.yaml @@ -0,0 +1,49 @@ +rob_1: + mavros: + ros__parameters: + system_id: 255 + base_link_frame_id: rob_1/base_link + plugin_allowlist: + - sys_status + - command + - imu + - rc_io + - param + - vision* + - local* + - global_position + + mavros_node: + ros__parameters: + base_link_frame: "rob_1/base_link" + map_frame: "map" + odom_frame: "odom" + fcu_url: "tcp://localhost:5760" + # gcs_url: "udp://@localhost:14550" + gcs_url: "" + tgt_system: 1 + + local_position: + ros__parameters: + frame_id: "map" + tf: + child_frame_id: "rob_1/base_link" + send: false + + imu: + ros__parameters: + frame_id: "rob_1/base_link" + + global_position: + ros__parameters: + child_frame_id: "rob_1/base_link" + frame_id: "map" + tf: + child_frame_id: "rob_1/base_link" + global_frame_id: "earth" + send: false + + vision_pose: + ros__parameters: + tf/child_frame_id: "rob_1/vision_estimate" + tf/frame_id: map diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml new file mode 100644 index 00000000..8e414ea3 --- /dev/null +++ b/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml @@ -0,0 +1,9 @@ +rob_3: + ardusub_manager: + ros__parameters: + message_intervals: + ids: [31, 32] + rates: [50.0, 50.0] + set_ekf_origin: true + publish_tf: false + prefix: "rob_3/" diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_3_mavros.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_3_mavros.yaml new file mode 100644 index 00000000..d74a12de --- /dev/null +++ b/blue_demos/multi_robot/description/config/ardusub/rob_3_mavros.yaml @@ -0,0 +1,48 @@ +rob_3: + mavros: + ros__parameters: + system_id: 255 + base_link_frame_id: rob_3/base_link + plugin_allowlist: + - sys_status + - command + - imu + - rc_io + - param + - vision* + - local* + - global_position + + mavros_node: + ros__parameters: + base_link_frame: "rob_3/base_link" + map_frame: "map" + odom_frame: "odom" + fcu_url: "tcp://localhost:5770" + gcs_url: "udp://@localhost:14550" + tgt_system: 2 + + local_position: + ros__parameters: + frame_id: "map" + tf: + child_frame_id: "rob_3/base_link" + send: false + + imu: + ros__parameters: + frame_id: "rob_3/base_link" + + global_position: + ros__parameters: + child_frame_id: "rob_3/base_link" + frame_id: "map" + tf: + child_frame_id: "rob_3/base_link" + global_frame_id: "earth" + send: false + + vision_pose: + ros__parameters: + tf/child_frame_id: "rob_3/vision_estimate" + tf/frame_id: map diff --git a/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_1_localization.yaml b/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_1_localization.yaml new file mode 100644 index 00000000..816acf82 --- /dev/null +++ b/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_1_localization.yaml @@ -0,0 +1,39 @@ +rob_1: + camera: + ros__parameters: + port: 5600 + distortion_model: "plumb_bob" + frame: + height: 1080 + width: 1920 + camera_matrix: + [1078.17559, 0.0, 1010.57086, + 0.0, 1076.46176, 463.06243, + 0.0, 0.0, 1.0] + distortion_coefficients: + [0.019645, 0.007271, -0.004324, -0.001628, 0.000000] + projection_matrix: + [1108.25366, 0.0, 1003.75555, 0.0, + 0.0, 1108.39001, 456.92861, 0.0, + 0.0, 0.0, 1.0, 0.0] + + qualisys_mocap: + ros__parameters: + ip: "192.168.254.1" + port: 22223 + version: "1.22" + body: "bluerov" + prefix: "rob_1/" + + qualisys_localizer: + ros__parameters: + update_rate: 30.0 + body: "bluerov" # This should be the same as the body parameter setting for the qualisys_mocap node + prefix: "rob_1/" + + gazebo_localizer: + ros__parameters: + update_rate: 30.0 + gazebo_odom_topic: "/model/rob_1/bluerov2_heavy/odometry" + prefix: "rob_1/" + diff --git a/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_3_localization.yaml b/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_3_localization.yaml new file mode 100644 index 00000000..cc774d4d --- /dev/null +++ b/blue_demos/multi_robot/description/config/bluerov2_heavy/rob_3_localization.yaml @@ -0,0 +1,39 @@ +rob_3: + camera: + ros__parameters: + port: 5600 + distortion_model: "plumb_bob" + frame: + height: 1080 + width: 1920 + camera_matrix: + [1078.17559, 0.0, 1010.57086, + 0.0, 1076.46176, 463.06243, + 0.0, 0.0, 1.0] + distortion_coefficients: + [0.019645, 0.007271, -0.004324, -0.001628, 0.000000] + projection_matrix: + [1108.25366, 0.0, 1003.75555, 0.0, + 0.0, 1108.39001, 456.92861, 0.0, + 0.0, 0.0, 1.0, 0.0] + + qualisys_mocap: + ros__parameters: + ip: "192.168.254.1" + port: 22223 + version: "1.22" + body: "bluerov" + prefix: "rob_3/" + + qualisys_localizer: + ros__parameters: + update_rate: 30.0 + body: "bluerov" # This should be the same as the body parameter setting for the qualisys_mocap node + prefix: "rob_3/" + + gazebo_localizer: + ros__parameters: + update_rate: 30.0 + gazebo_odom_topic: "/model/rob_3/bluerov2_heavy/odometry" + prefix: "rob_3/" + diff --git a/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world b/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world new file mode 100644 index 00000000..5fddf90f --- /dev/null +++ b/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world @@ -0,0 +1,553 @@ + + + + + + + + + ogre2 + + + + + + + + + + + + + + 1000 + + 0 + 1 + + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Sun + + + + model://sand_heightmap + 0 7 -10 0 0 0 + + + + + https://fuel.gazebosim.org/1.0/OpenRobotics/models/Coast Water + + 0 0 0 0 0 0 + + + + 1.0 1.0 1.0 + 0.8 0.8 0.8 + + + + + 50 0 150 0 0 0 + 1 1 1 1 + .1 .1 .1 1 + 0.3 0.3 -1 + false + + + + + 6 0 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 970.0 + + + + + 1 1 1 + + + + + + + + 1 2 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 6 -6 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 6 6 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 4 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 971.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 4 3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 965.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 3 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 965.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 2 -4 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 968.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + + 2 0 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 969.0 + + + + + 1 1 1 + + + + + + + + 1 4 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 1 4 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + true + 1 -3 0 0 0 0 + + + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + 900.0 + + + + + 1 1 1 + + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + + + diff --git a/blue_demos/multi_robot/teleoperation/config/rob_1_transforms.yaml b/blue_demos/multi_robot/teleoperation/config/rob_1_transforms.yaml new file mode 100644 index 00000000..beef87dd --- /dev/null +++ b/blue_demos/multi_robot/teleoperation/config/rob_1_transforms.yaml @@ -0,0 +1,10 @@ +rob_1/message_transforms: + ros__parameters: + + incoming_topics: + - /rob_1/cmd_vel + + transforms: + /rob_1/cmd_vel: + outgoing_topic: /rob_1/integral_sliding_mode_controller/reference + message_type: geometry_msgs/msg/Twist diff --git a/blue_demos/multi_robot/teleoperation/config/rob_3_transforms.yaml b/blue_demos/multi_robot/teleoperation/config/rob_3_transforms.yaml new file mode 100644 index 00000000..8409e03d --- /dev/null +++ b/blue_demos/multi_robot/teleoperation/config/rob_3_transforms.yaml @@ -0,0 +1,10 @@ +rob_3/message_transforms: + ros__parameters: + + incoming_topics: + - /rob_3/cmd_vel + + transforms: + /rob_3/cmd_vel: + outgoing_topic: /rob_3/integral_sliding_mode_controller/reference + message_type: geometry_msgs/msg/Twist From 6509e8ebe336783db7680fa974410d65bbdb9904 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Sun, 8 Jun 2025 22:38:46 +0000 Subject: [PATCH 68/72] copy of current workspace --- .devcontainer/nvidia/Dockerfile | 31 +- .../ns_bluerov2_heavy.launch.yaml | 18 +- blue_demos/CMakeLists.txt | 1 + .../bluerov2_heavy_joint_traj_controller.yaml | 3 - .../launch/test_gz_to_ros_bridge.launch.py | 31 + .../config/rob_1_bluerov2_heavy_jtc.yaml | 204 + .../config/rob_3_bluerov2_heavy_jtc.yaml | 204 + .../launch/obstacles.launch.yaml | 13 + ...rob_1_bluerov2_heavy_controllers.launch.py | 2 +- .../rob_1_bluerov2_heavy_demo.launch.yaml | 34 +- .../launch/rob_1_bluerov2_heavy_jtc.launch.py | 233 + ...rob_3_bluerov2_heavy_controllers.launch.py | 2 +- .../rob_3_bluerov2_heavy_demo.launch.yaml | 38 +- .../launch/rob_3_bluerov2_heavy_jtc.launch.py | 212 + .../config/ardusub/rob_1_ardusub_manager.yaml | 2 +- .../config/ardusub/rob_3_ardusub_manager.yaml | 2 +- .../description/gazebo/urdf/obstacles.sdf | 49 + .../worlds/underwater_with_obstacles.world | 87 +- .../config/ros_gz_obstacles.yaml | 48 + blue_planner_cpp/CMakeLists.txt | 117 + .../include/blue_planner_cpp/ompl_planner.hpp | 28 + .../launch/multi_robot.launch.yaml | 99 + blue_planner_cpp/package.xml | 33 + blue_planner_cpp/src/collision_check.cpp | 195 + blue_planner_cpp/src/joint_traj_planner.cpp | 96 + blue_planner_cpp/src/ompl_planner.cpp | 369 + frames_2025-01-29_00.48.32.gv | 21 + frames_2025-01-29_00.48.32.pdf | Bin 0 -> 17041 bytes frames_2025-02-05_19.01.53.gv | 21 + frames_2025-02-05_19.01.53.pdf | Bin 0 -> 17305 bytes frames_2025-02-24_02.11.28.gv | 21 + frames_2025-02-24_02.11.28.pdf | Bin 0 -> 17130 bytes frames_2025-02-24_02.13.43.gv | 21 + frames_2025-02-24_02.13.43.pdf | Bin 0 -> 17472 bytes frames_2025-02-27_21.20.26.gv | 34 + frames_2025-02-27_21.20.26.pdf | Bin 0 -> 19445 bytes frames_2025-02-28_22.53.39.gv | 21 + frames_2025-02-28_22.53.39.pdf | Bin 0 -> 17305 bytes frames_2025-02-28_22.58.39.gv | 1 + frames_2025-02-28_22.58.39.pdf | Bin 0 -> 5935 bytes frames_2025-02-28_22.59.49.gv | 21 + frames_2025-02-28_22.59.49.pdf | Bin 0 -> 17304 bytes frames_2025-02-28_23.02.20.gv | 21 + frames_2025-02-28_23.02.20.pdf | Bin 0 -> 17136 bytes frames_2025-02-28_23.23.37.gv | 21 + frames_2025-02-28_23.23.37.pdf | Bin 0 -> 17479 bytes rob_1_controller_manager_param.yaml | 36 + rosgraph_ns_single_rob.svg | 6461 +++++++++++++++++ tf2_tree_ns_single_rob.pdf | Bin 0 -> 17317 bytes 49 files changed, 8773 insertions(+), 78 deletions(-) create mode 100644 blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py create mode 100644 blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml create mode 100644 blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml rename blue_demos/{ => multi_robot}/control_integration/launch/obstacles.launch.yaml (60%) create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py create mode 100644 blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py create mode 100644 blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf create mode 100644 blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml create mode 100644 blue_planner_cpp/CMakeLists.txt create mode 100644 blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp create mode 100644 blue_planner_cpp/launch/multi_robot.launch.yaml create mode 100644 blue_planner_cpp/package.xml create mode 100644 blue_planner_cpp/src/collision_check.cpp create mode 100644 blue_planner_cpp/src/joint_traj_planner.cpp create mode 100644 blue_planner_cpp/src/ompl_planner.cpp create mode 100644 frames_2025-01-29_00.48.32.gv create mode 100644 frames_2025-01-29_00.48.32.pdf create mode 100644 frames_2025-02-05_19.01.53.gv create mode 100644 frames_2025-02-05_19.01.53.pdf create mode 100644 frames_2025-02-24_02.11.28.gv create mode 100644 frames_2025-02-24_02.11.28.pdf create mode 100644 frames_2025-02-24_02.13.43.gv create mode 100644 frames_2025-02-24_02.13.43.pdf create mode 100644 frames_2025-02-27_21.20.26.gv create mode 100644 frames_2025-02-27_21.20.26.pdf create mode 100644 frames_2025-02-28_22.53.39.gv create mode 100644 frames_2025-02-28_22.53.39.pdf create mode 100644 frames_2025-02-28_22.58.39.gv create mode 100644 frames_2025-02-28_22.58.39.pdf create mode 100644 frames_2025-02-28_22.59.49.gv create mode 100644 frames_2025-02-28_22.59.49.pdf create mode 100644 frames_2025-02-28_23.02.20.gv create mode 100644 frames_2025-02-28_23.02.20.pdf create mode 100644 frames_2025-02-28_23.23.37.gv create mode 100644 frames_2025-02-28_23.23.37.pdf create mode 100644 rob_1_controller_manager_param.yaml create mode 100644 rosgraph_ns_single_rob.svg create mode 100644 tf2_tree_ns_single_rob.pdf diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile index c7436e14..295e07f9 100644 --- a/.devcontainer/nvidia/Dockerfile +++ b/.devcontainer/nvidia/Dockerfile @@ -1,4 +1,7 @@ -FROM ghcr.io/jbvakshaya/blue:iron-nvidia-ompl +# FROM ghcr.io/jbvakshaya/blue:iron-nvidia-ompl +FROM ghcr.io/jbvakshaya/blue:iron-nvidia-multi-robots-mp_no_pinocchio +# With above image we probably don't need to install any other dependencies + # FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia # Install ROS dependencies @@ -9,19 +12,19 @@ ENV USER_WORKSPACE=/home/$USERNAME/ws_blue WORKDIR $USER_WORKSPACE COPY --chown=$USER_UID:$USER_GID . src/blue -RUN sudo apt-get -q update \ - && sudo apt-get -q -y upgrade \ - && rosdep update \ - && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ - && sudo apt-get autoremove -y \ - && sudo apt-get clean -y \ - && sudo rm -rf /var/lib/apt/lists/* - -# Install OMPL with ROS2 -RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\ - && sudo apt-get update \ - && sudo apt-get install -y nano \ - && sudo apt-get install -y ros-iron-ompl +# RUN sudo apt-get -q update \ +# && sudo apt-get -q -y upgrade \ +# && rosdep update \ +# && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} --skip-keys="gz-transport12 gz-sim7 gz-math7 gz-msgs9 gz-plugin2" \ +# && sudo apt-get autoremove -y \ +# && sudo apt-get clean -y \ +# && sudo rm -rf /var/lib/apt/lists/* + +# # Install OMPL with ROS2 +# RUN curl http://repo.ros2.org/repos.key | sudo apt-key add -\ +# && sudo apt-get update \ +# && sudo apt-get install -y nano \ +# && sudo apt-get install -y ros-iron-ompl # RUN cd ${USER_WORKSPACE}/src/learn_ros2 \ # && echo "Check me" \ diff --git a/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml b/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml index 2bfa0089..121dfee9 100644 --- a/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml +++ b/blue_bringup/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml @@ -79,15 +79,15 @@ launch: default: "1" - arg: - name: rob_x + name: init_rob_x default: "0.0" - arg: - name: rob_y + name: init_rob_y default: "0.0" - arg: - name: rob_z + name: init_rob_z default: "0.0" # Nodes @@ -134,12 +134,12 @@ launch: value: $(var ardusub_instance) - name: sysid_thismav value: $(var sysid_thismav) - - name: rob_x - value: $(var rob_x) - - name: rob_y - value: $(var rob_y) - - name: rob_z - value: $(var rob_z) + - name: init_rob_x + value: $(var init_rob_x) + - name: init_rob_y + value: $(var init_rob_y) + - name: init_rob_z + value: $(var init_rob_z) - include: file: $(find-pkg-share blue_localization)/localization.launch.py diff --git a/blue_demos/CMakeLists.txt b/blue_demos/CMakeLists.txt index 7cbd9d3c..9ec9fcbd 100644 --- a/blue_demos/CMakeLists.txt +++ b/blue_demos/CMakeLists.txt @@ -20,6 +20,7 @@ install( DIRECTORY multi_robot/control_integration multi_robot/teleoperation multi_robot/description + multi_robot/motion_planning DESTINATION share/blue_demos/multi_robot ) diff --git a/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml b/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml index f3cdc2e7..49ea6ce1 100644 --- a/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml +++ b/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml @@ -65,9 +65,6 @@ jt_controller: - position - velocity - action_monitor_rate: 20.0 - - allow_partial_joints_goal: true open_loop_control: true constraints: stopped_velocity_tolerance: 0.01 diff --git a/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py b/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py new file mode 100644 index 00000000..691f6cdc --- /dev/null +++ b/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py @@ -0,0 +1,31 @@ +from launch import LaunchDescription +from launch.actions import OpaqueFunction +from launch_ros.actions import Node + +# add ros_gz_bridge to the Python path +# ros_gz_bridge_root = os.path.join(os.path.dirname(__file__), "..", "..") +# sys.path.insert(0, os.path.abspath(ros_gz_bridge_root)) + +# from ros_gz_bridge import mappings # noqa: E402 + + +def bridge_setup(context, *args, **kwargs): + # gz_msgs_ver = LaunchConfiguration("gz_msgs_ver").perform(context) + # gz_msgs_ver = tuple(map(int, gz_msgs_ver.split("."))) + + # Bridge + bridge = Node( + package="ros_gz_bridge", + executable="parameter_bridge", + arguments=["/model/obs_1/pose@geometry_msgs/msg/Pose[gz.msgs.Pose"], + output="screen", + ) + return [bridge] + + +# f'/{m.unique()}@{m.ros2_string()}[{m.gz_string()}' +# for m in mappings(gz_msgs_ver) + + +def generate_launch_description(): + return LaunchDescription([OpaqueFunction(function=bridge_setup)]) diff --git a/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml b/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml new file mode 100644 index 00000000..9bd46a68 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml @@ -0,0 +1,204 @@ +rob_1/controller_manager: + ros__parameters: + update_rate: 100 # Hz + + jt_controller: + type: "joint_trajectory_controller/JointTrajectoryController" + + integral_sliding_mode_controller: + type: velocity_controllers/IntegralSlidingModeController + + thruster_allocation_matrix_controller: + type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController + + thruster1_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster2_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster3_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster4_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster5_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster6_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster7_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster8_controller: + type: thruster_controllers/PolynomialThrustCurveController + +rob_1/jt_controller: + ros__parameters: + action_monitor_rate: 20.0 + allow_integration_in_goal_trajectories: false + allow_nonzero_velocity_at_trajectory_end: false + allow_partial_joints_goal: false + cmd_timeout: 1.0 + joints: + - joint_x + - joint_y + - joint_z + - joint_rx + - joint_ry + - joint_rz + + command_interfaces: + - velocity + + command_joints: + - integral_sliding_mode_controller/x + - integral_sliding_mode_controller/y + - integral_sliding_mode_controller/z + - integral_sliding_mode_controller/rx + - integral_sliding_mode_controller/ry + - integral_sliding_mode_controller/rz + + state_interfaces: + - position + - velocity + + open_loop_control: true + constraints: + stopped_velocity_tolerance: 0.01 + goal_time: 0.0 + joint1: + trajectory: 0.05 + goal: 0.03 + +rob_1/integral_sliding_mode_controller: + ros__parameters: + use_external_measured_states: true + reference_controller: thruster_allocation_matrix_controller + gains: + rho: 20.0 + lambda: 200.0 + Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] + tf: + base_frame: "rob_1/base_link_fsd" + odom_frame: "map_ned" + hydrodynamics: + mass: 13.5 + weight: 114.80 + buoyancy: 112.80 + moments_of_inertia: [0.16, 0.16, 0.16] + added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] + center_of_buoyancy: [0.0, 0.0, 0.0] + center_of_gravity: [0.0, 0.0, 0.0] + linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] + quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + +rob_1/thruster_allocation_matrix_controller: + ros__parameters: + thrusters: + - rob_1/thruster1_joint + - rob_1/thruster2_joint + - rob_1/thruster3_joint + - rob_1/thruster4_joint + - rob_1/thruster5_joint + - rob_1/thruster6_joint + - rob_1/thruster7_joint + - rob_1/thruster8_joint + reference_controllers: + - thruster1_controller + - thruster2_controller + - thruster3_controller + - thruster4_controller + - thruster5_controller + - thruster6_controller + - thruster7_controller + - thruster8_controller + tam: + x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] + y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] + z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] + ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] + rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] + +rob_1/thruster1_controller: + ros__parameters: + thruster: rob_1/thruster1_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster2_controller: + ros__parameters: + thruster: rob_1/thruster2_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster3_controller: + ros__parameters: + thruster: rob_1/thruster3_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster4_controller: + ros__parameters: + thruster: rob_1/thruster4_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster5_controller: + ros__parameters: + thruster: rob_1/thruster5_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster6_controller: + ros__parameters: + thruster: rob_1/thruster6_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster7_controller: + ros__parameters: + thruster: rob_1/thruster7_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_1/thruster8_controller: + ros__parameters: + thruster: rob_1/thruster8_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml b/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml new file mode 100644 index 00000000..4a76c805 --- /dev/null +++ b/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml @@ -0,0 +1,204 @@ +rob_3/controller_manager: + ros__parameters: + update_rate: 100 # Hz + + jt_controller: + type: "joint_trajectory_controller/JointTrajectoryController" + + integral_sliding_mode_controller: + type: velocity_controllers/IntegralSlidingModeController + + thruster_allocation_matrix_controller: + type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController + + thruster1_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster2_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster3_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster4_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster5_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster6_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster7_controller: + type: thruster_controllers/PolynomialThrustCurveController + + thruster8_controller: + type: thruster_controllers/PolynomialThrustCurveController + +rob_3/jt_controller: + ros__parameters: + action_monitor_rate: 20.0 + allow_integration_in_goal_trajectories: false + allow_nonzero_velocity_at_trajectory_end: false + allow_partial_joints_goal: false + cmd_timeout: 1.0 + joints: + - joint_x + - joint_y + - joint_z + - joint_rx + - joint_ry + - joint_rz + + command_interfaces: + - velocity + + command_joints: + - integral_sliding_mode_controller/x + - integral_sliding_mode_controller/y + - integral_sliding_mode_controller/z + - integral_sliding_mode_controller/rx + - integral_sliding_mode_controller/ry + - integral_sliding_mode_controller/rz + + state_interfaces: + - position + - velocity + + open_loop_control: true + constraints: + stopped_velocity_tolerance: 0.01 + goal_time: 0.0 + joint1: + trajectory: 0.05 + goal: 0.03 + +rob_3/integral_sliding_mode_controller: + ros__parameters: + use_external_measured_states: true + reference_controller: thruster_allocation_matrix_controller + gains: + rho: 20.0 + lambda: 200.0 + Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] + tf: + base_frame: "rob_3/base_link_fsd" + odom_frame: "map_ned" + hydrodynamics: + mass: 13.5 + weight: 114.80 + buoyancy: 112.80 + moments_of_inertia: [0.16, 0.16, 0.16] + added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] + center_of_buoyancy: [0.0, 0.0, 0.0] + center_of_gravity: [0.0, 0.0, 0.0] + linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] + quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] + +rob_3/thruster_allocation_matrix_controller: + ros__parameters: + thrusters: + - rob_3/thruster1_joint + - rob_3/thruster2_joint + - rob_3/thruster3_joint + - rob_3/thruster4_joint + - rob_3/thruster5_joint + - rob_3/thruster6_joint + - rob_3/thruster7_joint + - rob_3/thruster8_joint + reference_controllers: + - thruster1_controller + - thruster2_controller + - thruster3_controller + - thruster4_controller + - thruster5_controller + - thruster6_controller + - thruster7_controller + - thruster8_controller + tam: + x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] + y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] + z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] + rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] + ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] + rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] + +rob_3/thruster1_controller: + ros__parameters: + thruster: rob_3/thruster1_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster2_controller: + ros__parameters: + thruster: rob_3/thruster2_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster3_controller: + ros__parameters: + thruster: rob_3/thruster3_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster4_controller: + ros__parameters: + thruster: rob_3/thruster4_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster5_controller: + ros__parameters: + thruster: rob_3/thruster5_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster6_controller: + ros__parameters: + thruster: rob_3/thruster6_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster7_controller: + ros__parameters: + thruster: rob_3/thruster7_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] + +rob_3/thruster8_controller: + ros__parameters: + thruster: rob_3/thruster8_joint + min_thrust: -40.0 + max_thrust: 60.0 + min_deadband: 1470 + max_deadband: 1530 + neutral_pwm: 1500 + thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/control_integration/launch/obstacles.launch.yaml b/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml similarity index 60% rename from blue_demos/control_integration/launch/obstacles.launch.yaml rename to blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml index 2239f677..972e1fc4 100644 --- a/blue_demos/control_integration/launch/obstacles.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml @@ -4,6 +4,9 @@ launch: - arg: name: gazebo_world_file + - arg: + name: gz_ros_bridge_obstacle_file + # Nodes - node: pkg: ros_gz_bridge @@ -16,3 +19,13 @@ launch: arg: - name: gz_args value: -v 4 -r $(var gazebo_world_file) + + - node: + pkg: ros_gz_bridge + exec: parameter_bridge + output: screen + param: + - name: config_file + value: $(var gz_ros_bridge_obstacle_file) + + diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py index d0600f47..a1e9a243 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_controllers.launch.py @@ -1,4 +1,4 @@ -# Copyright 2024, Evan Palmer +# Copyright 2024, Akshaya Agrawal # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml index 44ee01db..58a29999 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml @@ -8,6 +8,9 @@ launch: name: gazebo_world_file default: $(find-pkg-share blue_demos)/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world + - arg: + name: gz_ros_bridge_obstacle_file + default: $(find-pkg-share blue_demos)/multi_robot/motion_planning/config/ros_gz_obstacles.yaml - arg: name: use_sim default: "false" @@ -41,15 +44,15 @@ launch: value: "1" - let: - name: rob_x - value: "0.0" + name: init_rob_x + value: "-3.0" - let: - name: rob_y - value: "4.0" + name: init_rob_y + value: "-3.0" - let: - name: rob_z + name: init_rob_z value: "0.0" - let: @@ -103,16 +106,19 @@ launch: value: $(var sysid_thismav) - name: localization_file value: $(var localization_file) - - name: rob_x - value: $(var rob_x) - - name: rob_y - value: $(var rob_y) - - name: rob_z - value: $(var rob_z) - - #Spawn obstacles + - name: init_rob_x + value: $(var init_rob_x) + - name: init_rob_y + value: $(var init_rob_y) + - name: init_rob_z + value: $(var init_rob_z) + + #Spawn obstacles and bridge them to ROS - include: - file: $(find-pkg-share blue_demos)/control_integration/launch/obstacles.launch.yaml + file: $(find-pkg-share blue_demos)/multi_robot/control_integration/launch/obstacles.launch.yaml arg: - name: gazebo_world_file value: $(var gazebo_world_file) + - name: gz_ros_bridge_obstacle_file + value: $(var gz_ros_bridge_obstacle_file) + diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py new file mode 100644 index 00000000..03cf483a --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py @@ -0,0 +1,233 @@ +# Copyright 2024, Akshaya Agrawal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + GroupAction, + IncludeLaunchDescription, + RegisterEventHandler, +) +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution +from launch_ros.actions import Node, PushROSNamespace +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description() -> LaunchDescription: + """Generate a launch description for the BlueROV2. + This should be launched after MAVROS has fully loaded. + """ + args = [ + DeclareLaunchArgument( + "prefix", + default_value="rob_1/", + description=( + "The prefix of the model. This is useful for multi-robot setups." + " Expected format '/'." + ), + ), + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + # The ISMC expects state information to be provided in the FSD frame + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_1_transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), + ) + + message_transformer_with_ns = GroupAction( + actions=[ + PushROSNamespace("rob_1"), + message_transformer, + ] + ) + + controller_manager = Node( + package="controller_manager", + executable="ros2_control_node", + output="both", + namespace="rob_1", + parameters=[ + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_1_bluerov2_heavy_jtc.yaml", + ] + ), + ], + remappings=[ + ("controller_manager/robot_description", "robot_description"), + ], + ) + + # obstacles_config_file = PathJoinSubstitution( + # [ + # FindPackageShare("blue_demos"), + # "multi_robot", + # "motion_planning", + # "config", + # "obstacles.yaml", + # ] + # ) + # gz_ros_obstacles_bridge = Node( + # package="ros_gz_bridge", + # executable="parameter_bridge", + # arguments=[ + # "--ros-args", + # "-p", + # "config_file:=$(find blue_demos)/multi_robot/motion_planning/config/ros_gz_obstacles.yaml", + # ], + # output="screen", + # ) + + jt_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "jt_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + + velocity_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "integral_sliding_mode_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + + thruster_spawners = [ + Node( + package="controller_manager", + executable="spawner", + arguments=[ + f"thruster{i + 1}_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + for i in range(8) # BlueROV2 Heavy has 8 thrusters + ] + + delay_thruster_spawners = [] + for i, thruster_spawner in enumerate(thruster_spawners): + if not len(delay_thruster_spawners): + delay_thruster_spawners.append( + thruster_spawner, + ) + else: + delay_thruster_spawners.append( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[i - 1], + on_exit=[thruster_spawner], + ) + ) + ) + + tam_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "thruster_allocation_matrix_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_1", + ], + ) + + delay_tam_controller_spawner_after_thruster_controller_spawners = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[-1], + on_exit=[tam_controller_spawner], + ) + ) + ) + + delay_velocity_controller_spawner_after_tam_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=tam_controller_spawner, + on_exit=[velocity_controller_spawner], + ) + ) + ) + + delay_jt_controller_spawner_after_velocity_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=velocity_controller_spawner, + on_exit=[jt_controller_spawner], + ) + ) + ) + + return LaunchDescription( + [ + *args, + message_transformer_with_ns, + # gz_ros_obstacles_bridge, + controller_manager, + *delay_thruster_spawners, + delay_tam_controller_spawner_after_thruster_controller_spawners, + delay_velocity_controller_spawner_after_tam_controller_spawner, + delay_jt_controller_spawner_after_velocity_controller_spawner, + ] + ) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py index 3d10968d..c334fc5f 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_controllers.launch.py @@ -1,4 +1,4 @@ -# Copyright 2024, Evan Palmer +# Copyright 2024, Akshaya Agrawal # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml index 2f8418a3..c19ed68f 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml @@ -22,15 +22,15 @@ launch: - arg: name: mavros_file - default: $(find-pkg-share blue_description)/config/ardusub/rob_3_mavros.yaml + default: $(find-pkg-share blue_demos)/multi_robot/description/config/ardusub/rob_3_mavros.yaml - let: name: manager_file - value: $(find-pkg-share blue_description)/config/ardusub/ROB_3_ardusub_manager.yaml + value: $(find-pkg-share blue_demos)/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml - let: name: localization_file - value: $(find-pkg-share blue_description)/config/bluerov2_heavy/ROB_3_localization.yaml + value: $(find-pkg-share blue_demos)/multi_robot/description/config/bluerov2_heavy/rob_3_localization.yaml - let: name: ardusub_instance @@ -41,15 +41,15 @@ launch: value: "2" - let: - name: rob_x + name: init_rob_x value: "0.0" - let: - name: rob_y + name: init_rob_y value: "0.0" - let: - name: rob_z + name: init_rob_z value: "0.0" - let: @@ -64,6 +64,14 @@ launch: name: fdm_port_out value: "9013" + - let: + name: use_mavros_odom + value: "true" + + - let: + name: mavros_odom_topic + value: /rob_3/local_position/odom + - group: - push-ros-namespace: namespace: "$(var namespace)" @@ -74,7 +82,7 @@ launch: - let: name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out)') + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') - include: file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml @@ -95,14 +103,14 @@ launch: value: $(var sysid_thismav) - name: localization_file value: $(var localization_file) - - name: rob_x - value: $(var rob_x) - - name: rob_y - value: $(var rob_y) - - name: rob_z - value: $(var rob_z) - - #Spawn obstacles + - name: init_rob_x + value: $(var init_rob_x) + - name: init_rob_y + value: $(var init_rob_y) + - name: init_rob_z + value: $(var init_rob_z) + + # Spawn obstacles # - include: # file: $(find-pkg-share blue_demos)/control_integration/launch/obstacles.launch.yaml # arg: diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py new file mode 100644 index 00000000..c6350ecf --- /dev/null +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py @@ -0,0 +1,212 @@ +# Copyright 2024, Akshaya Agrawal +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +from launch import LaunchDescription +from launch.actions import ( + DeclareLaunchArgument, + GroupAction, + IncludeLaunchDescription, + RegisterEventHandler, +) +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import PathJoinSubstitution, TextSubstitution +from launch_ros.actions import Node, PushROSNamespace +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description() -> LaunchDescription: + """Generate a launch description for the BlueROV2. + This should be launched after MAVROS has fully loaded. + """ + args = [ + DeclareLaunchArgument( + "prefix", + default_value="rob_3/", + description=( + "The prefix of the model. This is useful for multi-robot setups." + " Expected format '/'." + ), + ), + DeclareLaunchArgument( + "use_sim", + default_value="false", + description="Launch the Gazebo + ArduSub simulator.", + ), + ] + + # The ISMC expects state information to be provided in the FSD frame + message_transformer = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution( + [ + FindPackageShare("message_transforms"), + "launch", + "message_transforms.launch.py", + ] + ) + ), + launch_arguments={ + "parameters_file": PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_3_transforms.yaml", + ] + ), + "ns": TextSubstitution(text="control_integration"), + }.items(), + ) + + message_transformer_with_ns = GroupAction( + actions=[ + PushROSNamespace("rob_3"), + message_transformer, + ] + ) + + controller_manager = Node( + package="controller_manager", + executable="ros2_control_node", + output="both", + namespace="rob_3", + parameters=[ + PathJoinSubstitution( + [ + FindPackageShare("blue_demos"), + "multi_robot", + "control_integration", + "config", + "rob_3_bluerov2_heavy_jtc.yaml", + ] + ), + ], + remappings=[ + ("controller_manager/robot_description", "robot_description"), + ], + ) + + jt_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "jt_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + + velocity_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "integral_sliding_mode_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + + thruster_spawners = [ + Node( + package="controller_manager", + executable="spawner", + arguments=[ + f"thruster{i + 1}_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + for i in range(8) # BlueROV2 Heavy has 8 thrusters + ] + + delay_thruster_spawners = [] + for i, thruster_spawner in enumerate(thruster_spawners): + if not len(delay_thruster_spawners): + delay_thruster_spawners.append( + thruster_spawner, + ) + else: + delay_thruster_spawners.append( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[i - 1], + on_exit=[thruster_spawner], + ) + ) + ) + + tam_controller_spawner = Node( + package="controller_manager", + executable="spawner", + arguments=[ + "thruster_allocation_matrix_controller", + "--controller-manager", + ["", "controller_manager"], + "--namespace", + "rob_3", + ], + ) + + delay_tam_controller_spawner_after_thruster_controller_spawners = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=thruster_spawners[-1], + on_exit=[tam_controller_spawner], + ) + ) + ) + + delay_velocity_controller_spawner_after_tam_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=tam_controller_spawner, + on_exit=[velocity_controller_spawner], + ) + ) + ) + + delay_jt_controller_spawner_after_velocity_controller_spawner = ( + RegisterEventHandler( + event_handler=OnProcessExit( + target_action=velocity_controller_spawner, + on_exit=[jt_controller_spawner], + ) + ) + ) + + return LaunchDescription( + [ + *args, + message_transformer_with_ns, + controller_manager, + *delay_thruster_spawners, + delay_tam_controller_spawner_after_thruster_controller_spawners, + delay_velocity_controller_spawner_after_tam_controller_spawner, + delay_jt_controller_spawner_after_velocity_controller_spawner, + ] + ) diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml index 71ee336c..8df61f39 100644 --- a/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml +++ b/blue_demos/multi_robot/description/config/ardusub/rob_1_ardusub_manager.yaml @@ -5,5 +5,5 @@ rob_1: ids: [31, 32] rates: [50.0, 50.0] set_ekf_origin: true - publish_tf: false + publish_tf: true prefix: "rob_1/" diff --git a/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml b/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml index 8e414ea3..37ce85c4 100644 --- a/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml +++ b/blue_demos/multi_robot/description/config/ardusub/rob_3_ardusub_manager.yaml @@ -5,5 +5,5 @@ rob_3: ids: [31, 32] rates: [50.0, 50.0] set_ekf_origin: true - publish_tf: false + publish_tf: true prefix: "rob_3/" diff --git a/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf b/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf new file mode 100644 index 00000000..be83f854 --- /dev/null +++ b/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf @@ -0,0 +1,49 @@ + + + + true + 6 7 0 0 0 0 + + + 900.0 + + 0.16666 + 0 + 0 + 0.16666 + 0 + 0.16666 + + + + + + 1 1 1 + + + + + + + 1 1 1 + + + + 1 0 0 1 + 1 0 0 1 + 1 0 0 1 + + + + + false + false + false + false + true + true + + + diff --git a/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world b/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world index 5fddf90f..5b2811f0 100644 --- a/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world +++ b/blue_demos/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world @@ -99,8 +99,8 @@ - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -243,8 +243,8 @@ - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -291,8 +291,8 @@ - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -339,8 +339,8 @@ - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -387,8 +387,8 @@ - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -431,12 +431,12 @@ - 1 4 1 + 1 1 1 - 1 0 0 1 - 1 0 0 1 + 0.6 1.0 0 1 + 0.6 1.0 0 1 1 0 0 1 @@ -453,9 +453,9 @@ - + + + true 1 -3 0 0 0 0 - + 0.16666 @@ -516,7 +565,7 @@ 900.0 - + 1 1 1 @@ -524,7 +573,7 @@ - + 1 1 1 diff --git a/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml b/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml new file mode 100644 index 00000000..8b46aa46 --- /dev/null +++ b/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml @@ -0,0 +1,48 @@ +- gz_topic_name: "/model/obs_1/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_2/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_3/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_4/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_5/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_6/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_7/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_8/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + +- gz_topic_name: "/model/obs_9/pose" + ros_type_name: "geometry_msgs/msg/Pose" + gz_type_name: "gz.msgs.Pose" + direction: GZ_TO_ROS + + + + diff --git a/blue_planner_cpp/CMakeLists.txt b/blue_planner_cpp/CMakeLists.txt new file mode 100644 index 00000000..b0e5a840 --- /dev/null +++ b/blue_planner_cpp/CMakeLists.txt @@ -0,0 +1,117 @@ +cmake_minimum_required(VERSION 3.8) +project(blue_planner_cpp) + +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +set(THIS_PACKAGE_INCLUDE_DEPENDS + rclcpp + rclcpp_lifecycle + std_msgs + nav_msgs + trajectory_msgs + tf2 + ompl + Eigen3 + ) + + +find_package(ament_cmake REQUIRED) +foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) + find_package(${Dependency} REQUIRED) +endforeach() + +find_package(ament_index_cpp REQUIRED) +find_package(Python3 REQUIRED COMPONENTS Interpreter Development) +find_package(eigen3_cmake_module REQUIRED) +find_package(pinocchio REQUIRED) +# add_library(blue_planner_cpp SHARED +# src/ompl_planner.cpp +# ) + +# target_include_directories(blue_planner_cpp +# PUBLIC +# $ +# $ +# ${EIGEN3_INCLUDE_DIR} +# PRIVATE +# ${PROJECT_SOURCE_DIR}/src +# ) +# target_compile_features(blue_planner_cpp PUBLIC cxx_std_17) +# target_link_libraries(blue_planner_cpp +# PUBLIC +# ${rclcpp_LIBRARIES} +# ) + +# target_compile_definitions(blue_planner_cpp PRIVATE "BLUE_PLANNER_CPP_BUILDING_DLL") +# ament_target_dependencies(blue_planner_cpp +# PUBLIC +# ${THIS_PACKAGE_INCLUDE_DEPENDS} +# ) + +include_directories( + include + /opt/ros/iron/include + /opt/ros/iron/include/ompl-1.6 + ${EIGEN3_INCLUDE_DIRS} + ${colcon_INCLUDE_DIRS} +) + +add_executable(ompl_planner src/ompl_planner.cpp) + +# target_compile_features(ompl_planner PUBLIC cxx_std_17) +# target_link_libraries(ompl_planner blue_planner_cpp) +target_link_libraries(ompl_planner PUBLIC ${OMPL_LIBRARIES}) + + +ament_target_dependencies(ompl_planner PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) +# target_include_directories(ompl_planner PUBLIC +# $ +# $) +# target_compile_features(ompl_planner PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 +add_executable(collision_check src/collision_check.cpp) +ament_target_dependencies(collision_check ament_index_cpp Eigen3 eigen3_cmake_module rclcpp std_msgs nav_msgs trajectory_msgs tf2 ompl rclcpp_lifecycle) +target_link_libraries(collision_check pinocchio::pinocchio) + + +if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + + set(ament_cmake_uncrustify_FOUND TRUE) + + ament_lint_auto_find_test_dependencies() +endif() + +install(TARGETS + ompl_planner + DESTINATION lib/blue_planner_cpp) + +install(TARGETS + collision_check + DESTINATION lib/blue_planner_cpp) + +install( + DIRECTORY include/ + DESTINATION include/blue_planner_cpp +) +install( + DIRECTORY launch + DESTINATION share/blue_planner_cpp +) + +# install( +# TARGETS +# blue_planner_cpp +# EXPORT +# export_blue_planner_cpp +# RUNTIME DESTINATION bin +# LIBRARY DESTINATION lib +# ARCHIVE DESTINATION lib +# INCLUDES DESTINATION include +# ) + +# ament_export_targets(export_blue_planner_cpp HAS_LIBRARY_TARGET) +# ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) + +ament_package() diff --git a/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp b/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp new file mode 100644 index 00000000..23f9968e --- /dev/null +++ b/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp @@ -0,0 +1,28 @@ +#ifndef OMPL_PLANNER_HPP +#define OMPL_PLANNER_HPP + +#include "rclcpp/rclcpp.hpp" +#include "nav_msgs/msg/odometry.hpp" +#include "trajectory_msgs/msg/joint_trajectory.hpp" +#include "trajectory_msgs/msg/joint_trajectory_point.hpp" +#include "tf2/LinearMath/Quaternion.h" +#include "tf2/LinearMath/Matrix3x3.h" + + +class MoveBluerov : public rclcpp::Node { +public: + MoveBluerov(std::string odom_topic, std::string controller_topic, std::string node_name, std::string frame_id); + std::string frame_id_; +private: + void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg); + void issue_jt_control_command(); + void planner(); + + rclcpp::Subscription::SharedPtr subscription_; + rclcpp::Publisher::SharedPtr publisher_; + rclcpp::TimerBase::SharedPtr timer_; + std::vector odom_pose_position_; + std::vector odom_pose_orientation_rpy_; +}; + +#endif // OMPL_PLANNER_HPP diff --git a/blue_planner_cpp/launch/multi_robot.launch.yaml b/blue_planner_cpp/launch/multi_robot.launch.yaml new file mode 100644 index 00000000..d4ff2691 --- /dev/null +++ b/blue_planner_cpp/launch/multi_robot.launch.yaml @@ -0,0 +1,99 @@ +launch: + + - let: + name: use_sim + value: "true" + + - let: + name: description_file + value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro + + - group: + - let: + name: namespace + value: "rob_1" + + - let: + name: prefix + value: "rob_1/" + + - push-ros-namespace: + namespace: "$(var namespace)" + + - let: + name: fdm_port_in + value: "9002" + + - let: + name: fdm_port_out + value: "9003" + + - let: + name: use_mavros_odom + value: "true" + + - let: + name: mavros_odom_topic + value: /rob_1/local_position/odom + + - let: + name: robot_description + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') + + + # # Nodes + - node: + pkg: robot_state_publisher + exec: robot_state_publisher + param: + - name: robot_description + value: $(var robot_description) + - name: use_sim_time + value: $(var use_sim) + - name: tf_prefix + value: $(var prefix) + + - group: + - let: + name: namespace + value: "rob_3" + + - let: + name: prefix + value: "rob_3/" + + - push-ros-namespace: + namespace: "$(var namespace)" + + - let: + name: fdm_port_in + value: "9012" + + - let: + name: fdm_port_out + value: "9013" + + - let: + name: use_mavros_odom + value: "true" + + - let: + name: mavros_odom_topic + value: /rob_3/local_position/odom + + - let: + name: robot_description + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') + + + # # Nodes + - node: + pkg: robot_state_publisher + exec: robot_state_publisher + param: + - name: robot_description + value: $(var robot_description) + - name: use_sim_time + value: $(var use_sim) + - name: tf_prefix + value: $(var prefix) diff --git a/blue_planner_cpp/package.xml b/blue_planner_cpp/package.xml new file mode 100644 index 00000000..aca09690 --- /dev/null +++ b/blue_planner_cpp/package.xml @@ -0,0 +1,33 @@ + + + + blue_planner_cpp + 0.0.0 + OMPL integration with blueROV + blue + Apache-2.0 + + ament_cmake + + + rclcpp + std_msgs + nav_msgs + tf2 + + + ompl + + + ament_index_cpp + eigen + eigen3_cmake_module + pinocchio + + ament_lint_auto + ament_lint_common + + + ament_cmake + + diff --git a/blue_planner_cpp/src/collision_check.cpp b/blue_planner_cpp/src/collision_check.cpp new file mode 100644 index 00000000..4662280a --- /dev/null +++ b/blue_planner_cpp/src/collision_check.cpp @@ -0,0 +1,195 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void perform_collision_checking(const pinocchio::Model &model, const pinocchio::GeometryModel &collision_model) +{ + pinocchio::Data data(model); + pinocchio::GeometryData collision_data(collision_model); + + // Get a joint configuration. + Eigen::VectorXd q(model.nq); + q << 0.0, -0.785, -3.14, -1.57, 1.57, 0.0; + std::cout << "Joint configuration: " << std::endl << q << std::endl << std::endl; + + // Get the frame ID of the end effector for later lookups. + const auto ee_frame_id = model.getFrameId("rob_1/base_link"); + + // Perform forward kinematics and get a transform. + pinocchio::framesForwardKinematics(model, data, q); + std::cout << "Frame transform: " << std::endl << data.oMf[ee_frame_id] << std::endl; + + // Get a Jacobian at a specific frame. + Eigen::MatrixXd ee_jacobian(6, model.nv); + pinocchio::computeFrameJacobian(model, data, q, ee_frame_id, ee_jacobian); + std::cout << "Frame Jacobian: " << std::endl << ee_jacobian << std::endl << std::endl; + + // Check collisions. + pinocchio::computeCollisions(model, data, collision_model, collision_data, q); + for (size_t k = 0; k < collision_model.collisionPairs.size(); ++k) + { + const auto &collision_pair = collision_model.collisionPairs[k]; + if (collision_data.collisionResults[k].isCollision()) + { + std::cout << "Collision detected between " << collision_model.geometryObjects[collision_pair.first].name + << " and " << collision_model.geometryObjects[collision_pair.second].name << std::endl; + } + } +} + +void process_urdf(const std::string &urdf_xml) +{ + // Save the URDF XML to a file + std::ofstream urdf_file("/tmp/robot_description.urdf"); + if (urdf_file.is_open()) + { + urdf_file << urdf_xml; + urdf_file.close(); + RCLCPP_INFO(rclcpp::get_logger("urdf_subscriber"), "URDF XML saved to /tmp/robot_description.urdf"); + } + else + { + RCLCPP_ERROR(rclcpp::get_logger("urdf_subscriber"), "Failed to open file for writing URDF XML"); + return; + } + + // Create a set of Pinocchio models and data. + pinocchio::Model model; + pinocchio::urdf::buildModel("/tmp/robot_description.urdf", model); + + pinocchio::GeometryModel visual_model; + pinocchio::urdf::buildGeom(model, "/tmp/robot_description.urdf", pinocchio::VISUAL, visual_model); + + pinocchio::GeometryModel collision_model; + pinocchio::urdf::buildGeom(model, "/tmp/robot_description.urdf", pinocchio::COLLISION, collision_model); + + perform_collision_checking(model, collision_model); +} + +int main(int argc, char* argv[]) +{ + rclcpp::init(argc, argv); + auto node = rclcpp::Node::make_shared("urdf_subscriber"); + + const auto timeout = std::chrono::seconds(1); + std::promise xml_promise; + std::shared_future xml_future(xml_promise.get_future()); + + std::function fun = + [&xml_promise](const std_msgs::msg::String::SharedPtr msg) { + xml_promise.set_value(msg->data); + }; + + rclcpp::Subscription::SharedPtr description_subs; + description_subs = node->create_subscription( + "/rob_1/robot_description", rclcpp::QoS(1).transient_local(), fun); + + rclcpp::executors::SingleThreadedExecutor executor; + executor.add_node(node); + + // Spin the executor until the URDF XML is received or timeout occurs + if (executor.spin_until_future_complete(xml_future, timeout) == rclcpp::FutureReturnCode::SUCCESS) + { + std::string urdf_xml = xml_future.get(); + RCLCPP_INFO(node->get_logger(), "Received URDF XML"); + process_urdf(urdf_xml); + } + else + { + RCLCPP_ERROR(node->get_logger(), "Failed to receive URDF XML within the timeout period"); + } + + rclcpp::shutdown(); + return 0; +} + +// #include + +// #include "ament_index_cpp/get_package_share_directory.hpp" +// #include "pinocchio/algorithm/frames.hpp" +// #include "pinocchio/algorithm/geometry.hpp" +// #include "pinocchio/algorithm/jacobian.hpp" +// #include "pinocchio/algorithm/joint-configuration.hpp" +// #include "pinocchio/parsers/urdf.hpp" +// #include "pinocchio/parsers/srdf.hpp" +// #include "rclcpp/rclcpp.hpp" + +// int main(int /*argc*/, char* /*argv*/ []) +// { +// // Get the URDF and SRDF file paths. +// const auto package_share_path = ament_index_cpp::get_package_share_directory("learn_ros2"); +// const auto urdf_path = std::filesystem::path(package_share_path) / "ur_robot_model" / "ur5_gripper.urdf"; +// const auto srdf_path = std::filesystem::path(package_share_path) / "ur_robot_model" / "ur5_gripper.srdf"; + +// // Create a set of Pinocchio models and data. +// pinocchio::Model model; +// pinocchio::urdf::buildModel(urdf_path, model); + +// pinocchio::GeometryModel visual_model; +// pinocchio::urdf::buildGeom(model, urdf_path, pinocchio::VISUAL, visual_model); + +// pinocchio::GeometryModel collision_model; +// pinocchio::urdf::buildGeom(model, urdf_path, pinocchio::COLLISION, collision_model); +// collision_model.addAllCollisionPairs(); +// pinocchio::srdf::removeCollisionPairs(model, collision_model, srdf_path); + +// pinocchio::Data data(model); +// pinocchio::GeometryData collision_data(collision_model); + +// // Get a joint configuration. +// Eigen::VectorXd q(model.nq); +// q << 0.0, -0.785, -3.14, -1.57, 1.57, 0.0; +// std::cout << "Joint configuration: " << std::endl << q << std::endl << std::endl; + +// // Get the frame ID of the end effector for later lookups. +// const auto ee_frame_id = model.getFrameId("ee_link"); + +// // Perform forward kinematics and get a transform. +// pinocchio::framesForwardKinematics(model, data, q); +// std::cout << "Frame transform: " << std::endl << data.oMf[ee_frame_id] << std::endl; + +// // Get a Jacobian at a specific frame. +// Eigen::MatrixXd ee_jacobian(6, model.nv); +// pinocchio::computeFrameJacobian(model, data, q, ee_frame_id, ee_jacobian); +// std::cout << "Frame Jacobian: " << std::endl << ee_jacobian << std::endl << std::endl; + +// // Check collisions. +// pinocchio::computeCollisions(model, data, collision_model, collision_data, q); +// for (size_t k = 0; k < collision_model.collisionPairs.size(); ++k) +// { +// const auto& cp = collision_model.collisionPairs[k]; +// const auto& cr = collision_data.collisionResults[k]; +// if (cr.isCollision()) +// { +// const auto& body1 = collision_model.geometryObjects[cp.first].name; +// const auto& body2 = collision_model.geometryObjects[cp.second].name; +// std::cout << "Collision detected between " << body1 << " and " << body2 << std::endl; +// } +// } + +// return 0; +// } diff --git a/blue_planner_cpp/src/joint_traj_planner.cpp b/blue_planner_cpp/src/joint_traj_planner.cpp new file mode 100644 index 00000000..36db8348 --- /dev/null +++ b/blue_planner_cpp/src/joint_traj_planner.cpp @@ -0,0 +1,96 @@ +#include "rclcpp/rclcpp.hpp" +#include "nav_msgs/msg/odometry.hpp" +#include "trajectory_msgs/msg/joint_trajectory.hpp" +#include "tf2/LinearMath/Quaternion.h" +#include "tf2/LinearMath/Matrix3x3.h" + +std::vector position_to_list(const geometry_msgs::msg::Point &position) { + return {position.x, position.y, position.z}; +} + +std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { + return {orientation.x, orientation.y, orientation.z, orientation.w}; +} + +class MoveBluerov : public rclcpp::Node { +public: + MoveBluerov() : Node("move_bluerov") { + subscription_ = this->create_subscription( + "/model/bluerov2_heavy/odometry", 10, + std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) + ); + + publisher_ = this->create_publisher( + "/jt_controller/joint_trajectory", 10 + ); + + timer_ = this->create_wall_timer( + std::chrono::seconds(2), + std::bind(&MoveBluerov::issue_jt_control_command, this) + ); + } + +private: + void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { + odom_pose_position_ = position_to_list(msg->pose.pose.position); + tf2::Quaternion q( + msg->pose.pose.orientation.x, + msg->pose.pose.orientation.y, + msg->pose.pose.orientation.z, + msg->pose.pose.orientation.w + ); + tf2::Matrix3x3 m(q); + double roll, pitch, yaw; + m.getRPY(roll, pitch, yaw); + odom_pose_orientation_rpy_ = {roll, pitch, yaw}; + } + + void issue_jt_control_command() { + RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", + odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], + odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); + + std::vector joint_state = odom_pose_position_; + joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); + + if (!joint_state.empty()) { + trajectory_msgs::msg::JointTrajectoryPoint point1, point2; + point1.time_from_start = rclcpp::Duration(0, 0); + point2.time_from_start = rclcpp::Duration(4, 0); + + point1.positions = joint_state; + std::vector vel_1(6, 0.0); + vel_1[0] = 0.2; + point1.velocities = vel_1; + + std::vector pos_2 = joint_state; + pos_2[0] += 0.2 * 4.0; + point2.positions = pos_2; + std::vector vel_2(6, 0.0); + point2.velocities = vel_2; + + trajectory_msgs::msg::JointTrajectory trajectory; + trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; + trajectory.points = {point1, point2}; + trajectory.header.stamp = this->get_clock()->now(); + trajectory.header.frame_id = "base_link"; + + publisher_->publish(trajectory); + RCLCPP_INFO(this->get_logger(), "published trajectory"); + } + } + + rclcpp::Subscription::SharedPtr subscription_; + rclcpp::Publisher::SharedPtr publisher_; + rclcpp::TimerBase::SharedPtr timer_; + std::vector odom_pose_position_; + std::vector odom_pose_orientation_rpy_; +}; + +int main(int argc, char **argv) { + rclcpp::init(argc, argv); + auto node = std::make_shared(); + rclcpp::spin(node); + rclcpp::shutdown(); + return 0; +} diff --git a/blue_planner_cpp/src/ompl_planner.cpp b/blue_planner_cpp/src/ompl_planner.cpp new file mode 100644 index 00000000..675ec6a7 --- /dev/null +++ b/blue_planner_cpp/src/ompl_planner.cpp @@ -0,0 +1,369 @@ +#include "rclcpp/rclcpp.hpp" +#include "nav_msgs/msg/odometry.hpp" +#include "trajectory_msgs/msg/joint_trajectory.hpp" +#include "tf2/LinearMath/Quaternion.h" +#include "tf2/LinearMath/Matrix3x3.h" +#include +#include +#include +#include + +std::vector position_to_list(const geometry_msgs::msg::Point &position) { + return {position.x, position.y, position.z}; +} + +std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { + return {orientation.x, orientation.y, orientation.z, orientation.w}; +} + +class MoveBluerov : public rclcpp::Node { +public: + MoveBluerov(std::string odom_topic, std::string controller_topic, std::string node_name, std::string frame_id) : Node(node_name) { + RCLCPP_INFO(this->get_logger(), "MoveBluerov node started"); + subscription_ = this->create_subscription( + odom_topic, 10, + std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) + ); + + publisher_ = this->create_publisher( + controller_topic, 10 + ); + + timer_ = this->create_wall_timer( + std::chrono::seconds(2), + std::bind(&MoveBluerov::issue_jt_control_command, this) + ); + frame_id_ = frame_id; + } + + void planner(std::vector start_state, std::vector goal_state) { + auto space(std::make_shared(6)); + + ompl::base::RealVectorBounds bounds(6); + bounds.setLow(0, -100); + bounds.setHigh(0, 100); + bounds.setLow(1, -100); + bounds.setHigh(1, 100); + bounds.setLow(2, -100); + bounds.setHigh(2, 100); + bounds.setLow(3, -M_PI); + bounds.setHigh(3, M_PI); + bounds.setLow(4, -M_PI); + bounds.setHigh(4, M_PI); + bounds.setLow(5, -M_PI); + bounds.setHigh(5, M_PI); + + space->setBounds(bounds); + + ompl::geometric::SimpleSetup ss(space); + + ss.setStateValidityChecker([](const ompl::base::State *state) { + const auto *pos = state->as(); + // return (pos->values[0] * pos->values[0] + pos->values[1] * pos->values[1] < 1); + return (pos->values[0] >= -100 && pos->values[0] <= 100 && + pos->values[1] >= -100 && pos->values[1] <= 100 && + pos->values[2] >= -100 && pos->values[2] <= 100 && + pos->values[3] >= -M_PI && pos->values[3] <= M_PI && + pos->values[4] >= -M_PI && pos->values[4] <= M_PI && + pos->values[5] >= -M_PI && pos->values[5] <= M_PI); + }); + + ompl::base::ScopedState<> start(space); + start->as()->values[0] = start_state[0]; + start->as()->values[1] = start_state[1]; + start->as()->values[2] = start_state[2]; + start->as()->values[3] = start_state[3]; + start->as()->values[4] = start_state[4]; + start->as()->values[5] = start_state[5]; + + ompl::base::ScopedState<> goal(space); + goal->as()->values[0] = goal_state[0]; + goal->as()->values[1] = goal_state[1]; + goal->as()->values[2] = goal_state[2]; + goal->as()->values[3] = goal_state[3]; + goal->as()->values[4] = goal_state[4]; + goal->as()->values[5] = goal_state[5]; + + ss.setStartAndGoalStates(start, goal); + + ss.setPlanner(std::make_shared(ss.getSpaceInformation())); + ompl::base::PlannerStatus solved = ss.solve(1.0); + + if (solved) { + RCLCPP_INFO(this->get_logger(), "Found solution:"); + ompl::geometric::PathGeometric path = ss.getSolutionPath(); + get_trajectory(path); + } else { + RCLCPP_INFO(this->get_logger(), "No solution found"); + } + } + + void print_trajectory(ompl::geometric::PathGeometric path) { + for (std::size_t i = 0; i < path.getStateCount(); ++i) { + const auto *state = path.getState(i)->as(); + RCLCPP_INFO(this->get_logger(), "State %zu: [%f, %f, %f, %f, %f, %f]", i, + state->values[0], state->values[1], state->values[2], + state->values[3], state->values[4], state->values[5]); + } + } + + void get_trajectory(ompl::geometric::PathGeometric path) { + trajectory_msgs::msg::JointTrajectory trajectory; + trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; + for (std::size_t i = 0; i < path.getStateCount(); ++i) { + const auto *state = path.getState(i)->as(); + trajectory_msgs::msg::JointTrajectoryPoint point; + point.time_from_start = rclcpp::Duration(4*i, 0); + point.positions = {state->values[0], state->values[1], state->values[2], + state->values[3], state->values[4], state->values[5]}; + trajectory.points.push_back(point); + } + trajectory.header.stamp = this->get_clock()->now(); + trajectory.header.frame_id = frame_id_; + publisher_->publish(trajectory); + RCLCPP_INFO(this->get_logger(), "published trajectory"); + } +private: + void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { + odom_pose_position_ = position_to_list(msg->pose.pose.position); + tf2::Quaternion q( + msg->pose.pose.orientation.x, + msg->pose.pose.orientation.y, + msg->pose.pose.orientation.z, + msg->pose.pose.orientation.w + ); + tf2::Matrix3x3 m(q); + double roll, pitch, yaw; + m.getRPY(roll, pitch, yaw); + odom_pose_orientation_rpy_ = {roll, pitch, yaw}; + } + + void issue_jt_control_command() { + RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", + odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], + odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); + + std::vector joint_state = odom_pose_position_; + joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); + + std::vector start_state, goal_state; + if (!joint_state.empty()) { + start_state = joint_state; + goal_state = joint_state; + goal_state[0] += 0.2 * 4.0; + goal_state[1] += 0.2 * 4.0; + goal_state[2] += 0.2 * 4.0; + RCLCPP_INFO(this->get_logger(), "start: [%f, %f, %f], goal: [%f, %f, %f]", + start_state[0], start_state[1], start_state[2], + goal_state[0], goal_state[1], goal_state[2]); + + planner(start_state, goal_state); + // trajectory_msgs::msg::JointTrajectoryPoint point1, point2; + // point1.time_from_start = rclcpp::Duration(0, 0); + // point2.time_from_start = rclcpp::Duration(4, 0); + + // point1.positions = joint_state; + // std::vector vel_1(6, 0.0); + // vel_1[0] = 0.2; + // point1.velocities = vel_1; + + // std::vector pos_2 = joint_state; + // pos_2[0] += 0.2 * 4.0; + // point2.positions = pos_2; + // std::vector vel_2(6, 0.0); + // point2.velocities = vel_2; + + // trajectory_msgs::msg::JointTrajectory trajectory; + // trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; + // trajectory.points = {point1, point2}; + // trajectory.header.stamp = this->get_clock()->now(); + // trajectory.header.frame_id = "base_link"; + + // publisher_->publish(trajectory); + // RCLCPP_INFO(this->get_logger(), "published trajectory"); + } + } + + + rclcpp::Subscription::SharedPtr subscription_; + rclcpp::Publisher::SharedPtr publisher_; + rclcpp::TimerBase::SharedPtr timer_; + std::vector odom_pose_position_; + std::vector odom_pose_orientation_rpy_; + std::string frame_id_; + +}; + +// int main(int argc, char **argv) { +// #include +// #include + +// Assuming MoveBluerov is your custom node class +// #include "your_package/move_bluerov.hpp" + +int main(int argc, char* argv[]) { + rclcpp::init(argc, argv); + + // Create the first node + std::string odom_topic = "/model/rob_1/bluerov2_heavy/odometry"; + std::string controller_topic = "/rob_1/jt_controller/joint_trajectory"; + auto node = std::make_shared(odom_topic, controller_topic, "r1_move_node", "rob_1/base_link"); + + // Create the second node + std::string odom_topic_2 = "/model/rob_3/bluerov2_heavy/odometry"; + std::string controller_topic_2 = "/rob_3/jt_controller/joint_trajectory"; + auto node_2 = std::make_shared(odom_topic_2, controller_topic_2, "r3_move_node", "rob_3/base_link"); + + // Create an executor and add both nodes to it + rclcpp::executors::SingleThreadedExecutor executor; + executor.add_node(node); + executor.add_node(node_2); + + // Spin the executor - this will handle callbacks for both nodes + executor.spin(); + + // If you need to call specific methods on your nodes: + // This can be done before spinning the executor if it's a one-time setup + // node->planner(); + + // Or you can use a separate thread if you need to call methods while the executor is spinning + // std::thread planner_thread([&node]() { + // node->planner(); + // }); + + // Cleanup + rclcpp::shutdown(); + + // If you used the thread approach: + // planner_thread.join(); + + return 0; + } + + +// #include "blue_planner_cpp/ompl_planner.hpp" +// #include +// #include +// #include + +// std::vector position_to_list(const geometry_msgs::msg::Point &position) { +// return {position.x, position.y, position.z}; +// } + +// std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { +// return {orientation.x, orientation.y, orientation.z, orientation.w}; +// } + +// MoveBluerov::MoveBluerov() : Node("move_bluerov") { +// subscription_ = this->create_subscription( +// "/model/bluerov2_heavy/odometry", 10, +// std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) +// ); + +// publisher_ = this->create_publisher( +// "/jt_controller/joint_trajectory", 10 +// ); + +// timer_ = this->create_wall_timer( +// std::chrono::seconds(2), +// std::bind(&MoveBluerov::issue_jt_control_command, this) +// ); +// } + +// void MoveBluerov::odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { +// odom_pose_position_ = position_to_list(msg->pose.pose.position); +// tf2::Quaternion q( +// msg->pose.pose.orientation.x, +// msg->pose.pose.orientation.y, +// msg->pose.pose.orientation.z, +// msg->pose.pose.orientation.w +// ); +// tf2::Matrix3x3 m(q); +// double roll, pitch, yaw; +// m.getRPY(roll, pitch, yaw); +// odom_pose_orientation_rpy_ = {roll, pitch, yaw}; +// } + +// void MoveBluerov::issue_jt_control_command() { +// RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", +// odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], +// odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); + +// std::vector joint_state = odom_pose_position_; +// joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); + +// if (!joint_state.empty()) { +// trajectory_msgs::msg::JointTrajectoryPoint point1, point2; +// point1.time_from_start = rclcpp::Duration(0, 0); +// point2.time_from_start = rclcpp::Duration(4, 0); + +// point1.positions = joint_state; +// std::vector vel_1(6, 0.0); +// vel_1[0] = 0.2; +// point1.velocities = vel_1; + +// std::vector pos_2 = joint_state; +// pos_2[0] += 0.2 * 4.0; +// point2.positions = pos_2; +// std::vector vel_2(6, 0.0); +// point2.velocities = vel_2; + +// trajectory_msgs::msg::JointTrajectory trajectory; +// trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; +// trajectory.points = {point1, point2}; +// trajectory.header.stamp = this->get_clock()->now(); +// trajectory.header.frame_id = "base_link"; + +// publisher_->publish(trajectory); +// RCLCPP_INFO(this->get_logger(), "published trajectory"); +// } +// } + +// void MoveBluerov::planner() { +// auto space(std::make_shared(2)); + +// ompl::base::RealVectorBounds bounds(2); +// bounds.setLow(-1); +// bounds.setHigh(1); + +// space->setBounds(bounds); + +// ompl::geometric::SimpleSetup ss(space); + +// ss.setStateValidityChecker([](const ompl::base::State *state) { +// const auto *pos = state->as(); +// return (pos->values[0] * pos->values[0] + pos->values[1] * pos->values[1] < 1); +// }); + +// ompl::base::ScopedState<> start(space); +// start->as()->values[0] = -0.5; +// start->as()->values[1] = -0.5; + +// ompl::base::ScopedState<> goal(space); +// goal->as()->values[0] = 0.5; +// goal->as()->values[1] = 0.5; + +// ss.setStartAndGoalStates(start, goal); + +// ss.setPlanner(std::make_shared(ss.getSpaceInformation())); + +// ompl::base::PlannerStatus solved = ss.solve(1.0); + +// if (solved) +// { +// ss.simplifySolution(); +// ss.getSolutionPath().print(std::cout); +// } +// else +// { +// std::cout << "No solution found" << std::endl; +// } +// } + +// int main(int argc, char **argv) { +// rclcpp::init(argc, argv); +// auto node = std::make_shared(); +// rclcpp::spin(node); +// rclcpp::shutdown(); +// return 0; +// } diff --git a/frames_2025-01-29_00.48.32.gv b/frames_2025-01-29_00.48.32.gv new file mode 100644 index 00000000..ef44b5a6 --- /dev/null +++ b/frames_2025-01-29_00.48.32.gv @@ -0,0 +1,21 @@ +digraph G { +"base_footprint" -> "base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"camera_mount_link" -> "camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"base_link" -> "thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1738111712.5172453"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-01-29_00.48.32.pdf b/frames_2025-01-29_00.48.32.pdf new file mode 100644 index 0000000000000000000000000000000000000000..933b93a4c68bed1838efaef58120fe339dc9b7b7 GIT binary patch literal 17041 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 KAu2D1@c#hq2#w+Z literal 0 HcmV?d00001 diff --git a/frames_2025-02-05_19.01.53.gv b/frames_2025-02-05_19.01.53.gv new file mode 100644 index 00000000..9210884e --- /dev/null +++ b/frames_2025-02-05_19.01.53.gv @@ -0,0 +1,21 @@ +digraph G { +"rob_2/base_footprint" -> "rob_2/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/camera_mount_link" -> "rob_2/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_2/base_link" -> "rob_2/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1738782113.6209211"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-05_19.01.53.pdf b/frames_2025-02-05_19.01.53.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d390a45aec5701542d908dea97263c3fc5fae0f GIT binary patch literal 17305 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 literal 0 HcmV?d00001 diff --git a/frames_2025-02-24_02.11.28.gv b/frames_2025-02-24_02.11.28.gv new file mode 100644 index 00000000..e4ae5e1d --- /dev/null +++ b/frames_2025-02-24_02.11.28.gv @@ -0,0 +1,21 @@ +digraph G { +"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_footprint" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740363088.6086278"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-24_02.11.28.pdf b/frames_2025-02-24_02.11.28.pdf new file mode 100644 index 0000000000000000000000000000000000000000..db66abe2a2747fbe675d1ded7229286d0bd2e458 GIT binary patch literal 17130 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 literal 0 HcmV?d00001 diff --git a/frames_2025-02-24_02.13.43.gv b/frames_2025-02-24_02.13.43.gv new file mode 100644 index 00000000..f30e4840 --- /dev/null +++ b/frames_2025-02-24_02.13.43.gv @@ -0,0 +1,21 @@ +digraph G { +"map" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.54\nBuffer length: 2.038\nMost recent transform: 24.799\nOldest transform: 22.761\n"]; +"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740363223.5896006"[ shape=plaintext ] ; +}->"map"; +} \ No newline at end of file diff --git a/frames_2025-02-24_02.13.43.pdf b/frames_2025-02-24_02.13.43.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e3e6eeb342c8beafe9c054bfea000d1af496cc69 GIT binary patch literal 17472 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%0A$Xlp=5yo`hrT4CTg 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 K$VB8s;r~DPc`CgC literal 0 HcmV?d00001 diff --git a/frames_2025-02-27_21.20.26.gv b/frames_2025-02-27_21.20.26.gv new file mode 100644 index 00000000..d7f7c767 --- /dev/null +++ b/frames_2025-02-27_21.20.26.gv @@ -0,0 +1,34 @@ +digraph G { +"map" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.21\nBuffer length: 4.521\nMost recent transform: 127.761\nOldest transform: 123.24\n"]; +"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740691226.581018"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-27_21.20.26.pdf b/frames_2025-02-27_21.20.26.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8fec31d0088441b82d6db92f5705c6993bc29c1 GIT binary patch literal 19445 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 WB(bOj9Mgstmc|xbs;aL3Zd?GVMJ56O literal 0 HcmV?d00001 diff --git a/frames_2025-02-28_22.53.39.gv b/frames_2025-02-28_22.53.39.gv new file mode 100644 index 00000000..e3f136f3 --- /dev/null +++ b/frames_2025-02-28_22.53.39.gv @@ -0,0 +1,21 @@ +digraph G { +"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740783219.5097263"[ shape=plaintext ] ; +}->"map"; +} \ No newline at end of file diff --git a/frames_2025-02-28_22.53.39.pdf b/frames_2025-02-28_22.53.39.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e0ad150b222fa5f4942fb631792912937b7373e6 GIT binary patch literal 17305 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

LRQj5mzcYu18EXJ6RMKs9as90H2Ht}@+lj! zJHTd=6S3oa?wbqelj3`pY-QA5Bf{xRQYn#_$nC1AO5#9~7gzFSYU;Ysw;}axKn*30 z=bc*kS;4L)LzU`MoUK*@)Nn`g;z)2ude>PE@o{Z*WYM9C7mRhWp}iB}eYTs=F0qHF zju^^8B<+@_r+pej!ABgjZNhvoVTWnyjlKule>^M{zNjNYIq(@o3mrddG!yx_9CGxd<3 zl+q!ejRfj~tifRC2Z`ZcU%3!!i18aGWEwMGkXtC16b5PClrI|L0k&?dHq8SYU;1J! znQd99j3B7EwBo(L1y6i6FXLtpqqqW+vLtpS!snCHqhP~eZ`a_?v-aW&3ZXL<2b<%n zXjaHXP{<;jWCIAI2gqm&EdyquGBXHkPt*9-dY+FEo)5sD4pz%AS3rF#WRd@i+xhxz z{lo2~WuamD%kTV?!vD88X4=1q_W#E~X3dB((=HmA-V;wKoFDu)Q+5y`$5CBRJwEWGfPVY%epM+=O>*2Y-8`PYX|2Lf5u$)Q4x&MqJxgi z_?=}5S7v(eveQDRtbmr(xA%7L7LaRl_uGgALIL7*s0-u1MV#UefoFR>@UUqI*8QPUZh60y4J=f`gT-Swnn7Cp(p># zn-AFHV3NdMLz-77x%v%TM|hhO&vhguo^>hrJO z{}H_NKcjTE1sX!pyx>iGP))qi6U}JzBa~ zQ1;KVv~(>0>feiu^<{_uM;o;COfQK3KV*!IjQ^^Sk&*ddWf@tR|6P{lU$&xUqWyPY zn3(8a(A_`#!ob{_U+g~rwkT-D!zRuh0O)F<*We@l@|G#nf>x~Zhwf=r> aFLw62w)VefnwE)~l?95BP*7S3>i+|yrXwo= literal 0 HcmV?d00001 diff --git a/frames_2025-02-28_22.58.39.gv b/frames_2025-02-28_22.58.39.gv new file mode 100644 index 00000000..545c92c6 --- /dev/null +++ b/frames_2025-02-28_22.58.39.gv @@ -0,0 +1 @@ +digraph G { "No tf data received" } \ No newline at end of file diff --git a/frames_2025-02-28_22.58.39.pdf b/frames_2025-02-28_22.58.39.pdf new file mode 100644 index 0000000000000000000000000000000000000000..81c856177d097dc497ac93c6f1acb8b4e416bc15 GIT binary patch literal 5935 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 literal 0 HcmV?d00001 diff --git a/frames_2025-02-28_22.59.49.gv b/frames_2025-02-28_22.59.49.gv new file mode 100644 index 00000000..c8c1efe1 --- /dev/null +++ b/frames_2025-02-28_22.59.49.gv @@ -0,0 +1,21 @@ +digraph G { +"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740783589.3686516"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-28_22.59.49.pdf b/frames_2025-02-28_22.59.49.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a2047f39151f9099eed056fbfa220087dc71c9bd GIT binary patch literal 17304 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 "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740783740.0438437"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-28_23.02.20.pdf b/frames_2025-02-28_23.02.20.pdf new file mode 100644 index 0000000000000000000000000000000000000000..63bd9cff78a398997ccf4f0221c5b38f0f46f215 GIT binary patch literal 17136 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 z

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 "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"map" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.251\nBuffer length: 3.781\nMost recent transform: 26.644\nOldest transform: 22.863\n"]; +"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; +edge [style=invis]; + subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; +"Recorded at time: 1740785017.9126751"[ shape=plaintext ] ; +}->"odom"; +} \ No newline at end of file diff --git a/frames_2025-02-28_23.23.37.pdf b/frames_2025-02-28_23.23.37.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97695b4530646296159ea74f243da8c52b084144 GIT binary patch literal 17479 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 l{{MlyUoLdw-~RX8qwVZ + +Qt SVG Document +Generated with Qt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tf2_tree_ns_single_rob.pdf b/tf2_tree_ns_single_rob.pdf new file mode 100644 index 0000000000000000000000000000000000000000..899857d46715416318db81c4828d36b9441dda24 GIT binary patch literal 17317 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 Date: Mon, 9 Jun 2025 00:41:49 +0000 Subject: [PATCH 69/72] current ghcr --- .devcontainer/nvidia/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/nvidia/Dockerfile b/.devcontainer/nvidia/Dockerfile index 295e07f9..7f910ab3 100644 --- a/.devcontainer/nvidia/Dockerfile +++ b/.devcontainer/nvidia/Dockerfile @@ -1,5 +1,5 @@ # FROM ghcr.io/jbvakshaya/blue:iron-nvidia-ompl -FROM ghcr.io/jbvakshaya/blue:iron-nvidia-multi-robots-mp_no_pinocchio +FROM ghcr.io/jbvakshaya/blue:iron-nvidia-multi-robots-recent # With above image we probably don't need to install any other dependencies # FROM ghcr.io/robotic-decision-making-lab/blue:iron-desktop-nvidia From ce089e97def4a22e9ba24365e49517d529da4587 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Tue, 10 Jun 2025 16:49:56 -0700 Subject: [PATCH 70/72] clean up --- blue_demos/CMakeLists.txt | 1 - .../launch/test_gz_to_ros_bridge.launch.py | 31 - .../description/gazebo/urdf/obstacles.sdf | 49 - .../config/ros_gz_obstacles.yaml | 48 - blue_planner_cpp/CMakeLists.txt | 117 - .../include/blue_planner_cpp/ompl_planner.hpp | 28 - .../launch/multi_robot.launch.yaml | 99 - blue_planner_cpp/package.xml | 33 - blue_planner_cpp/src/collision_check.cpp | 195 - blue_planner_cpp/src/joint_traj_planner.cpp | 96 - blue_planner_cpp/src/ompl_planner.cpp | 369 - blue_planner_py/LICENSE | 202 - blue_planner_py/blue_planner_py/__init__.py | 0 blue_planner_py/blue_planner_py/plan_node.py | 103 - .../publish_to_ismc_ref_node.py | 63 - .../blue_planner_py/subscribe_to_odom_node.py | 57 - blue_planner_py/package.xml | 24 - blue_planner_py/resource/blue_planner_py | 0 blue_planner_py/setup.cfg | 4 - blue_planner_py/setup.py | 27 - blue_planner_py/test/test_copyright.py | 25 - blue_planner_py/test/test_flake8.py | 25 - blue_planner_py/test/test_pep257.py | 23 - frames_2025-01-29_00.48.32.gv | 21 - frames_2025-01-29_00.48.32.pdf | Bin 17041 -> 0 bytes frames_2025-02-05_19.01.53.gv | 21 - frames_2025-02-05_19.01.53.pdf | Bin 17305 -> 0 bytes frames_2025-02-24_02.11.28.gv | 21 - frames_2025-02-24_02.11.28.pdf | Bin 17130 -> 0 bytes frames_2025-02-24_02.13.43.gv | 21 - frames_2025-02-24_02.13.43.pdf | Bin 17472 -> 0 bytes frames_2025-02-27_21.20.26.gv | 34 - frames_2025-02-27_21.20.26.pdf | Bin 19445 -> 0 bytes frames_2025-02-28_22.53.39.gv | 21 - frames_2025-02-28_22.53.39.pdf | Bin 17305 -> 0 bytes frames_2025-02-28_22.58.39.gv | 1 - frames_2025-02-28_22.58.39.pdf | Bin 5935 -> 0 bytes frames_2025-02-28_22.59.49.gv | 21 - frames_2025-02-28_22.59.49.pdf | Bin 17304 -> 0 bytes frames_2025-02-28_23.02.20.gv | 21 - frames_2025-02-28_23.02.20.pdf | Bin 17136 -> 0 bytes frames_2025-02-28_23.23.37.gv | 21 - frames_2025-02-28_23.23.37.pdf | Bin 17479 -> 0 bytes rob_1_controller_manager_param.yaml | 36 - rosgraph_ns_single_rob.svg | 6461 ----------------- tf2_tree_ns_single_rob.pdf | Bin 17317 -> 0 bytes 46 files changed, 8319 deletions(-) delete mode 100644 blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py delete mode 100644 blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf delete mode 100644 blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml delete mode 100644 blue_planner_cpp/CMakeLists.txt delete mode 100644 blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp delete mode 100644 blue_planner_cpp/launch/multi_robot.launch.yaml delete mode 100644 blue_planner_cpp/package.xml delete mode 100644 blue_planner_cpp/src/collision_check.cpp delete mode 100644 blue_planner_cpp/src/joint_traj_planner.cpp delete mode 100644 blue_planner_cpp/src/ompl_planner.cpp delete mode 100644 blue_planner_py/LICENSE delete mode 100644 blue_planner_py/blue_planner_py/__init__.py delete mode 100644 blue_planner_py/blue_planner_py/plan_node.py delete mode 100644 blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py delete mode 100644 blue_planner_py/blue_planner_py/subscribe_to_odom_node.py delete mode 100644 blue_planner_py/package.xml delete mode 100644 blue_planner_py/resource/blue_planner_py delete mode 100644 blue_planner_py/setup.cfg delete mode 100644 blue_planner_py/setup.py delete mode 100644 blue_planner_py/test/test_copyright.py delete mode 100644 blue_planner_py/test/test_flake8.py delete mode 100644 blue_planner_py/test/test_pep257.py delete mode 100644 frames_2025-01-29_00.48.32.gv delete mode 100644 frames_2025-01-29_00.48.32.pdf delete mode 100644 frames_2025-02-05_19.01.53.gv delete mode 100644 frames_2025-02-05_19.01.53.pdf delete mode 100644 frames_2025-02-24_02.11.28.gv delete mode 100644 frames_2025-02-24_02.11.28.pdf delete mode 100644 frames_2025-02-24_02.13.43.gv delete mode 100644 frames_2025-02-24_02.13.43.pdf delete mode 100644 frames_2025-02-27_21.20.26.gv delete mode 100644 frames_2025-02-27_21.20.26.pdf delete mode 100644 frames_2025-02-28_22.53.39.gv delete mode 100644 frames_2025-02-28_22.53.39.pdf delete mode 100644 frames_2025-02-28_22.58.39.gv delete mode 100644 frames_2025-02-28_22.58.39.pdf delete mode 100644 frames_2025-02-28_22.59.49.gv delete mode 100644 frames_2025-02-28_22.59.49.pdf delete mode 100644 frames_2025-02-28_23.02.20.gv delete mode 100644 frames_2025-02-28_23.02.20.pdf delete mode 100644 frames_2025-02-28_23.23.37.gv delete mode 100644 frames_2025-02-28_23.23.37.pdf delete mode 100644 rob_1_controller_manager_param.yaml delete mode 100644 rosgraph_ns_single_rob.svg delete mode 100644 tf2_tree_ns_single_rob.pdf diff --git a/blue_demos/CMakeLists.txt b/blue_demos/CMakeLists.txt index 9ec9fcbd..7cbd9d3c 100644 --- a/blue_demos/CMakeLists.txt +++ b/blue_demos/CMakeLists.txt @@ -20,7 +20,6 @@ install( DIRECTORY multi_robot/control_integration multi_robot/teleoperation multi_robot/description - multi_robot/motion_planning DESTINATION share/blue_demos/multi_robot ) diff --git a/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py b/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py deleted file mode 100644 index 691f6cdc..00000000 --- a/blue_demos/control_integration/launch/test_gz_to_ros_bridge.launch.py +++ /dev/null @@ -1,31 +0,0 @@ -from launch import LaunchDescription -from launch.actions import OpaqueFunction -from launch_ros.actions import Node - -# add ros_gz_bridge to the Python path -# ros_gz_bridge_root = os.path.join(os.path.dirname(__file__), "..", "..") -# sys.path.insert(0, os.path.abspath(ros_gz_bridge_root)) - -# from ros_gz_bridge import mappings # noqa: E402 - - -def bridge_setup(context, *args, **kwargs): - # gz_msgs_ver = LaunchConfiguration("gz_msgs_ver").perform(context) - # gz_msgs_ver = tuple(map(int, gz_msgs_ver.split("."))) - - # Bridge - bridge = Node( - package="ros_gz_bridge", - executable="parameter_bridge", - arguments=["/model/obs_1/pose@geometry_msgs/msg/Pose[gz.msgs.Pose"], - output="screen", - ) - return [bridge] - - -# f'/{m.unique()}@{m.ros2_string()}[{m.gz_string()}' -# for m in mappings(gz_msgs_ver) - - -def generate_launch_description(): - return LaunchDescription([OpaqueFunction(function=bridge_setup)]) diff --git a/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf b/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf deleted file mode 100644 index be83f854..00000000 --- a/blue_demos/multi_robot/description/gazebo/urdf/obstacles.sdf +++ /dev/null @@ -1,49 +0,0 @@ - - - - true - 6 7 0 0 0 0 - - - 900.0 - - 0.16666 - 0 - 0 - 0.16666 - 0 - 0.16666 - - - - - - 1 1 1 - - - - - - - 1 1 1 - - - - 1 0 0 1 - 1 0 0 1 - 1 0 0 1 - - - - - false - false - false - false - true - true - - - diff --git a/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml b/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml deleted file mode 100644 index 8b46aa46..00000000 --- a/blue_demos/multi_robot/motion_planning/config/ros_gz_obstacles.yaml +++ /dev/null @@ -1,48 +0,0 @@ -- gz_topic_name: "/model/obs_1/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_2/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_3/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_4/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_5/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_6/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_7/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_8/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - -- gz_topic_name: "/model/obs_9/pose" - ros_type_name: "geometry_msgs/msg/Pose" - gz_type_name: "gz.msgs.Pose" - direction: GZ_TO_ROS - - - - diff --git a/blue_planner_cpp/CMakeLists.txt b/blue_planner_cpp/CMakeLists.txt deleted file mode 100644 index b0e5a840..00000000 --- a/blue_planner_cpp/CMakeLists.txt +++ /dev/null @@ -1,117 +0,0 @@ -cmake_minimum_required(VERSION 3.8) -project(blue_planner_cpp) - -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra -Wpedantic) -endif() - -set(THIS_PACKAGE_INCLUDE_DEPENDS - rclcpp - rclcpp_lifecycle - std_msgs - nav_msgs - trajectory_msgs - tf2 - ompl - Eigen3 - ) - - -find_package(ament_cmake REQUIRED) -foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) - find_package(${Dependency} REQUIRED) -endforeach() - -find_package(ament_index_cpp REQUIRED) -find_package(Python3 REQUIRED COMPONENTS Interpreter Development) -find_package(eigen3_cmake_module REQUIRED) -find_package(pinocchio REQUIRED) -# add_library(blue_planner_cpp SHARED -# src/ompl_planner.cpp -# ) - -# target_include_directories(blue_planner_cpp -# PUBLIC -# $ -# $ -# ${EIGEN3_INCLUDE_DIR} -# PRIVATE -# ${PROJECT_SOURCE_DIR}/src -# ) -# target_compile_features(blue_planner_cpp PUBLIC cxx_std_17) -# target_link_libraries(blue_planner_cpp -# PUBLIC -# ${rclcpp_LIBRARIES} -# ) - -# target_compile_definitions(blue_planner_cpp PRIVATE "BLUE_PLANNER_CPP_BUILDING_DLL") -# ament_target_dependencies(blue_planner_cpp -# PUBLIC -# ${THIS_PACKAGE_INCLUDE_DEPENDS} -# ) - -include_directories( - include - /opt/ros/iron/include - /opt/ros/iron/include/ompl-1.6 - ${EIGEN3_INCLUDE_DIRS} - ${colcon_INCLUDE_DIRS} -) - -add_executable(ompl_planner src/ompl_planner.cpp) - -# target_compile_features(ompl_planner PUBLIC cxx_std_17) -# target_link_libraries(ompl_planner blue_planner_cpp) -target_link_libraries(ompl_planner PUBLIC ${OMPL_LIBRARIES}) - - -ament_target_dependencies(ompl_planner PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) -# target_include_directories(ompl_planner PUBLIC -# $ -# $) -# target_compile_features(ompl_planner PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 -add_executable(collision_check src/collision_check.cpp) -ament_target_dependencies(collision_check ament_index_cpp Eigen3 eigen3_cmake_module rclcpp std_msgs nav_msgs trajectory_msgs tf2 ompl rclcpp_lifecycle) -target_link_libraries(collision_check pinocchio::pinocchio) - - -if(BUILD_TESTING) - find_package(ament_lint_auto REQUIRED) - - set(ament_cmake_uncrustify_FOUND TRUE) - - ament_lint_auto_find_test_dependencies() -endif() - -install(TARGETS - ompl_planner - DESTINATION lib/blue_planner_cpp) - -install(TARGETS - collision_check - DESTINATION lib/blue_planner_cpp) - -install( - DIRECTORY include/ - DESTINATION include/blue_planner_cpp -) -install( - DIRECTORY launch - DESTINATION share/blue_planner_cpp -) - -# install( -# TARGETS -# blue_planner_cpp -# EXPORT -# export_blue_planner_cpp -# RUNTIME DESTINATION bin -# LIBRARY DESTINATION lib -# ARCHIVE DESTINATION lib -# INCLUDES DESTINATION include -# ) - -# ament_export_targets(export_blue_planner_cpp HAS_LIBRARY_TARGET) -# ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) - -ament_package() diff --git a/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp b/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp deleted file mode 100644 index 23f9968e..00000000 --- a/blue_planner_cpp/include/blue_planner_cpp/ompl_planner.hpp +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef OMPL_PLANNER_HPP -#define OMPL_PLANNER_HPP - -#include "rclcpp/rclcpp.hpp" -#include "nav_msgs/msg/odometry.hpp" -#include "trajectory_msgs/msg/joint_trajectory.hpp" -#include "trajectory_msgs/msg/joint_trajectory_point.hpp" -#include "tf2/LinearMath/Quaternion.h" -#include "tf2/LinearMath/Matrix3x3.h" - - -class MoveBluerov : public rclcpp::Node { -public: - MoveBluerov(std::string odom_topic, std::string controller_topic, std::string node_name, std::string frame_id); - std::string frame_id_; -private: - void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg); - void issue_jt_control_command(); - void planner(); - - rclcpp::Subscription::SharedPtr subscription_; - rclcpp::Publisher::SharedPtr publisher_; - rclcpp::TimerBase::SharedPtr timer_; - std::vector odom_pose_position_; - std::vector odom_pose_orientation_rpy_; -}; - -#endif // OMPL_PLANNER_HPP diff --git a/blue_planner_cpp/launch/multi_robot.launch.yaml b/blue_planner_cpp/launch/multi_robot.launch.yaml deleted file mode 100644 index d4ff2691..00000000 --- a/blue_planner_cpp/launch/multi_robot.launch.yaml +++ /dev/null @@ -1,99 +0,0 @@ -launch: - - - let: - name: use_sim - value: "true" - - - let: - name: description_file - value: $(find-pkg-share blue_demos)/control_integration/description/urdf/bluerov2_heavy.config.xacro - - - group: - - let: - name: namespace - value: "rob_1" - - - let: - name: prefix - value: "rob_1/" - - - push-ros-namespace: - namespace: "$(var namespace)" - - - let: - name: fdm_port_in - value: "9002" - - - let: - name: fdm_port_out - value: "9003" - - - let: - name: use_mavros_odom - value: "true" - - - let: - name: mavros_odom_topic - value: /rob_1/local_position/odom - - - let: - name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') - - - # # Nodes - - node: - pkg: robot_state_publisher - exec: robot_state_publisher - param: - - name: robot_description - value: $(var robot_description) - - name: use_sim_time - value: $(var use_sim) - - name: tf_prefix - value: $(var prefix) - - - group: - - let: - name: namespace - value: "rob_3" - - - let: - name: prefix - value: "rob_3/" - - - push-ros-namespace: - namespace: "$(var namespace)" - - - let: - name: fdm_port_in - value: "9012" - - - let: - name: fdm_port_out - value: "9013" - - - let: - name: use_mavros_odom - value: "true" - - - let: - name: mavros_odom_topic - value: /rob_3/local_position/odom - - - let: - name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') - - - # # Nodes - - node: - pkg: robot_state_publisher - exec: robot_state_publisher - param: - - name: robot_description - value: $(var robot_description) - - name: use_sim_time - value: $(var use_sim) - - name: tf_prefix - value: $(var prefix) diff --git a/blue_planner_cpp/package.xml b/blue_planner_cpp/package.xml deleted file mode 100644 index aca09690..00000000 --- a/blue_planner_cpp/package.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - blue_planner_cpp - 0.0.0 - OMPL integration with blueROV - blue - Apache-2.0 - - ament_cmake - - - rclcpp - std_msgs - nav_msgs - tf2 - - - ompl - - - ament_index_cpp - eigen - eigen3_cmake_module - pinocchio - - ament_lint_auto - ament_lint_common - - - ament_cmake - - diff --git a/blue_planner_cpp/src/collision_check.cpp b/blue_planner_cpp/src/collision_check.cpp deleted file mode 100644 index 4662280a..00000000 --- a/blue_planner_cpp/src/collision_check.cpp +++ /dev/null @@ -1,195 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void perform_collision_checking(const pinocchio::Model &model, const pinocchio::GeometryModel &collision_model) -{ - pinocchio::Data data(model); - pinocchio::GeometryData collision_data(collision_model); - - // Get a joint configuration. - Eigen::VectorXd q(model.nq); - q << 0.0, -0.785, -3.14, -1.57, 1.57, 0.0; - std::cout << "Joint configuration: " << std::endl << q << std::endl << std::endl; - - // Get the frame ID of the end effector for later lookups. - const auto ee_frame_id = model.getFrameId("rob_1/base_link"); - - // Perform forward kinematics and get a transform. - pinocchio::framesForwardKinematics(model, data, q); - std::cout << "Frame transform: " << std::endl << data.oMf[ee_frame_id] << std::endl; - - // Get a Jacobian at a specific frame. - Eigen::MatrixXd ee_jacobian(6, model.nv); - pinocchio::computeFrameJacobian(model, data, q, ee_frame_id, ee_jacobian); - std::cout << "Frame Jacobian: " << std::endl << ee_jacobian << std::endl << std::endl; - - // Check collisions. - pinocchio::computeCollisions(model, data, collision_model, collision_data, q); - for (size_t k = 0; k < collision_model.collisionPairs.size(); ++k) - { - const auto &collision_pair = collision_model.collisionPairs[k]; - if (collision_data.collisionResults[k].isCollision()) - { - std::cout << "Collision detected between " << collision_model.geometryObjects[collision_pair.first].name - << " and " << collision_model.geometryObjects[collision_pair.second].name << std::endl; - } - } -} - -void process_urdf(const std::string &urdf_xml) -{ - // Save the URDF XML to a file - std::ofstream urdf_file("/tmp/robot_description.urdf"); - if (urdf_file.is_open()) - { - urdf_file << urdf_xml; - urdf_file.close(); - RCLCPP_INFO(rclcpp::get_logger("urdf_subscriber"), "URDF XML saved to /tmp/robot_description.urdf"); - } - else - { - RCLCPP_ERROR(rclcpp::get_logger("urdf_subscriber"), "Failed to open file for writing URDF XML"); - return; - } - - // Create a set of Pinocchio models and data. - pinocchio::Model model; - pinocchio::urdf::buildModel("/tmp/robot_description.urdf", model); - - pinocchio::GeometryModel visual_model; - pinocchio::urdf::buildGeom(model, "/tmp/robot_description.urdf", pinocchio::VISUAL, visual_model); - - pinocchio::GeometryModel collision_model; - pinocchio::urdf::buildGeom(model, "/tmp/robot_description.urdf", pinocchio::COLLISION, collision_model); - - perform_collision_checking(model, collision_model); -} - -int main(int argc, char* argv[]) -{ - rclcpp::init(argc, argv); - auto node = rclcpp::Node::make_shared("urdf_subscriber"); - - const auto timeout = std::chrono::seconds(1); - std::promise xml_promise; - std::shared_future xml_future(xml_promise.get_future()); - - std::function fun = - [&xml_promise](const std_msgs::msg::String::SharedPtr msg) { - xml_promise.set_value(msg->data); - }; - - rclcpp::Subscription::SharedPtr description_subs; - description_subs = node->create_subscription( - "/rob_1/robot_description", rclcpp::QoS(1).transient_local(), fun); - - rclcpp::executors::SingleThreadedExecutor executor; - executor.add_node(node); - - // Spin the executor until the URDF XML is received or timeout occurs - if (executor.spin_until_future_complete(xml_future, timeout) == rclcpp::FutureReturnCode::SUCCESS) - { - std::string urdf_xml = xml_future.get(); - RCLCPP_INFO(node->get_logger(), "Received URDF XML"); - process_urdf(urdf_xml); - } - else - { - RCLCPP_ERROR(node->get_logger(), "Failed to receive URDF XML within the timeout period"); - } - - rclcpp::shutdown(); - return 0; -} - -// #include - -// #include "ament_index_cpp/get_package_share_directory.hpp" -// #include "pinocchio/algorithm/frames.hpp" -// #include "pinocchio/algorithm/geometry.hpp" -// #include "pinocchio/algorithm/jacobian.hpp" -// #include "pinocchio/algorithm/joint-configuration.hpp" -// #include "pinocchio/parsers/urdf.hpp" -// #include "pinocchio/parsers/srdf.hpp" -// #include "rclcpp/rclcpp.hpp" - -// int main(int /*argc*/, char* /*argv*/ []) -// { -// // Get the URDF and SRDF file paths. -// const auto package_share_path = ament_index_cpp::get_package_share_directory("learn_ros2"); -// const auto urdf_path = std::filesystem::path(package_share_path) / "ur_robot_model" / "ur5_gripper.urdf"; -// const auto srdf_path = std::filesystem::path(package_share_path) / "ur_robot_model" / "ur5_gripper.srdf"; - -// // Create a set of Pinocchio models and data. -// pinocchio::Model model; -// pinocchio::urdf::buildModel(urdf_path, model); - -// pinocchio::GeometryModel visual_model; -// pinocchio::urdf::buildGeom(model, urdf_path, pinocchio::VISUAL, visual_model); - -// pinocchio::GeometryModel collision_model; -// pinocchio::urdf::buildGeom(model, urdf_path, pinocchio::COLLISION, collision_model); -// collision_model.addAllCollisionPairs(); -// pinocchio::srdf::removeCollisionPairs(model, collision_model, srdf_path); - -// pinocchio::Data data(model); -// pinocchio::GeometryData collision_data(collision_model); - -// // Get a joint configuration. -// Eigen::VectorXd q(model.nq); -// q << 0.0, -0.785, -3.14, -1.57, 1.57, 0.0; -// std::cout << "Joint configuration: " << std::endl << q << std::endl << std::endl; - -// // Get the frame ID of the end effector for later lookups. -// const auto ee_frame_id = model.getFrameId("ee_link"); - -// // Perform forward kinematics and get a transform. -// pinocchio::framesForwardKinematics(model, data, q); -// std::cout << "Frame transform: " << std::endl << data.oMf[ee_frame_id] << std::endl; - -// // Get a Jacobian at a specific frame. -// Eigen::MatrixXd ee_jacobian(6, model.nv); -// pinocchio::computeFrameJacobian(model, data, q, ee_frame_id, ee_jacobian); -// std::cout << "Frame Jacobian: " << std::endl << ee_jacobian << std::endl << std::endl; - -// // Check collisions. -// pinocchio::computeCollisions(model, data, collision_model, collision_data, q); -// for (size_t k = 0; k < collision_model.collisionPairs.size(); ++k) -// { -// const auto& cp = collision_model.collisionPairs[k]; -// const auto& cr = collision_data.collisionResults[k]; -// if (cr.isCollision()) -// { -// const auto& body1 = collision_model.geometryObjects[cp.first].name; -// const auto& body2 = collision_model.geometryObjects[cp.second].name; -// std::cout << "Collision detected between " << body1 << " and " << body2 << std::endl; -// } -// } - -// return 0; -// } diff --git a/blue_planner_cpp/src/joint_traj_planner.cpp b/blue_planner_cpp/src/joint_traj_planner.cpp deleted file mode 100644 index 36db8348..00000000 --- a/blue_planner_cpp/src/joint_traj_planner.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "rclcpp/rclcpp.hpp" -#include "nav_msgs/msg/odometry.hpp" -#include "trajectory_msgs/msg/joint_trajectory.hpp" -#include "tf2/LinearMath/Quaternion.h" -#include "tf2/LinearMath/Matrix3x3.h" - -std::vector position_to_list(const geometry_msgs::msg::Point &position) { - return {position.x, position.y, position.z}; -} - -std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { - return {orientation.x, orientation.y, orientation.z, orientation.w}; -} - -class MoveBluerov : public rclcpp::Node { -public: - MoveBluerov() : Node("move_bluerov") { - subscription_ = this->create_subscription( - "/model/bluerov2_heavy/odometry", 10, - std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) - ); - - publisher_ = this->create_publisher( - "/jt_controller/joint_trajectory", 10 - ); - - timer_ = this->create_wall_timer( - std::chrono::seconds(2), - std::bind(&MoveBluerov::issue_jt_control_command, this) - ); - } - -private: - void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { - odom_pose_position_ = position_to_list(msg->pose.pose.position); - tf2::Quaternion q( - msg->pose.pose.orientation.x, - msg->pose.pose.orientation.y, - msg->pose.pose.orientation.z, - msg->pose.pose.orientation.w - ); - tf2::Matrix3x3 m(q); - double roll, pitch, yaw; - m.getRPY(roll, pitch, yaw); - odom_pose_orientation_rpy_ = {roll, pitch, yaw}; - } - - void issue_jt_control_command() { - RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", - odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], - odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); - - std::vector joint_state = odom_pose_position_; - joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); - - if (!joint_state.empty()) { - trajectory_msgs::msg::JointTrajectoryPoint point1, point2; - point1.time_from_start = rclcpp::Duration(0, 0); - point2.time_from_start = rclcpp::Duration(4, 0); - - point1.positions = joint_state; - std::vector vel_1(6, 0.0); - vel_1[0] = 0.2; - point1.velocities = vel_1; - - std::vector pos_2 = joint_state; - pos_2[0] += 0.2 * 4.0; - point2.positions = pos_2; - std::vector vel_2(6, 0.0); - point2.velocities = vel_2; - - trajectory_msgs::msg::JointTrajectory trajectory; - trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; - trajectory.points = {point1, point2}; - trajectory.header.stamp = this->get_clock()->now(); - trajectory.header.frame_id = "base_link"; - - publisher_->publish(trajectory); - RCLCPP_INFO(this->get_logger(), "published trajectory"); - } - } - - rclcpp::Subscription::SharedPtr subscription_; - rclcpp::Publisher::SharedPtr publisher_; - rclcpp::TimerBase::SharedPtr timer_; - std::vector odom_pose_position_; - std::vector odom_pose_orientation_rpy_; -}; - -int main(int argc, char **argv) { - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::spin(node); - rclcpp::shutdown(); - return 0; -} diff --git a/blue_planner_cpp/src/ompl_planner.cpp b/blue_planner_cpp/src/ompl_planner.cpp deleted file mode 100644 index 675ec6a7..00000000 --- a/blue_planner_cpp/src/ompl_planner.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include "rclcpp/rclcpp.hpp" -#include "nav_msgs/msg/odometry.hpp" -#include "trajectory_msgs/msg/joint_trajectory.hpp" -#include "tf2/LinearMath/Quaternion.h" -#include "tf2/LinearMath/Matrix3x3.h" -#include -#include -#include -#include - -std::vector position_to_list(const geometry_msgs::msg::Point &position) { - return {position.x, position.y, position.z}; -} - -std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { - return {orientation.x, orientation.y, orientation.z, orientation.w}; -} - -class MoveBluerov : public rclcpp::Node { -public: - MoveBluerov(std::string odom_topic, std::string controller_topic, std::string node_name, std::string frame_id) : Node(node_name) { - RCLCPP_INFO(this->get_logger(), "MoveBluerov node started"); - subscription_ = this->create_subscription( - odom_topic, 10, - std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) - ); - - publisher_ = this->create_publisher( - controller_topic, 10 - ); - - timer_ = this->create_wall_timer( - std::chrono::seconds(2), - std::bind(&MoveBluerov::issue_jt_control_command, this) - ); - frame_id_ = frame_id; - } - - void planner(std::vector start_state, std::vector goal_state) { - auto space(std::make_shared(6)); - - ompl::base::RealVectorBounds bounds(6); - bounds.setLow(0, -100); - bounds.setHigh(0, 100); - bounds.setLow(1, -100); - bounds.setHigh(1, 100); - bounds.setLow(2, -100); - bounds.setHigh(2, 100); - bounds.setLow(3, -M_PI); - bounds.setHigh(3, M_PI); - bounds.setLow(4, -M_PI); - bounds.setHigh(4, M_PI); - bounds.setLow(5, -M_PI); - bounds.setHigh(5, M_PI); - - space->setBounds(bounds); - - ompl::geometric::SimpleSetup ss(space); - - ss.setStateValidityChecker([](const ompl::base::State *state) { - const auto *pos = state->as(); - // return (pos->values[0] * pos->values[0] + pos->values[1] * pos->values[1] < 1); - return (pos->values[0] >= -100 && pos->values[0] <= 100 && - pos->values[1] >= -100 && pos->values[1] <= 100 && - pos->values[2] >= -100 && pos->values[2] <= 100 && - pos->values[3] >= -M_PI && pos->values[3] <= M_PI && - pos->values[4] >= -M_PI && pos->values[4] <= M_PI && - pos->values[5] >= -M_PI && pos->values[5] <= M_PI); - }); - - ompl::base::ScopedState<> start(space); - start->as()->values[0] = start_state[0]; - start->as()->values[1] = start_state[1]; - start->as()->values[2] = start_state[2]; - start->as()->values[3] = start_state[3]; - start->as()->values[4] = start_state[4]; - start->as()->values[5] = start_state[5]; - - ompl::base::ScopedState<> goal(space); - goal->as()->values[0] = goal_state[0]; - goal->as()->values[1] = goal_state[1]; - goal->as()->values[2] = goal_state[2]; - goal->as()->values[3] = goal_state[3]; - goal->as()->values[4] = goal_state[4]; - goal->as()->values[5] = goal_state[5]; - - ss.setStartAndGoalStates(start, goal); - - ss.setPlanner(std::make_shared(ss.getSpaceInformation())); - ompl::base::PlannerStatus solved = ss.solve(1.0); - - if (solved) { - RCLCPP_INFO(this->get_logger(), "Found solution:"); - ompl::geometric::PathGeometric path = ss.getSolutionPath(); - get_trajectory(path); - } else { - RCLCPP_INFO(this->get_logger(), "No solution found"); - } - } - - void print_trajectory(ompl::geometric::PathGeometric path) { - for (std::size_t i = 0; i < path.getStateCount(); ++i) { - const auto *state = path.getState(i)->as(); - RCLCPP_INFO(this->get_logger(), "State %zu: [%f, %f, %f, %f, %f, %f]", i, - state->values[0], state->values[1], state->values[2], - state->values[3], state->values[4], state->values[5]); - } - } - - void get_trajectory(ompl::geometric::PathGeometric path) { - trajectory_msgs::msg::JointTrajectory trajectory; - trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; - for (std::size_t i = 0; i < path.getStateCount(); ++i) { - const auto *state = path.getState(i)->as(); - trajectory_msgs::msg::JointTrajectoryPoint point; - point.time_from_start = rclcpp::Duration(4*i, 0); - point.positions = {state->values[0], state->values[1], state->values[2], - state->values[3], state->values[4], state->values[5]}; - trajectory.points.push_back(point); - } - trajectory.header.stamp = this->get_clock()->now(); - trajectory.header.frame_id = frame_id_; - publisher_->publish(trajectory); - RCLCPP_INFO(this->get_logger(), "published trajectory"); - } -private: - void odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { - odom_pose_position_ = position_to_list(msg->pose.pose.position); - tf2::Quaternion q( - msg->pose.pose.orientation.x, - msg->pose.pose.orientation.y, - msg->pose.pose.orientation.z, - msg->pose.pose.orientation.w - ); - tf2::Matrix3x3 m(q); - double roll, pitch, yaw; - m.getRPY(roll, pitch, yaw); - odom_pose_orientation_rpy_ = {roll, pitch, yaw}; - } - - void issue_jt_control_command() { - RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", - odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], - odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); - - std::vector joint_state = odom_pose_position_; - joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); - - std::vector start_state, goal_state; - if (!joint_state.empty()) { - start_state = joint_state; - goal_state = joint_state; - goal_state[0] += 0.2 * 4.0; - goal_state[1] += 0.2 * 4.0; - goal_state[2] += 0.2 * 4.0; - RCLCPP_INFO(this->get_logger(), "start: [%f, %f, %f], goal: [%f, %f, %f]", - start_state[0], start_state[1], start_state[2], - goal_state[0], goal_state[1], goal_state[2]); - - planner(start_state, goal_state); - // trajectory_msgs::msg::JointTrajectoryPoint point1, point2; - // point1.time_from_start = rclcpp::Duration(0, 0); - // point2.time_from_start = rclcpp::Duration(4, 0); - - // point1.positions = joint_state; - // std::vector vel_1(6, 0.0); - // vel_1[0] = 0.2; - // point1.velocities = vel_1; - - // std::vector pos_2 = joint_state; - // pos_2[0] += 0.2 * 4.0; - // point2.positions = pos_2; - // std::vector vel_2(6, 0.0); - // point2.velocities = vel_2; - - // trajectory_msgs::msg::JointTrajectory trajectory; - // trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; - // trajectory.points = {point1, point2}; - // trajectory.header.stamp = this->get_clock()->now(); - // trajectory.header.frame_id = "base_link"; - - // publisher_->publish(trajectory); - // RCLCPP_INFO(this->get_logger(), "published trajectory"); - } - } - - - rclcpp::Subscription::SharedPtr subscription_; - rclcpp::Publisher::SharedPtr publisher_; - rclcpp::TimerBase::SharedPtr timer_; - std::vector odom_pose_position_; - std::vector odom_pose_orientation_rpy_; - std::string frame_id_; - -}; - -// int main(int argc, char **argv) { -// #include -// #include - -// Assuming MoveBluerov is your custom node class -// #include "your_package/move_bluerov.hpp" - -int main(int argc, char* argv[]) { - rclcpp::init(argc, argv); - - // Create the first node - std::string odom_topic = "/model/rob_1/bluerov2_heavy/odometry"; - std::string controller_topic = "/rob_1/jt_controller/joint_trajectory"; - auto node = std::make_shared(odom_topic, controller_topic, "r1_move_node", "rob_1/base_link"); - - // Create the second node - std::string odom_topic_2 = "/model/rob_3/bluerov2_heavy/odometry"; - std::string controller_topic_2 = "/rob_3/jt_controller/joint_trajectory"; - auto node_2 = std::make_shared(odom_topic_2, controller_topic_2, "r3_move_node", "rob_3/base_link"); - - // Create an executor and add both nodes to it - rclcpp::executors::SingleThreadedExecutor executor; - executor.add_node(node); - executor.add_node(node_2); - - // Spin the executor - this will handle callbacks for both nodes - executor.spin(); - - // If you need to call specific methods on your nodes: - // This can be done before spinning the executor if it's a one-time setup - // node->planner(); - - // Or you can use a separate thread if you need to call methods while the executor is spinning - // std::thread planner_thread([&node]() { - // node->planner(); - // }); - - // Cleanup - rclcpp::shutdown(); - - // If you used the thread approach: - // planner_thread.join(); - - return 0; - } - - -// #include "blue_planner_cpp/ompl_planner.hpp" -// #include -// #include -// #include - -// std::vector position_to_list(const geometry_msgs::msg::Point &position) { -// return {position.x, position.y, position.z}; -// } - -// std::vector quaternion_to_list(const geometry_msgs::msg::Quaternion &orientation) { -// return {orientation.x, orientation.y, orientation.z, orientation.w}; -// } - -// MoveBluerov::MoveBluerov() : Node("move_bluerov") { -// subscription_ = this->create_subscription( -// "/model/bluerov2_heavy/odometry", 10, -// std::bind(&MoveBluerov::odom_callback, this, std::placeholders::_1) -// ); - -// publisher_ = this->create_publisher( -// "/jt_controller/joint_trajectory", 10 -// ); - -// timer_ = this->create_wall_timer( -// std::chrono::seconds(2), -// std::bind(&MoveBluerov::issue_jt_control_command, this) -// ); -// } - -// void MoveBluerov::odom_callback(const nav_msgs::msg::Odometry::SharedPtr msg) { -// odom_pose_position_ = position_to_list(msg->pose.pose.position); -// tf2::Quaternion q( -// msg->pose.pose.orientation.x, -// msg->pose.pose.orientation.y, -// msg->pose.pose.orientation.z, -// msg->pose.pose.orientation.w -// ); -// tf2::Matrix3x3 m(q); -// double roll, pitch, yaw; -// m.getRPY(roll, pitch, yaw); -// odom_pose_orientation_rpy_ = {roll, pitch, yaw}; -// } - -// void MoveBluerov::issue_jt_control_command() { -// RCLCPP_INFO(this->get_logger(), "pose: [%f, %f, %f], [%f, %f, %f]", -// odom_pose_position_[0], odom_pose_position_[1], odom_pose_position_[2], -// odom_pose_orientation_rpy_[0], odom_pose_orientation_rpy_[1], odom_pose_orientation_rpy_[2]); - -// std::vector joint_state = odom_pose_position_; -// joint_state.insert(joint_state.end(), odom_pose_orientation_rpy_.begin(), odom_pose_orientation_rpy_.end()); - -// if (!joint_state.empty()) { -// trajectory_msgs::msg::JointTrajectoryPoint point1, point2; -// point1.time_from_start = rclcpp::Duration(0, 0); -// point2.time_from_start = rclcpp::Duration(4, 0); - -// point1.positions = joint_state; -// std::vector vel_1(6, 0.0); -// vel_1[0] = 0.2; -// point1.velocities = vel_1; - -// std::vector pos_2 = joint_state; -// pos_2[0] += 0.2 * 4.0; -// point2.positions = pos_2; -// std::vector vel_2(6, 0.0); -// point2.velocities = vel_2; - -// trajectory_msgs::msg::JointTrajectory trajectory; -// trajectory.joint_names = {"joint_x", "joint_y", "joint_z", "joint_rx", "joint_ry", "joint_rz"}; -// trajectory.points = {point1, point2}; -// trajectory.header.stamp = this->get_clock()->now(); -// trajectory.header.frame_id = "base_link"; - -// publisher_->publish(trajectory); -// RCLCPP_INFO(this->get_logger(), "published trajectory"); -// } -// } - -// void MoveBluerov::planner() { -// auto space(std::make_shared(2)); - -// ompl::base::RealVectorBounds bounds(2); -// bounds.setLow(-1); -// bounds.setHigh(1); - -// space->setBounds(bounds); - -// ompl::geometric::SimpleSetup ss(space); - -// ss.setStateValidityChecker([](const ompl::base::State *state) { -// const auto *pos = state->as(); -// return (pos->values[0] * pos->values[0] + pos->values[1] * pos->values[1] < 1); -// }); - -// ompl::base::ScopedState<> start(space); -// start->as()->values[0] = -0.5; -// start->as()->values[1] = -0.5; - -// ompl::base::ScopedState<> goal(space); -// goal->as()->values[0] = 0.5; -// goal->as()->values[1] = 0.5; - -// ss.setStartAndGoalStates(start, goal); - -// ss.setPlanner(std::make_shared(ss.getSpaceInformation())); - -// ompl::base::PlannerStatus solved = ss.solve(1.0); - -// if (solved) -// { -// ss.simplifySolution(); -// ss.getSolutionPath().print(std::cout); -// } -// else -// { -// std::cout << "No solution found" << std::endl; -// } -// } - -// int main(int argc, char **argv) { -// rclcpp::init(argc, argv); -// auto node = std::make_shared(); -// rclcpp::spin(node); -// rclcpp::shutdown(); -// return 0; -// } diff --git a/blue_planner_py/LICENSE b/blue_planner_py/LICENSE deleted file mode 100644 index d6456956..00000000 --- a/blue_planner_py/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/blue_planner_py/blue_planner_py/__init__.py b/blue_planner_py/blue_planner_py/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/blue_planner_py/blue_planner_py/plan_node.py b/blue_planner_py/blue_planner_py/plan_node.py deleted file mode 100644 index 0c473b10..00000000 --- a/blue_planner_py/blue_planner_py/plan_node.py +++ /dev/null @@ -1,103 +0,0 @@ -import rclpy -from nav_msgs.msg import Odometry -from rclpy.duration import Duration -from rclpy.node import Node -from tf_transformations import euler_from_quaternion -from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint - - -def position_to_list(position): - return [position.x, position.y, position.z] - - -def quaternion_to_list(orientation): - return [orientation.x, orientation.y, orientation.z, orientation.w] - - -class MoveBluerov(Node): - def __init__(self): - super().__init__("move_bluerov") - - self.subscription = self.create_subscription( - Odometry, "/model/bluerov2_heavy/odometry", self.odom_callback, 10 - ) - self.subscription - - self.odom_pose_position = [] - self.odom_pose_orientation_rpy = [] - - self.publisher_ = self.create_publisher( - JointTrajectory, "/jt_controller/joint_trajectory", 10 - ) - timer_period = 2.0 # seconds - self.timer = self.create_timer(timer_period, self.issue_jt_control_command) - - def odom_callback(self, msg): - self.odom_pose_position = position_to_list(msg.pose.pose.position) - self.odom_pose_orientation_rpy = list( - euler_from_quaternion(quaternion_to_list(msg.pose.pose.orientation)) - ) - - def issue_jt_control_command(self): - # TODO: Implement this method - """ - create two points, point1 and point2, with position and velocity values - """ - self.get_logger().info( - "pose: {0}, {1}".format( - self.odom_pose_position, self.odom_pose_orientation_rpy - ) - ) - joint_state = [] - joint_state_position = self.odom_pose_position.copy() - joint_state_orientation = self.odom_pose_orientation_rpy.copy() - joint_state = joint_state_position - joint_state.extend(joint_state_orientation) - - if len(joint_state) != 0: - # self.get_logger().info("planning: {0}".format(joint_state)) - point1 = JointTrajectoryPoint() - point2 = JointTrajectoryPoint() - duration1 = Duration(seconds=0.0) - duration2 = Duration(seconds=4.0) - point1.time_from_start = duration1.to_msg() - point2.time_from_start = duration2.to_msg() - point1.positions = joint_state - vel_1 = [0.0] * 6 - vel_1[0] = 0.2 - point1.velocities = vel_1 - pos_2 = joint_state.copy() - pos_2[0] = pos_2[0] + (0.2 * 4.0) - point2.positions = pos_2 - vel_2 = [0.0] * 6 - point2.velocities = vel_2 - trajectory = JointTrajectory() - trajectory.joint_names = [ - "joint_x", - "joint_y", - "joint_z", - "joint_rx", - "joint_ry", - "joint_rz", - ] - trajectory.points = [point1, point2] - trajectory.header.stamp = self.get_clock().now().to_msg() - trajectory.header.frame_id = "base_link" - self.publisher_.publish(trajectory) - self.get_logger().info("published: {0}".format(trajectory)) - - -def main(args=None): - rclpy.init(args=args) - - stow_command = MoveBluerov() - - rclpy.spin_once(stow_command) - stow_command.issue_jt_control_command() - rclpy.spin(stow_command) - stow_command.destroy_node() - rclpy.shutdown() - - -if __name__ == "__main__": - main() diff --git a/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py b/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py deleted file mode 100644 index 194247ed..00000000 --- a/blue_planner_py/blue_planner_py/publish_to_ismc_ref_node.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright 2016 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import rclpy -from geometry_msgs.msg import Twist -from rclpy.node import Node - - -class MinimalPublisher(Node): - def __init__(self): - super().__init__("minimal_publisher") - self.publisher_ = self.create_publisher( - Twist, "/integral_sliding_mode_controller/reference", 10 - ) - timer_period = 0.5 # seconds - self.timer = self.create_timer(timer_period, self.timer_callback) - self.i = 0 - - def timer_callback(self): - vel_msg = Twist() - vel_msg.linear.x = 0.5 - self.get_logger().info( - "Publishing: %f, %f, %f, %f, %f, %f" - % ( - vel_msg.linear.x, - vel_msg.linear.y, - vel_msg.linear.z, - vel_msg.angular.x, - vel_msg.angular.y, - vel_msg.angular.z, - ) - ) - self.publisher_.publish(vel_msg) - self.i += 1 - - -def main(args=None): - rclpy.init(args=args) - - minimal_publisher = MinimalPublisher() - - rclpy.spin(minimal_publisher) - - # Destroy the node explicitly - # (optional - otherwise it will be done automatically - # when the garbage collector destroys the node object) - minimal_publisher.destroy_node() - rclpy.shutdown() - - -if __name__ == "__main__": - main() diff --git a/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py b/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py deleted file mode 100644 index 3fa71003..00000000 --- a/blue_planner_py/blue_planner_py/subscribe_to_odom_node.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright 2016 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import rclpy -from nav_msgs.msg import Odometry -from rclpy.node import Node - - -class MinimalSubscriber(Node): - def __init__(self): - super().__init__("minimal_subscriber") - self.subscription = self.create_subscription( - Odometry, "/model/bluerov2_heavy/odometry", self.listener_callback, 10 - ) - self.subscription # prevent unused variable warning - - def listener_callback(self, msg): - self.get_logger().info( - "I heard: %f, %f, %f, %f, %f, %f," - % ( - msg.pose.pose.position.x, - msg.pose.pose.position.y, - msg.pose.pose.position.z, - msg.pose.pose.orientation.x, - msg.pose.pose.orientation.y, - msg.pose.pose.orientation.z, - ) - ) - - -def main(args=None): - rclpy.init(args=args) - - minimal_subscriber = MinimalSubscriber() - - rclpy.spin(minimal_subscriber) - - # Destroy the node explicitly - # (optional - otherwise it will be done automatically - # when the garbage collector destroys the node object) - minimal_subscriber.destroy_node() - rclpy.shutdown() - - -if __name__ == "__main__": - main() diff --git a/blue_planner_py/package.xml b/blue_planner_py/package.xml deleted file mode 100644 index 7d331f51..00000000 --- a/blue_planner_py/package.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - blue_planner_py - 0.0.0 - python planners - blue - Apache-2.0 - - rclpy - geometry_msgs - nav_msgs - trajectory_msgs - tf_transformation - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - diff --git a/blue_planner_py/resource/blue_planner_py b/blue_planner_py/resource/blue_planner_py deleted file mode 100644 index e69de29b..00000000 diff --git a/blue_planner_py/setup.cfg b/blue_planner_py/setup.cfg deleted file mode 100644 index 3e2eac8d..00000000 --- a/blue_planner_py/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/blue_planner_py -[install] -install_scripts=$base/lib/blue_planner_py diff --git a/blue_planner_py/setup.py b/blue_planner_py/setup.py deleted file mode 100644 index 993a9888..00000000 --- a/blue_planner_py/setup.py +++ /dev/null @@ -1,27 +0,0 @@ -from setuptools import find_packages, setup - -package_name = "blue_planner_py" - -setup( - name=package_name, - version="0.0.0", - packages=find_packages(exclude=["test"]), - data_files=[ - ("share/ament_index/resource_index/packages", ["resource/" + package_name]), - ("share/" + package_name, ["package.xml"]), - ], - install_requires=["setuptools"], - zip_safe=True, - maintainer="blue", - maintainer_email="agrawaak@oregonstate.edu", - description="TODO: Package description", - license="Apache-2.0", - tests_require=["pytest"], - entry_points={ - "console_scripts": [ - "plan_node = blue_planner_py.plan_node:main", - "publish_to_ismc_ref_node = blue_planner_py.publish_to_ismc_ref_node:main", - "subscribe_to_odom_node = blue_planner_py.subscribe_to_odom_node:main", - ], - }, -) diff --git a/blue_planner_py/test/test_copyright.py b/blue_planner_py/test/test_copyright.py deleted file mode 100644 index 97a39196..00000000 --- a/blue_planner_py/test/test_copyright.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2015 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from ament_copyright.main import main -import pytest - - -# Remove the `skip` decorator once the source file(s) have a copyright header -@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.') -@pytest.mark.copyright -@pytest.mark.linter -def test_copyright(): - rc = main(argv=['.', 'test']) - assert rc == 0, 'Found errors' diff --git a/blue_planner_py/test/test_flake8.py b/blue_planner_py/test/test_flake8.py deleted file mode 100644 index 27ee1078..00000000 --- a/blue_planner_py/test/test_flake8.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2017 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from ament_flake8.main import main_with_errors -import pytest - - -@pytest.mark.flake8 -@pytest.mark.linter -def test_flake8(): - rc, errors = main_with_errors(argv=[]) - assert rc == 0, \ - 'Found %d code style errors / warnings:\n' % len(errors) + \ - '\n'.join(errors) diff --git a/blue_planner_py/test/test_pep257.py b/blue_planner_py/test/test_pep257.py deleted file mode 100644 index b234a384..00000000 --- a/blue_planner_py/test/test_pep257.py +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2015 Open Source Robotics Foundation, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from ament_pep257.main import main -import pytest - - -@pytest.mark.linter -@pytest.mark.pep257 -def test_pep257(): - rc = main(argv=['.', 'test']) - assert rc == 0, 'Found code style errors / warnings' diff --git a/frames_2025-01-29_00.48.32.gv b/frames_2025-01-29_00.48.32.gv deleted file mode 100644 index ef44b5a6..00000000 --- a/frames_2025-01-29_00.48.32.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"base_footprint" -> "base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"camera_mount_link" -> "camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"base_link" -> "thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1738111712.5172453"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-01-29_00.48.32.pdf b/frames_2025-01-29_00.48.32.pdf deleted file mode 100644 index 933b93a4c68bed1838efaef58120fe339dc9b7b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17041 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 KAu2D1@c#hq2#w+Z diff --git a/frames_2025-02-05_19.01.53.gv b/frames_2025-02-05_19.01.53.gv deleted file mode 100644 index 9210884e..00000000 --- a/frames_2025-02-05_19.01.53.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"rob_2/base_footprint" -> "rob_2/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/camera_mount_link" -> "rob_2/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_2/base_link" -> "rob_2/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1738782113.6209211"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-05_19.01.53.pdf b/frames_2025-02-05_19.01.53.pdf deleted file mode 100644 index 3d390a45aec5701542d908dea97263c3fc5fae0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17305 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 diff --git a/frames_2025-02-24_02.11.28.gv b/frames_2025-02-24_02.11.28.gv deleted file mode 100644 index e4ae5e1d..00000000 --- a/frames_2025-02-24_02.11.28.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_footprint" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740363088.6086278"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-24_02.11.28.pdf b/frames_2025-02-24_02.11.28.pdf deleted file mode 100644 index db66abe2a2747fbe675d1ded7229286d0bd2e458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17130 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 diff --git a/frames_2025-02-24_02.13.43.gv b/frames_2025-02-24_02.13.43.gv deleted file mode 100644 index f30e4840..00000000 --- a/frames_2025-02-24_02.13.43.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"map" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.54\nBuffer length: 2.038\nMost recent transform: 24.799\nOldest transform: 22.761\n"]; -"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740363223.5896006"[ shape=plaintext ] ; -}->"map"; -} \ No newline at end of file diff --git a/frames_2025-02-24_02.13.43.pdf b/frames_2025-02-24_02.13.43.pdf deleted file mode 100644 index e3e6eeb342c8beafe9c054bfea000d1af496cc69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17472 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%0A$Xlp=5yo`hrT4CTg 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 K$VB8s;r~DPc`CgC diff --git a/frames_2025-02-27_21.20.26.gv b/frames_2025-02-27_21.20.26.gv deleted file mode 100644 index d7f7c767..00000000 --- a/frames_2025-02-27_21.20.26.gv +++ /dev/null @@ -1,34 +0,0 @@ -digraph G { -"map" -> "rob_1/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.21\nBuffer length: 4.521\nMost recent transform: 127.761\nOldest transform: 123.24\n"]; -"rob_1/camera_mount_link" -> "rob_1/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_1/base_link" -> "rob_1/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740691226.581018"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-27_21.20.26.pdf b/frames_2025-02-27_21.20.26.pdf deleted file mode 100644 index d8fec31d0088441b82d6db92f5705c6993bc29c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19445 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 WB(bOj9Mgstmc|xbs;aL3Zd?GVMJ56O diff --git a/frames_2025-02-28_22.53.39.gv b/frames_2025-02-28_22.53.39.gv deleted file mode 100644 index e3f136f3..00000000 --- a/frames_2025-02-28_22.53.39.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740783219.5097263"[ shape=plaintext ] ; -}->"map"; -} \ No newline at end of file diff --git a/frames_2025-02-28_22.53.39.pdf b/frames_2025-02-28_22.53.39.pdf deleted file mode 100644 index e0ad150b222fa5f4942fb631792912937b7373e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17305 zcmd74Wpo_LvMnshwk!sVxot5sGcz+|i#OfLh4J+#YEAayHks2MPf7tqg!rTwG9g_O?J>3n=H5qm-ra#X7`}l}qJao9i`W z+Z!Bo@bwxJ1OQ3WqB;Wd@p9_M)o~J=yq6j+W@~5r1^;qrY%F3CpH{u zoP8zf(N0a9fNaSC;2X z6F}$onYHis=<-3bcdJOY;xyhMMN(`=xN_xRsH6==OWe9ujVPf?<*c_v)m93gBP z0OCw0%n3ElbP+hU>`Q`~ax(Rh;aVp|;fh3ySkT>74zzblnbRJjKPLbD>a&piyvW{u zkJSjjq~Yl473nl~wW~peuN@pPFz4QTgvDn49FFwtJwn8n=Halb9_wAZ{;_2X)dP(} z3)y*({pOy=s0QH^^fyejsp(jOZA^Ggk}%GxY4@vEt~-xi%1j1IA;!{){+TC=c)uwD*XF}YH!{I{bZO)RgwHmJz*<$S$6u9r-5-EEfhJS-P{9Jab3Yu=u z(5V>xA-P!0eWmcQ&Oh|6{O zF)OCwq_Z-=>$sZJ6p@yQ_5N;qhKq)7m!Zu@VahFPvCc?W5J8^qyXQGinfaI%G7wgnN`_{5A(Lj3Q!K z+@@Zvz~#oiANZ1|A6bJ>AR14fgny!ONptX7153#HyVqyr--EY&`N&;x6F>SomH4Zi(_z|0CgeFUWNybPwgoaI)lzGVYu9QWTBNF(|H-a8z5@|?^-sSsoItDD1 zQPK1iNw70ZiKKfvk7ZUNnSn=BLStkIVlUby@cPL(>gUxA*C4B0N6^X1%ES^pdzuC( z<`li~nGLTPQ6BLZ$lyt+%C0a$-zIEezC&R?HBHYK6bZ*qF91sC|$GWK~vwkV4Cq8Il@6#4L3)oBI4b7+j(wQRUj2} zj*WVA45LF%sYZTUFDaulEE(0o zoO^qx7{{v84^|oZ)hvPLHz_jSoxX=fYJd{;ZvW1*QAn9mS5s0M3uU;X$RakiR<1&G z+R^(<*8Nc%hGZx}qxo303&_t8xxCr*2yZkiHW=``O@l&XZfk@CWrE-ma|?J#-G8Q= zB#tW-fQe5OgHZRKs?fz?YnBc_ykWbRDl&w@m!@}(oy=qs(VNNcO5Nm_W}G7u*pg$) zvy|}oAOZUmf?p=DX#U$*Y0`2!8hHoGQrcM5HgijncOmgmKq^IfXiT~00uA%;Fp{MS zMpps3id^%O3L_KSmjZrr+=&I;%@RACplSXn)5Y@n@WH9z6n3R(v5Sk@RA*^u%<*7) zM6euFF2<8KE2HEzvm;YZNhSKC*kif|X}hJ`d}LU(%z9iXdWIoDaJ{1W#(3-Axxhqo z>_Cic&94}=maL!hP#N?bWgF*eFoM)7Kgg?Z`78;{U|VQO5ASkwa^FRE$K2b2Cw`l& z>yBYX&8>ubW0p=Hkjs$W`*~>yic4ySw5hwnUBl285rxk>+FHyK9=rfK8Q%c^T@mDa z!lWg77<~^48c8NB?W&YGlO>2??*U%hoPj9`ykPTiTeGObCybfe6yOi0QOgt$%#>1* zbltjgy?kJyL*h|91ilgUxn<(fjzYN6z1ld>55buL!lLY%1JUGz z{OGG4qx&ZqC7%sZ`dmr7?FCPX9s#OBA|#~X9P>oD|JJtOo9STUKu?@+cL!iQ`s2M!- zp&s(te_ueX&_I2o*%B$oSS5hJo@~TB>dvC* zBUvK_Wj&PQAuJ{45-yYya4X@GqWOj0V(p53MCdn4CIc?t$i~$%@s(;bbZdhLg%pi! zO=p4>E#l!F@f96vTsf5>McTQP)(}gg-n{AA!N$v5qVH|D| zw73R*i$M)Gkb%Z?L@P^CudYue0Y^f?gW>(>e3WS0U=w;m3Ds&>(Hf;8g-diD`s&*y ztO3vzSxs?8yiTE+&?0HSB2v88tsFgJeW)QfDRkjbYPL0VMtFtLQCxXNXiUZC0%HXS z@O-6Gg&D_N9cDR2;o>=Y#=DjEo_zPTq7RAZsA_{I?0tJO%Ve>%N}+`oD`T=xp)QL~ zP%)}Ka1t`5;OQJ>q~Ii~MpOq^NF<UnZ@S+fJRYTFUp|#xpB+51 z*qb*jTHiMJ5{@J7yQ6A2ie|olU~?ak5V4+xZ+NRt<5{F?4auadf)1`osng(4m|0FP zZ;*GnezI3lGZ2u(Tf~%bj~F=l#I_Oeb)Y^BPvptLsaLt?$5QiEPk^8~o+XIuQp(lx zRNlC!?D@cZ7*w2AOehBA&lXlZ4kKC}>4qxZS6lvNlHW|q(I>kLffljwMUq9V-yaZh z57J3*#)a{uID|OUZXKk@cK5gfD&N;;>XDlA_sEU=2W@$Cb11C3+@jz56o2mknFhs$ zLCJSD!#A6&r!eR5VN!TF4hV|cyPy?3n-layZ@3v8lA;etx$O1u__l|NLa#tBE3UcBf^777tIJW2!ej zM&)}J46_TenoB)!yea40T3T$%J9KO>E6-3g3Yl_T7PmCvxRrsqp!mL+yHiuiXB!^q zB;>T0@>V#=F8OQUQ#QUJ^`s6Dv^~<9-07NRx3d<@GE9r{K9L>?7x$uodr`e(PQ-pa z_ArwihhO9;d{2@_Y);BTr@*VaN%6;p^MGtUiAQLNpZ7F<$dUztxe!0wkS3*P)IgP8 zRR~DV%Zt1<$=*Gger8~)DyH)I8)Y3+l}wCYms7xgGk+Eg9!V00p!(_yfYcT)l#ySH$yre!)ESbc{@|3a?4} zzp&9SG$iP3FD!5Wf`kAZ9It|x54A4MO9DX6&kLXhQ0wcy{J!9$myF-P)IwI4_J7kh zq@FtV{sSU+VlXeR)i1C)Ph+E&-n&ib`6eV0GQq5yka2jHJ6{ueC)preUCP)?ZdRrts7<$!ip4z~J0 zJHV?c<^DD_mY4K@z)se`y7k{+=c}!L<5OAyEiLQIB)zop7ZBZYb#q6aS-NJm+ir_b zOkGfCS~#?{OeTlK0(%PSlpxcikLUCWG0ui7oAkk{~PBCfs8?k2@aR=|<8-^me0(tUFHkPgKni z_`U))poqvR?as%O;pwJ>f+UD+g$ozTr4X|_Pg&5Jn|PmmuN5gYD{g{ez0CMYw#*VL zJicWyqFhd1^sU{o`hGB^ph#Db8_zi5BY6P)gw=$=5gR`TT}=1B&+!XZo^HGMt3f>G zW=K<2p!cH6dQu9J+1IyTX>qnZl5-`0bC3`F<$iS%FP2)f(Z3b+njS$9mj}6M9BUV9 z8{#mIpKC;{-EY30W-LaAVbHR9nihQ^o{h?3vmh)2pLG*LalF8YHSp+G!fN$!<)JTp zp27FN2{CJKO4mS`Qmu_d#yxt(awAD)6fS>)BY-9gBM2vyHmUO?`51x*aTI^QC6aSk zF6{>bXu^T`We4Z;_t}SO-f+_0k?HgX+Qvwku`{+j03A7Y5Yu7MBp(vuBH@$_d`PS|bro`+8inWbzD3R!7YPeN?=wIBZ%M zSB_%Zqo%F_Nd~#r-4a1A`!$W`cy_Mj+g$h>Ov;4sf%1V_|HA(MvcZ1#{(c%C0%6kI zXR$=Hes7IksuBLTxuY&3b+ZeIx)zDE6=Xm*+eKStx19VX9eqdPocxW+W>)HHH=Pq_ z+iEkRv*P}xIjCV9{waTUf7tX~IE*ALo8}aAJ-(o%1E{SnHXVMe&>>ug7w~!2;Kjat zKeuhz5~0deP+=`|HD9@stE3odGUJbZUp7I%$G0g^X9~e-} z5Qe6~g&gc5=bExOg9uvL20dwUvbP&?>DVYgFg6jBp?y()9UZ*;sZB)FUNZzJrc?bf zekv6UgN86QS%w5`T3k#LR0VBT=ls@ z;^Whx@WEWFac`q5JZ_dY>+N~*jux2U+a!L7${ik~lm^M>mB}17#Y$0xRBKENL|qM< z8b2cBneH=eOTL61R)-q-+V3S*K5{}o%x6i9zCxZ7mEJSfPFfMjh zu}<+yanjVKR=>82PxEMz$Q(s|saA&@Oes4~KS5^ttAa$C&h3HE&6=X?571WiXUFoV zUekv?yHu6TE>5(9Ygl!}BQBv8G2|@~2%|sAeIyCQj@X#s9 zg7y*S0jj-hve;^Qxz?6BUmZAtvJdp*zIh={F%$Asmn2N9}}CBmCVB z>iectKqhKxB>2gu>|h!^Xw?W!cZUnSJ|J+fycYp>BC;7PB5an<0bB zW<^H@cCLPh%!J>$e-3&77a!RG3c0 z)V>QdJH)tw?2hts&mBYDDPWBl0y=NELJ2hD9Z6U>9n{dvED;tWcTr_R$ik|K48UDZ z0f*>g1ql`8@;K2+iMTMtz`RYEu%Nc$*8JAuY)yagMVgLMke~B!f?!NxAl{?rtM&?P z3z&Xt#vei4jx%_l9EAfzNv0|}f?7?vkY;`&c$T%5wUbrP_$fvw`VQ12nc|k(%5onx zHRU>*kekz1As;S&w#4J6V)Qzll%LWzoy_f&gjB2XZvDh{rKBh;Dt+nd9NOPiCQ&ju zTiHKLfl?FNO?}xZv<2irj9=Z z&eaS#duQ$*Z!qKL4yP*BvvDANGZBHT>Ickp%Y8|=_Xz=o%>LWxxaGxN3Mru4I?qs4 ztQXv$J!!f?9@nh_*f0T|FAtN2b@L(f1M?q;9fzxjBrzdq41u{tq6;hP=kNvZGA3%LV12YC%S26+;ga4~vOc5!@>cCmax>(~*d>(Y4E zQJ0xvvEYnw{2o@hJ(6_^6gxbdw&R@4b*JtVwPSaPMY<%gT6 zQ0b%%jp zVWP%SEk4}{>umw~kficV==}0!u`@SJDZ+`07|UGXur%>2H6*fDI;VKqMVrww4x$CnMh(1cDkht&7YFP_I zz2}sOGx_;QL+Lmr5)9T6uOwK_N3K96{asLM-n_Hk|B8+ZB$0wki0GmDh&Q=f%e8r6 z#wfWveK)_YvY+R7D*=6hF_krs(FCgp1BOF%+Ck`mfrd8+zs)7@ah@-Hmcr_Q#e@Ui z&Qi8-t~l~Tx!_@cnV9O3>;6-l;d;La!Y0G11K1>kU+G5tL_t_*BFS*11d(tEc+#UT zQ3LIeg{1^TJpo^^CFw0u^;zUb>zs62cdTLuOX;A-`$Ots3Vz%gnF}`of*<>-4B`7K z`w`XCLj!Orq#%7Vb!ZxeYyQij-;p)y2V9f!2T7AF%jPy?&|L0Wa~sja)-+RsrPt(c z4iheEFKH!d^&kb{8pAXK)E+L#ZieZp*B0(3J|Yo?<QboxfRIZ$69km{5XGF!^xoEJv`|Mv62?zF zDqGF)dx{aD!hsdB)_UdX@&4+_YVkhzi8ZXz6Q^%iTjIvd?f&xM=*TM-exf7{|IW%@ z(`&4TdKF^{tjdN@!7V=yTMwJcd;R)s*~3voI4+aTjkKLV@KW_$0V)e&yf@`-mve_} z)9`dgYc_F^EG|B{D*UbR0FAsdjJ=|U6x2K-c;;HcvB32rs4dprRISB|`&8XkKL6!o zgY8LJs@v7!V&z-}@MOJ;^{%|R`Lcc|2B)->Tz%zfsL$)+qI?XCj_d8c=9qivd=5ZvDbE(^R*oFm2t+URQ#S)5VO2?ZEt_DD42CQ<4EV|(ddDP{{*IL+ zW*RZKaOfQ@@esz1V1Uk4Sh7g`mkZ0|RB?B+t=RWmO*V%zL+p2Gcg*D6s#OXcPt#wb zjgoc*q*CTvT`rL7awYh;GnBpRZtcgNw$R$|38I3L98cI?DsJt2()#e0+SWeeD;;8q zw}LbX$uwc?Ql4~Qk2&NF$B{;brE5#8#(X5TEJXOe|~ zunym|>}XCIfGdG#c;8Q{9>Q!vi>o$`YG>t?{TvXTs@pVXgvN-+nKdPuYX_p>dgtn+-1)<_s2VEr5c&H=Xm zrs&PI@J2YCNGS|TTdelk8xb%1Qg80>B1JhWUF}a_Hr|O^U*IyIM7tj&b4iNX!N;F3 z-KGUjN<6)v1oQk-)6qI!owTxU88LdQrM3!4)GG-It;J_2KP&1PXhh*fQ4BU!vc0`juOmKm_nYnmJ%&S%bM)@5F~vr3ORg$AYqkkz0q{I1US zDKb?k>K=HK_7WgPC;2iv)pXT$sN+%l?Qra3T}&IRJ2f%Q;-D!UY)iA1RC8w=>xzG* zs%xq*T~@-%`8-6OR^3$P_He%8aK{WAoS~IbqInn0Don*#SieJ}LS@PMnVU1ae$C^( zYcu90v|AXa(hvP_(n`t)c>FA?e$rO6US8tdyk(vW*}%J$lu~W>_{SBq{JqJiANzYZ zCk6R?9TK~VF3Fy=$)H*ca0^fkQy>lcyaUEX=%airnJ1 zA^E(0vxtNg!7r4V42mYmSzBFcW8}fVA?`OudG{9S@$ORV(ToF?c*XAF2{b}XV2zAj95nV3i5lz#&EFfJOY-}C$0x%M-7*JcV z9VBg(GW+k<7DMT!a2^Lt9;-YJo}ciW+A!C1q@T}Kr@q)(?P~8U7s27&--Z|Cey?)S zbn-#`*g9QxM%r_K7s>sI3wtwW_V{#wOW7kiwA!wBwE%X{BAg2K6ii-wlo2BlFVTr$ zyV-NwZQu0;LqtbNY{f|@>GOxJ?#sZDK!%(7FS`MQSXt=0WtC30@)SJCsXt1XF~bgj zSS^DHJ7O!>94=LwjiqU>_7{c4jeP5BYCaoh1uCe`IGre@Jzu6j-<)YLGaYr#*W+3L z2smfJV_PjGu6vv%#=h)?lfyI{tGbJr>dWivl%j5RD_nWJMxQB5K{H(s0U=czi;}h1 zezR7O=so^)nw|uEa&lkwpu9CxmKx4A(a^4YNri`NclZthL>$usU`=i+~3qgjcLD^~&Ib^PupPY2nmqduE z25PrWgNr5N!R~FrRntKW8P8&354Mx!3d)l$cessOu0EQFb3n_KqfVu4MolF!FlkEE z`yT0%3R3k>72YR&+UBbJnmRgyY@~*|PB%y*6>C#GZmJ>9DS(@$OhZ1;$X8lBTi4qr zr$$SxgYol)QTAe`D_Xt-_`}ouD0~ z;K-AC66LFF^}6OboO|o^8K=MZoPlLk zOmmNZHBDj>I){U}2w0=|ht$EGs=_)2w>*4)-Ozmn5s-w>GJOK(A3ilwxkrdivbzy; ziLrVKHC|nLy4q`=ggFS4a9?gaJ(1-#-9uWlB3;ILmXv`!Hi6fn@FW)S4UPE5DzH+C zOv&}W|w#LYVmoYo|H75g5nXV{zwU6RVzK&4Tw}i5^e%*Y3`s7EKmy0hK>9XafIAC zslyP9ZmVEx+_jH9`Wv7dH|#8QeJjls zC0?AMXlr}U;8c^zmpeaqF1K$R5UIa0HpprhoJ`=&p(VAr!qOb$OhdY%dk*$~GKi(V ztdX=-I-%qul>3?w4Yld*t?DyD%F`}Ken`yLtE0D;rN83SHg`OV$KSLfom;dJfezKu?&nOtQr{Eo5i=I%?*KroPz`oQPm0LO4}sWGYg|)mYH(d3PrJ_ zGmEZ-9aR+$X$37)Bdjj@Nu7jeq^3c3B=JK#g)XCzi_UE_sjDsF$=_D;N3G**fbNNG zD~;aj1LZRD?94Yw?!@jp9-=xw9%&OlgYMqp)5%~os5u^6JbVJ?mNcA|UbIr~*w@Gl z@4$FHFDbHVJmM4;W#Qc(ubA{X!7C=-)wG;o9xz{$ex+l4M_E}V-jX5xQ7;_jP|UXf zG^KueZ#cy_$+ru#TO`Fwxg^FqNH@0&&;_wq6LN~f7a^!AuZ%&MtV2@lKw7mzp7E(W^r$7zTJM=-6QYmF!(N?@nT!p!4syt zZKOgNO0S5BGLZ~P05m=@>*c|&RI>=Dr$(jpAt+yUvjTCTQ$A?Xp%4V7He-ZBfHy+V zdHD-9vXvN4kBQpS#vJOP zh^dJ*IrVCvA~P@gzSYfr9(~_2MSwJ`eL!xsg(BBjol?6#W1LpYu>UN8V@zkgP9F)0>9x3=1ZBkt)4=b4X%IKSUY_ zMydoxJCh2Xi&n~|Y{svb`VT>7fQ$+)%>QI4Gj`PRon4W>8R1yrt!}0FH&4ICn=kg7 z4M25oFi$)^T+R=BY%#f-ZAl#7!oLg2A^2L*KKVS=f9k~eaCHfdR%@e>k0_0G+d1ml zG9;8;>q|gQ>IAuUCg zS#-pK%|t?qI`@acVUh`XXZ?wq`Dl5`0NdmTu12%R{rC6vlx&Vt?Pnui`_C-b!H?2j zc9;9i(i^>9#L~E)cblSBrsDb=aiyW5R&L8?caODZ?N+X1NN##Vg~4dj7OcAcPVBp9 z3K@iOk`sJN#8KwP?-aMmjmRvDaio%Gd;|`4U7AVsd)D96S)!{IXcHOOXhqf3HJ z0zgfGf)Je|+@DqxC+uX#MKYcQ{aA{oR+^?LzP@H`ml;KxrZ>As0siVkQTGkp1W!G} zqp{Txl7iC7bnGUS{8VcI#-g_udTHYx{T}L9=@JserF@{?<|z_Z>zGk-^oR8W?{%&n zIBkbSPYgc`R#9egDD9mOCT|zuFy8iMRb2_(8iGw@Fm7v%eU<5qx6L{PK2oT_W zUwql8*;AYv%-^VvMtJVvHDTzI-WW1468NQHIk}&u|KvJsTn;9DOnIU;XcxB#r)aa5 z;;uJ)e$s5dVwRJZO7kt%*6M=usD293DwYlof6jA9l*&T_@ID>=hyY|86Aq4}eT7Ak zl=QRXh|25>o8_Nnz!~!+SpE3Ga!GV)LqnK=gpKG<6*E3(^uYBFr+3PlG^G3hPg$4a zdHaU@8J#gW{EXKfg8SW(wU-;x_wv(noyBwNG}w zFF&8}y+wYs3FkfHzNfK9X9UF)Nd}-^?SsSe^uOak1RTW4VlLVsc!~8JKB#~nuRjsC zKJ#;{2n>C(quj+YKIxiSDuANoPoB_ic!DWqyw}cl$>tqX>`l1mGW}*k6HbSDL-~et z^qZTl?je1GHt2Q01czNqa*I)&&nBlSBR~sL10_)!TZqztKr;F|E8upT-5A*w1BbpW z@ml81aI$|H4;Hjly6RuY-622!UgVaFw=y@MBh#nR??Pz6ls$9*dn)v*~LT1~0q@ZA- zj%a>zPFX>skFGi?vB5BEn0aa-F#W0en{+iDF&fJI}&F2u9?O-cJobPa+C8ae!FtE*@7`>EpD`m?^+&34w z<8Ypm`mml5d+QgCT^*G!+&?zhFTF7k3E^^;NVlz;${{b5W?4ZmO&r}-`^kc{@VN(_O~U^N{#G&^BXY6kCKSl%{+_3X{>5o1oA8mJ6(k6 z9(PFhYR}+ggRGi4k)y4zm!mAIPrV`!@@Lx8r|LeTs~Vl0CBYNafn%knHbWfwXQ+kC z3crOdKr@3YvBnWLucNt_-$G{e(GRhNqw#a)a4yr5xF!I2^?v^9&v9^*BT;W7v+YZvx^%@swR9K*+0!*Q@Lpgov0vmEVi21jM?7}(HPx7oJy9M z5pfpN9}@o2Z$lxkA}IumoPI-r?g|c?UWv%b7|brf&lqe1hD$2Hk0D~h9+ln|3PW+# zKuD749ll^*hbR<-YmSJ}Ci(E!4^iBU-!{n&8hl`?BQx0su+|OE?db@Vf&MI_mI4O0 ziXSj2Xb>X>vd%FmB2vt$qvb`a-Zv(gQx90?zV8Vh2B2Zod>Q>Pm{0;9mAGa=M;r|U z_|zpz$H0bDm!>5&DQA~Z!!AN*PQe)9yM{a~ItUSEenB@tNI)v98v>q>w|gjn+lZ2UD8|~b1&Ya&_D-sgI}pUN|6!&4 zH#W!Lxf`1D-zz-#l-MZT7f{i;HYWH?z3NCZMw8`VqiAM(it9@9@}%HkxcPvZjM19d!&; z(GGzAkr#v)E_%Fk^h8nx-+OXDSXaElt`a1^e!wO`#m`l}_v1?E-h>T(bZ;v40DzHy z<3y4NuT@|{92OBKlt&>HM zt%#KIbrEaxKJp2cWUq2H)Z&7*O?FJ@+0t4%B(PO`qWFcvJMaKm0&-xUrL|y z?0=!bo4iGMkiUc3;LV z{%LRk?dz2M=6eZRzJ&0YSQ-JSl}#*pE$vMH6#Qyh*~Gx!*zScqMo;_7NBiH7*Iasf zCIHj_&+n`5-|J$gqXRJ0zmm}YebCa-y)wmEXkWJ)8UQonYv2F-!ASEef2FrEF}$3a zUU+q{XI5GOJ@fBtCI*I=p}f|_^s*XWuUHvaUbGlq(saMHX#fn&EC5DYdH@3r?XMh0 zCI$ct<0~KV_39UK?u7tnrD$pL8vF$KwblK7eqW0I&jkMwKSldL1iSyX_x+v8M#uOc zM79wH6KnZ7l(rL(Ymq901?jjDi;gxQZdY-L8Zx7DBkZQc+rTgsKg~1P{e5 z2AR4F{~$sFhYyC|lPJWJ|i>NPH48)S*k&O`tN#*By2UH(=YVnR>D~ zNi242vm1RJWxd|#%7pw#Cm_LtZdPZ0jtiOktO0REHHH-VG}<<%=hZ^?Ru9{uqT0!= zyMC=2adxb#J=g50=rpH+jly@>K-~ik%eEzK4uhGN>S+H*%}AR#0lE`y-DR12HCfM4 zL%NOON|D85l@DKt6YbTNmCBEHm*%bVki>K)2u%S64WV6ZWh0c05eXMfl`=CX)4AM& zM%N9?QX0#}RvYG3$6F20^dYoJJp+8AkVRP=v)PrWns0Jc43))KSCm65N>;;z3L6@tESwc1QiWn%X~(ej(4TPL`O z^%69<9*_g4?$MgZpqgA?N<4Y8EB?soK~^d0K&38*rW@7^-+8Bi4g8Sz-TO7qT>ewG z;9Yl0nc04|aX-UABfBL?X*rmtnz<0Fy9H?zCQVejSuF!^zUD?QpaqJr>mRAwNHvpY ztw+q0EKou*vM+6_HT9S_CB|`o-P#)_RcBt>RL4bFTHGNt}VVwjY9vtEyqhy~jG>opZ8%3V00C^=QOe(=#lox@raLpz<8zudUi z11V&d;Zg4Xbnr<$&#+RcNABuaK!jbN6dC7JQ0{O=f<-{L-Vy%jCysS*KLUG61=mpD zV{LS)gz#Dyui9Z{#arreGnH1zi70E!Ya(G`_3xW+)#5S&A#W@o_o#1wayzrEe*J$4xqa2-j!^dtDK0r^9pD_!J}# z2g7Q8rU|bJv#tpr#rq(!=G`fc;+b_?*Qp+O`*YTVV0%N-k2%X(bFG#l1#dX#0vE<` zy^r^SBm@t2O#`94?L(e2iWcO?mNRPWVP6LmJM7Jwk70|!YL98klCppiiWZChIJ6&& z{_4*{3bvy@(lGW|Klwb40W4`(YdWG0)vw9t_ns;9I2lM#V|Y$e7oOPM+c_JS*wUtX zi66spYNu$4!w4C5sbYkWSX@Ko~vC6_i)p!DTla^%8nm-iMsLQOmUS)Z+_$Kh~0+OM-SKCsT)Mf zv1B$r_0E|rNl^M7;z(y%>O##>XzIc|VxJ>g-9n{9aD3fzU)%_iNibS6u^y7ucLm>2 zC@kdJYj%@XzILR?JPov-Xpic>0o

LRQj5mzcYu18EXJ6RMKs9as90H2Ht}@+lj! zJHTd=6S3oa?wbqelj3`pY-QA5Bf{xRQYn#_$nC1AO5#9~7gzFSYU;Ysw;}axKn*30 z=bc*kS;4L)LzU`MoUK*@)Nn`g;z)2ude>PE@o{Z*WYM9C7mRhWp}iB}eYTs=F0qHF zju^^8B<+@_r+pej!ABgjZNhvoVTWnyjlKule>^M{zNjNYIq(@o3mrddG!yx_9CGxd<3 zl+q!ejRfj~tifRC2Z`ZcU%3!!i18aGWEwMGkXtC16b5PClrI|L0k&?dHq8SYU;1J! znQd99j3B7EwBo(L1y6i6FXLtpqqqW+vLtpS!snCHqhP~eZ`a_?v-aW&3ZXL<2b<%n zXjaHXP{<;jWCIAI2gqm&EdyquGBXHkPt*9-dY+FEo)5sD4pz%AS3rF#WRd@i+xhxz z{lo2~WuamD%kTV?!vD88X4=1q_W#E~X3dB((=HmA-V;wKoFDu)Q+5y`$5CBRJwEWGfPVY%epM+=O>*2Y-8`PYX|2Lf5u$)Q4x&MqJxgi z_?=}5S7v(eveQDRtbmr(xA%7L7LaRl_uGgALIL7*s0-u1MV#UefoFR>@UUqI*8QPUZh60y4J=f`gT-Swnn7Cp(p># zn-AFHV3NdMLz-77x%v%TM|hhO&vhguo^>hrJO z{}H_NKcjTE1sX!pyx>iGP))qi6U}JzBa~ zQ1;KVv~(>0>feiu^<{_uM;o;COfQK3KV*!IjQ^^Sk&*ddWf@tR|6P{lU$&xUqWyPY zn3(8a(A_`#!ob{_U+g~rwkT-D!zRuh0O)F<*We@l@|G#nf>x~Zhwf=r> aFLw62w)VefnwE)~l?95BP*7S3>i+|yrXwo= diff --git a/frames_2025-02-28_22.58.39.gv b/frames_2025-02-28_22.58.39.gv deleted file mode 100644 index 545c92c6..00000000 --- a/frames_2025-02-28_22.58.39.gv +++ /dev/null @@ -1 +0,0 @@ -digraph G { "No tf data received" } \ No newline at end of file diff --git a/frames_2025-02-28_22.58.39.pdf b/frames_2025-02-28_22.58.39.pdf deleted file mode 100644 index 81c856177d097dc497ac93c6f1acb8b4e416bc15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5935 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 diff --git a/frames_2025-02-28_22.59.49.gv b/frames_2025-02-28_22.59.49.gv deleted file mode 100644 index c8c1efe1..00000000 --- a/frames_2025-02-28_22.59.49.gv +++ /dev/null @@ -1,21 +0,0 @@ -digraph G { -"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740783589.3686516"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-28_22.59.49.pdf b/frames_2025-02-28_22.59.49.pdf deleted file mode 100644 index a2047f39151f9099eed056fbfa220087dc71c9bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17304 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 "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_footprint" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740783740.0438437"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-28_23.02.20.pdf b/frames_2025-02-28_23.02.20.pdf deleted file mode 100644 index 63bd9cff78a398997ccf4f0221c5b38f0f46f215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17136 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 z

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 "rob_3/thruster1"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"map" -> "rob_3/base_link"[label=" Broadcaster: default_authority\nAverage rate: 50.251\nBuffer length: 3.781\nMost recent transform: 26.644\nOldest transform: 22.863\n"]; -"map" -> "map_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"odom" -> "odom_ned"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_frd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/camera_mount_link" -> "rob_3/camera_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/camera_mount_link"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster2"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster6"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster5"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster8"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster7"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/base_link_fsd"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster3"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -"rob_3/base_link" -> "rob_3/thruster4"[label=" Broadcaster: default_authority\nAverage rate: 10000.0\nBuffer length: 0.0\nMost recent transform: 0.0\nOldest transform: 0.0\n"]; -edge [style=invis]; - subgraph cluster_legend { style=bold; color=black; label ="view_frames Result"; -"Recorded at time: 1740785017.9126751"[ shape=plaintext ] ; -}->"odom"; -} \ No newline at end of file diff --git a/frames_2025-02-28_23.23.37.pdf b/frames_2025-02-28_23.23.37.pdf deleted file mode 100644 index 97695b4530646296159ea74f243da8c52b084144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17479 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 l{{MlyUoLdw-~RX8qwVZ - -Qt SVG Document -Generated with Qt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tf2_tree_ns_single_rob.pdf b/tf2_tree_ns_single_rob.pdf deleted file mode 100644 index 899857d46715416318db81c4828d36b9441dda24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17317 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 Date: Wed, 11 Jun 2025 00:42:04 +0000 Subject: [PATCH 71/72] clean up --- .../bluerov2_heavy.ros2_control.xacro | 10 - .../config/rob_1_bluerov2_heavy_jtc.yaml | 204 --------------- .../config/rob_3_bluerov2_heavy_jtc.yaml | 204 --------------- .../launch/obstacles.launch.yaml | 13 - .../rob_1_bluerov2_heavy_demo.launch.yaml | 16 +- .../launch/rob_1_bluerov2_heavy_jtc.launch.py | 233 ------------------ .../rob_3_bluerov2_heavy_demo.launch.yaml | 17 +- .../launch/rob_3_bluerov2_heavy_jtc.launch.py | 212 ---------------- 8 files changed, 2 insertions(+), 907 deletions(-) delete mode 100644 blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml delete mode 100644 blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml delete mode 100644 blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py delete mode 100644 blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py diff --git a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro index da19f0c2..d8b92d99 100644 --- a/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro +++ b/blue_demos/control_integration/description/ros2_control/bluerov2_heavy.ros2_control.xacro @@ -68,16 +68,6 @@ - - - - mavros_odom_sensor/MavrosOdomSensor - ${max_set_param_attempts} - ${mavros_odom_topic} - ${prefix} - - - diff --git a/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml b/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml deleted file mode 100644 index 9bd46a68..00000000 --- a/blue_demos/multi_robot/control_integration/config/rob_1_bluerov2_heavy_jtc.yaml +++ /dev/null @@ -1,204 +0,0 @@ -rob_1/controller_manager: - ros__parameters: - update_rate: 100 # Hz - - jt_controller: - type: "joint_trajectory_controller/JointTrajectoryController" - - integral_sliding_mode_controller: - type: velocity_controllers/IntegralSlidingModeController - - thruster_allocation_matrix_controller: - type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController - - thruster1_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster2_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster3_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster4_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster5_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster6_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster7_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster8_controller: - type: thruster_controllers/PolynomialThrustCurveController - -rob_1/jt_controller: - ros__parameters: - action_monitor_rate: 20.0 - allow_integration_in_goal_trajectories: false - allow_nonzero_velocity_at_trajectory_end: false - allow_partial_joints_goal: false - cmd_timeout: 1.0 - joints: - - joint_x - - joint_y - - joint_z - - joint_rx - - joint_ry - - joint_rz - - command_interfaces: - - velocity - - command_joints: - - integral_sliding_mode_controller/x - - integral_sliding_mode_controller/y - - integral_sliding_mode_controller/z - - integral_sliding_mode_controller/rx - - integral_sliding_mode_controller/ry - - integral_sliding_mode_controller/rz - - state_interfaces: - - position - - velocity - - open_loop_control: true - constraints: - stopped_velocity_tolerance: 0.01 - goal_time: 0.0 - joint1: - trajectory: 0.05 - goal: 0.03 - -rob_1/integral_sliding_mode_controller: - ros__parameters: - use_external_measured_states: true - reference_controller: thruster_allocation_matrix_controller - gains: - rho: 20.0 - lambda: 200.0 - Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] - tf: - base_frame: "rob_1/base_link_fsd" - odom_frame: "map_ned" - hydrodynamics: - mass: 13.5 - weight: 114.80 - buoyancy: 112.80 - moments_of_inertia: [0.16, 0.16, 0.16] - added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] - center_of_buoyancy: [0.0, 0.0, 0.0] - center_of_gravity: [0.0, 0.0, 0.0] - linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] - quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] - -rob_1/thruster_allocation_matrix_controller: - ros__parameters: - thrusters: - - rob_1/thruster1_joint - - rob_1/thruster2_joint - - rob_1/thruster3_joint - - rob_1/thruster4_joint - - rob_1/thruster5_joint - - rob_1/thruster6_joint - - rob_1/thruster7_joint - - rob_1/thruster8_joint - reference_controllers: - - thruster1_controller - - thruster2_controller - - thruster3_controller - - thruster4_controller - - thruster5_controller - - thruster6_controller - - thruster7_controller - - thruster8_controller - tam: - x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] - y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] - z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] - rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] - ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] - rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] - -rob_1/thruster1_controller: - ros__parameters: - thruster: rob_1/thruster1_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster2_controller: - ros__parameters: - thruster: rob_1/thruster2_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster3_controller: - ros__parameters: - thruster: rob_1/thruster3_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster4_controller: - ros__parameters: - thruster: rob_1/thruster4_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster5_controller: - ros__parameters: - thruster: rob_1/thruster5_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster6_controller: - ros__parameters: - thruster: rob_1/thruster6_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster7_controller: - ros__parameters: - thruster: rob_1/thruster7_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_1/thruster8_controller: - ros__parameters: - thruster: rob_1/thruster8_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml b/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml deleted file mode 100644 index 4a76c805..00000000 --- a/blue_demos/multi_robot/control_integration/config/rob_3_bluerov2_heavy_jtc.yaml +++ /dev/null @@ -1,204 +0,0 @@ -rob_3/controller_manager: - ros__parameters: - update_rate: 100 # Hz - - jt_controller: - type: "joint_trajectory_controller/JointTrajectoryController" - - integral_sliding_mode_controller: - type: velocity_controllers/IntegralSlidingModeController - - thruster_allocation_matrix_controller: - type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController - - thruster1_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster2_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster3_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster4_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster5_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster6_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster7_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster8_controller: - type: thruster_controllers/PolynomialThrustCurveController - -rob_3/jt_controller: - ros__parameters: - action_monitor_rate: 20.0 - allow_integration_in_goal_trajectories: false - allow_nonzero_velocity_at_trajectory_end: false - allow_partial_joints_goal: false - cmd_timeout: 1.0 - joints: - - joint_x - - joint_y - - joint_z - - joint_rx - - joint_ry - - joint_rz - - command_interfaces: - - velocity - - command_joints: - - integral_sliding_mode_controller/x - - integral_sliding_mode_controller/y - - integral_sliding_mode_controller/z - - integral_sliding_mode_controller/rx - - integral_sliding_mode_controller/ry - - integral_sliding_mode_controller/rz - - state_interfaces: - - position - - velocity - - open_loop_control: true - constraints: - stopped_velocity_tolerance: 0.01 - goal_time: 0.0 - joint1: - trajectory: 0.05 - goal: 0.03 - -rob_3/integral_sliding_mode_controller: - ros__parameters: - use_external_measured_states: true - reference_controller: thruster_allocation_matrix_controller - gains: - rho: 20.0 - lambda: 200.0 - Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] - tf: - base_frame: "rob_3/base_link_fsd" - odom_frame: "map_ned" - hydrodynamics: - mass: 13.5 - weight: 114.80 - buoyancy: 112.80 - moments_of_inertia: [0.16, 0.16, 0.16] - added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] - center_of_buoyancy: [0.0, 0.0, 0.0] - center_of_gravity: [0.0, 0.0, 0.0] - linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] - quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] - -rob_3/thruster_allocation_matrix_controller: - ros__parameters: - thrusters: - - rob_3/thruster1_joint - - rob_3/thruster2_joint - - rob_3/thruster3_joint - - rob_3/thruster4_joint - - rob_3/thruster5_joint - - rob_3/thruster6_joint - - rob_3/thruster7_joint - - rob_3/thruster8_joint - reference_controllers: - - thruster1_controller - - thruster2_controller - - thruster3_controller - - thruster4_controller - - thruster5_controller - - thruster6_controller - - thruster7_controller - - thruster8_controller - tam: - x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] - y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] - z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] - rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] - ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] - rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] - -rob_3/thruster1_controller: - ros__parameters: - thruster: rob_3/thruster1_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster2_controller: - ros__parameters: - thruster: rob_3/thruster2_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster3_controller: - ros__parameters: - thruster: rob_3/thruster3_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster4_controller: - ros__parameters: - thruster: rob_3/thruster4_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster5_controller: - ros__parameters: - thruster: rob_3/thruster5_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster6_controller: - ros__parameters: - thruster: rob_3/thruster6_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster7_controller: - ros__parameters: - thruster: rob_3/thruster7_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -rob_3/thruster8_controller: - ros__parameters: - thruster: rob_3/thruster8_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml b/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml index 972e1fc4..2239f677 100644 --- a/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/obstacles.launch.yaml @@ -4,9 +4,6 @@ launch: - arg: name: gazebo_world_file - - arg: - name: gz_ros_bridge_obstacle_file - # Nodes - node: pkg: ros_gz_bridge @@ -19,13 +16,3 @@ launch: arg: - name: gz_args value: -v 4 -r $(var gazebo_world_file) - - - node: - pkg: ros_gz_bridge - exec: parameter_bridge - output: screen - param: - - name: config_file - value: $(var gz_ros_bridge_obstacle_file) - - diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml index 58a29999..5b1af838 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_demo.launch.yaml @@ -8,9 +8,6 @@ launch: name: gazebo_world_file default: $(find-pkg-share blue_demos)/multi_robot/description/gazebo/worlds/underwater_with_obstacles.world - - arg: - name: gz_ros_bridge_obstacle_file - default: $(find-pkg-share blue_demos)/multi_robot/motion_planning/config/ros_gz_obstacles.yaml - arg: name: use_sim default: "false" @@ -67,14 +64,6 @@ launch: name: fdm_port_out value: "9003" - - let: - name: use_mavros_odom - value: "true" - - - let: - name: mavros_odom_topic - value: /rob_1/local_position/odom - - group: - push-ros-namespace: namespace: "$(var namespace)" @@ -85,7 +74,7 @@ launch: - let: name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out)') - include: file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml @@ -119,6 +108,3 @@ launch: arg: - name: gazebo_world_file value: $(var gazebo_world_file) - - name: gz_ros_bridge_obstacle_file - value: $(var gz_ros_bridge_obstacle_file) - diff --git a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py deleted file mode 100644 index 03cf483a..00000000 --- a/blue_demos/multi_robot/control_integration/launch/rob_1_bluerov2_heavy_jtc.launch.py +++ /dev/null @@ -1,233 +0,0 @@ -# Copyright 2024, Akshaya Agrawal -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import ( - DeclareLaunchArgument, - GroupAction, - IncludeLaunchDescription, - RegisterEventHandler, -) -from launch.event_handlers import OnProcessExit -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import PathJoinSubstitution, TextSubstitution -from launch_ros.actions import Node, PushROSNamespace -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description for the BlueROV2. - This should be launched after MAVROS has fully loaded. - """ - args = [ - DeclareLaunchArgument( - "prefix", - default_value="rob_1/", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - ] - - # The ISMC expects state information to be provided in the FSD frame - message_transformer = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("message_transforms"), - "launch", - "message_transforms.launch.py", - ] - ) - ), - launch_arguments={ - "parameters_file": PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "multi_robot", - "control_integration", - "config", - "rob_1_transforms.yaml", - ] - ), - "ns": TextSubstitution(text="control_integration"), - }.items(), - ) - - message_transformer_with_ns = GroupAction( - actions=[ - PushROSNamespace("rob_1"), - message_transformer, - ] - ) - - controller_manager = Node( - package="controller_manager", - executable="ros2_control_node", - output="both", - namespace="rob_1", - parameters=[ - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "multi_robot", - "control_integration", - "config", - "rob_1_bluerov2_heavy_jtc.yaml", - ] - ), - ], - remappings=[ - ("controller_manager/robot_description", "robot_description"), - ], - ) - - # obstacles_config_file = PathJoinSubstitution( - # [ - # FindPackageShare("blue_demos"), - # "multi_robot", - # "motion_planning", - # "config", - # "obstacles.yaml", - # ] - # ) - # gz_ros_obstacles_bridge = Node( - # package="ros_gz_bridge", - # executable="parameter_bridge", - # arguments=[ - # "--ros-args", - # "-p", - # "config_file:=$(find blue_demos)/multi_robot/motion_planning/config/ros_gz_obstacles.yaml", - # ], - # output="screen", - # ) - - jt_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "jt_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_1", - ], - ) - - velocity_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "integral_sliding_mode_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_1", - ], - ) - - thruster_spawners = [ - Node( - package="controller_manager", - executable="spawner", - arguments=[ - f"thruster{i + 1}_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_1", - ], - ) - for i in range(8) # BlueROV2 Heavy has 8 thrusters - ] - - delay_thruster_spawners = [] - for i, thruster_spawner in enumerate(thruster_spawners): - if not len(delay_thruster_spawners): - delay_thruster_spawners.append( - thruster_spawner, - ) - else: - delay_thruster_spawners.append( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[i - 1], - on_exit=[thruster_spawner], - ) - ) - ) - - tam_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "thruster_allocation_matrix_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_1", - ], - ) - - delay_tam_controller_spawner_after_thruster_controller_spawners = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[-1], - on_exit=[tam_controller_spawner], - ) - ) - ) - - delay_velocity_controller_spawner_after_tam_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=tam_controller_spawner, - on_exit=[velocity_controller_spawner], - ) - ) - ) - - delay_jt_controller_spawner_after_velocity_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=velocity_controller_spawner, - on_exit=[jt_controller_spawner], - ) - ) - ) - - return LaunchDescription( - [ - *args, - message_transformer_with_ns, - # gz_ros_obstacles_bridge, - controller_manager, - *delay_thruster_spawners, - delay_tam_controller_spawner_after_thruster_controller_spawners, - delay_velocity_controller_spawner_after_tam_controller_spawner, - delay_jt_controller_spawner_after_velocity_controller_spawner, - ] - ) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml index c19ed68f..9288e813 100644 --- a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml +++ b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_demo.launch.yaml @@ -64,14 +64,6 @@ launch: name: fdm_port_out value: "9013" - - let: - name: use_mavros_odom - value: "true" - - - let: - name: mavros_odom_topic - value: /rob_3/local_position/odom - - group: - push-ros-namespace: namespace: "$(var namespace)" @@ -82,7 +74,7 @@ launch: - let: name: robot_description - value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out) use_mavros_odom:=$(var use_mavros_odom) mavros_odom_topic:=$(var mavros_odom_topic)') + value: $(command 'xacro $(var description_file) prefix:=$(var prefix) use_sim:=$(var use_sim) fdm_port_in:=$(var fdm_port_in) fdm_port_out:=$(var fdm_port_out)') - include: file: $(find-pkg-share blue_bringup)/launch/bluerov2_heavy/ns_bluerov2_heavy.launch.yaml @@ -109,10 +101,3 @@ launch: value: $(var init_rob_y) - name: init_rob_z value: $(var init_rob_z) - - # Spawn obstacles - # - include: - # file: $(find-pkg-share blue_demos)/control_integration/launch/obstacles.launch.yaml - # arg: - # - name: gazebo_world_file - # value: $(var gazebo_world_file) diff --git a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py b/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py deleted file mode 100644 index c6350ecf..00000000 --- a/blue_demos/multi_robot/control_integration/launch/rob_3_bluerov2_heavy_jtc.launch.py +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright 2024, Akshaya Agrawal -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import ( - DeclareLaunchArgument, - GroupAction, - IncludeLaunchDescription, - RegisterEventHandler, -) -from launch.event_handlers import OnProcessExit -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import PathJoinSubstitution, TextSubstitution -from launch_ros.actions import Node, PushROSNamespace -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description for the BlueROV2. - This should be launched after MAVROS has fully loaded. - """ - args = [ - DeclareLaunchArgument( - "prefix", - default_value="rob_3/", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - ] - - # The ISMC expects state information to be provided in the FSD frame - message_transformer = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("message_transforms"), - "launch", - "message_transforms.launch.py", - ] - ) - ), - launch_arguments={ - "parameters_file": PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "multi_robot", - "control_integration", - "config", - "rob_3_transforms.yaml", - ] - ), - "ns": TextSubstitution(text="control_integration"), - }.items(), - ) - - message_transformer_with_ns = GroupAction( - actions=[ - PushROSNamespace("rob_3"), - message_transformer, - ] - ) - - controller_manager = Node( - package="controller_manager", - executable="ros2_control_node", - output="both", - namespace="rob_3", - parameters=[ - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "multi_robot", - "control_integration", - "config", - "rob_3_bluerov2_heavy_jtc.yaml", - ] - ), - ], - remappings=[ - ("controller_manager/robot_description", "robot_description"), - ], - ) - - jt_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "jt_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_3", - ], - ) - - velocity_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "integral_sliding_mode_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_3", - ], - ) - - thruster_spawners = [ - Node( - package="controller_manager", - executable="spawner", - arguments=[ - f"thruster{i + 1}_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_3", - ], - ) - for i in range(8) # BlueROV2 Heavy has 8 thrusters - ] - - delay_thruster_spawners = [] - for i, thruster_spawner in enumerate(thruster_spawners): - if not len(delay_thruster_spawners): - delay_thruster_spawners.append( - thruster_spawner, - ) - else: - delay_thruster_spawners.append( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[i - 1], - on_exit=[thruster_spawner], - ) - ) - ) - - tam_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "thruster_allocation_matrix_controller", - "--controller-manager", - ["", "controller_manager"], - "--namespace", - "rob_3", - ], - ) - - delay_tam_controller_spawner_after_thruster_controller_spawners = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[-1], - on_exit=[tam_controller_spawner], - ) - ) - ) - - delay_velocity_controller_spawner_after_tam_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=tam_controller_spawner, - on_exit=[velocity_controller_spawner], - ) - ) - ) - - delay_jt_controller_spawner_after_velocity_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=velocity_controller_spawner, - on_exit=[jt_controller_spawner], - ) - ) - ) - - return LaunchDescription( - [ - *args, - message_transformer_with_ns, - controller_manager, - *delay_thruster_spawners, - delay_tam_controller_spawner_after_thruster_controller_spawners, - delay_velocity_controller_spawner_after_tam_controller_spawner, - delay_jt_controller_spawner_after_velocity_controller_spawner, - ] - ) From 29073ec141b507e3bc4d6ba9491ce29dc7f572e4 Mon Sep 17 00:00:00 2001 From: JBVAkshaya Date: Wed, 11 Jun 2025 01:25:53 +0000 Subject: [PATCH 72/72] clean up --- .../bluerov2_heavy_joint_traj_controller.yaml | 204 ------------------ ...uerov2_heavy_with_jt_controllers.launch.py | 193 ----------------- 2 files changed, 397 deletions(-) delete mode 100644 blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml delete mode 100644 blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py diff --git a/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml b/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml deleted file mode 100644 index 49ea6ce1..00000000 --- a/blue_demos/control_integration/config/bluerov2_heavy_joint_traj_controller.yaml +++ /dev/null @@ -1,204 +0,0 @@ -controller_manager: - ros__parameters: - update_rate: 100 # Hz - - jt_controller: - type: "joint_trajectory_controller/JointTrajectoryController" - - integral_sliding_mode_controller: - type: velocity_controllers/IntegralSlidingModeController - - thruster_allocation_matrix_controller: - type: thruster_allocation_matrix_controller/ThrusterAllocationMatrixController - - thruster1_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster2_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster3_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster4_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster5_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster6_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster7_controller: - type: thruster_controllers/PolynomialThrustCurveController - - thruster8_controller: - type: thruster_controllers/PolynomialThrustCurveController - -jt_controller: - ros__parameters: - action_monitor_rate: 20.0 - allow_integration_in_goal_trajectories: false - allow_nonzero_velocity_at_trajectory_end: false - allow_partial_joints_goal: false - cmd_timeout: 1.0 - joints: - - joint_x - - joint_y - - joint_z - - joint_rx - - joint_ry - - joint_rz - - command_interfaces: - - velocity - - command_joints: - - integral_sliding_mode_controller/x - - integral_sliding_mode_controller/y - - integral_sliding_mode_controller/z - - integral_sliding_mode_controller/rx - - integral_sliding_mode_controller/ry - - integral_sliding_mode_controller/rz - - state_interfaces: - - position - - velocity - - open_loop_control: true - constraints: - stopped_velocity_tolerance: 0.01 - goal_time: 0.0 - joint1: - trajectory: 0.05 - goal: 0.03 - -integral_sliding_mode_controller: - ros__parameters: - use_external_measured_states: true - reference_controller: thruster_allocation_matrix_controller - gains: - rho: 20.0 - lambda: 200.0 - Kp: [10.0, 10.0, 6.0, 3.0, 6.0, 10.0] - tf: - base_frame: "base_link_fsd" - odom_frame: "map_ned" - hydrodynamics: - mass: 13.5 - weight: 114.80 - buoyancy: 112.80 - moments_of_inertia: [0.16, 0.16, 0.16] - added_mass: [-5.50, -12.70, -14.60, -0.12, -0.12, -0.12] - center_of_buoyancy: [0.0, 0.0, 0.0] - center_of_gravity: [0.0, 0.0, 0.0] - linear_damping: [-4.03, -6.22, -5.18, -0.07, -0.07, -0.07] - quadratic_damping: [-18.18, -21.66, -36.99, -1.55, -1.55, -1.55] - -thruster_allocation_matrix_controller: - ros__parameters: - thrusters: - - thruster1_joint - - thruster2_joint - - thruster3_joint - - thruster4_joint - - thruster5_joint - - thruster6_joint - - thruster7_joint - - thruster8_joint - reference_controllers: - - thruster1_controller - - thruster2_controller - - thruster3_controller - - thruster4_controller - - thruster5_controller - - thruster6_controller - - thruster7_controller - - thruster8_controller - tam: - x: [ -0.707, -0.707, 0.707, 0.707, 0.0, 0.0, 0.0, 0.0] - y: [ 0.707, -0.707, 0.707, -0.707, 0.0, 0.0, 0.0, 0.0] - z: [ 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0] - rx: [ 0.0, 0.0, 0.0, 0.0, -0.21805, 0.21805, -0.21805, 0.21805] - ry: [ 0.0, 0.0, 0.0, 0.0, -0.12, -0.12, 0.12, 0.12] - rz: [0.1888, -0.1888, -0.1888, 0.1888, 0.0, 0.0, 0.0, 0.0] - -thruster1_controller: - ros__parameters: - thruster: thruster1_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster2_controller: - ros__parameters: - thruster: thruster2_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster3_controller: - ros__parameters: - thruster: thruster3_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster4_controller: - ros__parameters: - thruster: thruster4_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster5_controller: - ros__parameters: - thruster: thruster5_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster6_controller: - ros__parameters: - thruster: thruster6_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster7_controller: - ros__parameters: - thruster: thruster7_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] - -thruster8_controller: - ros__parameters: - thruster: thruster8_joint - min_thrust: -40.0 - max_thrust: 60.0 - min_deadband: 1470 - max_deadband: 1530 - neutral_pwm: 1500 - thrust_curve_coefficients: [1498.0, 12.01, -0.04731, -0.002098, 0.00002251] diff --git a/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py b/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py deleted file mode 100644 index 85b2bfe7..00000000 --- a/blue_demos/control_integration/launch/bluerov2_heavy_with_jt_controllers.launch.py +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright 2024, Evan Palmer -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from launch import LaunchDescription -from launch.actions import ( - DeclareLaunchArgument, - IncludeLaunchDescription, - RegisterEventHandler, -) -from launch.event_handlers import OnProcessExit -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import PathJoinSubstitution, TextSubstitution -from launch_ros.actions import Node -from launch_ros.substitutions import FindPackageShare - - -def generate_launch_description() -> LaunchDescription: - """Generate a launch description for the BlueROV2. - This should be launched after MAVROS has fully loaded. - """ - args = [ - DeclareLaunchArgument( - "prefix", - default_value="", - description=( - "The prefix of the model. This is useful for multi-robot setups." - " Expected format '/'." - ), - ), - DeclareLaunchArgument( - "use_sim", - default_value="false", - description="Launch the Gazebo + ArduSub simulator.", - ), - ] - - # The ISMC expects state information to be provided in the FSD frame - message_transformer = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution( - [ - FindPackageShare("message_transforms"), - "launch", - "message_transforms.launch.py", - ] - ) - ), - launch_arguments={ - "parameters_file": PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "control_integration", - "config", - "transforms.yaml", - ] - ), - "ns": TextSubstitution(text="control_integration"), - }.items(), - ) - - controller_manager = Node( - package="controller_manager", - executable="ros2_control_node", - output="both", - parameters=[ - PathJoinSubstitution( - [ - FindPackageShare("blue_demos"), - "control_integration", - "config", - "bluerov2_heavy_joint_traj_controller.yaml", - ] - ), - ], - remappings=[ - ("/controller_manager/robot_description", "/robot_description"), - ], - ) - - jt_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "jt_controller", - "--controller-manager", - ["", "controller_manager"], - ], - ) - - velocity_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "integral_sliding_mode_controller", - "--controller-manager", - ["", "controller_manager"], - ], - ) - - thruster_spawners = [ - Node( - package="controller_manager", - executable="spawner", - arguments=[ - f"thruster{i + 1}_controller", - "--controller-manager", - ["", "controller_manager"], - ], - ) - for i in range(8) # BlueROV2 Heavy has 8 thrusters - ] - - delay_thruster_spawners = [] - for i, thruster_spawner in enumerate(thruster_spawners): - if not len(delay_thruster_spawners): - delay_thruster_spawners.append( - thruster_spawner, - ) - else: - delay_thruster_spawners.append( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[i - 1], - on_exit=[thruster_spawner], - ) - ) - ) - - tam_controller_spawner = Node( - package="controller_manager", - executable="spawner", - arguments=[ - "thruster_allocation_matrix_controller", - "--controller-manager", - ["", "controller_manager"], - ], - ) - - delay_tam_controller_spawner_after_thruster_controller_spawners = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=thruster_spawners[-1], - on_exit=[tam_controller_spawner], - ) - ) - ) - - delay_velocity_controller_spawner_after_tam_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=tam_controller_spawner, - on_exit=[velocity_controller_spawner], - ) - ) - ) - - delay_jt_controller_spawner_after_velocity_controller_spawner = ( - RegisterEventHandler( - event_handler=OnProcessExit( - target_action=velocity_controller_spawner, - on_exit=[jt_controller_spawner], - ) - ) - ) - - return LaunchDescription( - [ - *args, - message_transformer, - controller_manager, - *delay_thruster_spawners, - delay_tam_controller_spawner_after_thruster_controller_spawners, - delay_velocity_controller_spawner_after_tam_controller_spawner, - delay_jt_controller_spawner_after_velocity_controller_spawner, - ] - )