From cf9233746d226c0a360dde17cdda276aa35381bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 4 Jul 2025 00:05:10 +0000 Subject: [PATCH 1/7] chore: Generate build artifacts for 3.1.2 release --- build_artifacts/v3/v3.1/v3.1.2/Dockerfile | 218 ++++++++++++++++++ build_artifacts/v3/v3.1/v3.1.2/cpu.env.in | 64 +++++ .../v3/v3.1/v3.1.2/cpu.pinned_env.in | 7 + .../code_editor_machine_settings.json | 4 + .../code_editor_user_settings.json | 3 + .../dirs/etc/code-editor/extensions.txt | 4 + .../v3/v3.1/v3.1.2/dirs/etc/conda/.condarc | 6 + .../dirs/etc/jupyter/jupyter_server_config.py | 28 +++ .../v3.1.2/dirs/etc/patches/apply_patches.sh | 37 +++ .../etc/patches/smus/0001-sparkmagic.patch | 10 + .../0002-sparkmagic-override-info-table.patch | 24 ++ .../smus/0003-fix-ipython-display.patch | 7 + .../smus/0004-fix-boto3-endpoints.patch | 12 + .../sagemaker-inference-server/__init__.py | 3 + .../dirs/etc/sagemaker-inference-server/serve | 2 + .../etc/sagemaker-inference-server/serve.py | 25 ++ .../tornado_server/__init__.py | 12 + .../tornado_server/async_handler.py | 76 ++++++ .../tornado_server/server.py | 127 ++++++++++ .../tornado_server/stream_handler.py | 59 +++++ .../tornado_server/sync_handler.py | 77 +++++++ .../utils/__init__.py | 1 + .../utils/environment.py | 59 +++++ .../utils/exception.py | 21 ++ .../utils/logger.py | 43 ++++ .../v3.1.2/dirs/etc/sagemaker-ui/git_clone.sh | 62 +++++ .../dirs/etc/sagemaker-ui/git_config.sh | 9 + .../jupyter/lab/settings/overrides.json | 5 + .../jupyter/lab/settings/page_config.json | 14 ++ .../jupyter/server/jupyter_server_config.py | 30 +++ .../python3_kernel_launcher.sh | 51 ++++ .../sagemaker-ui/kernels/python3/kernel.json | 14 ++ .../etc/sagemaker-ui/libmgmt/install-lib.sh | 18 ++ .../sagemaker-ui/sagemaker_ui_post_startup.sh | 180 +++++++++++++++ .../etc/sagemaker-ui/set_code_editor_theme.sh | 23 ++ .../workflows/docker-compose.yaml | 77 +++++++ .../etc/sagemaker-ui/workflows/healthcheck.sh | 34 +++ ...akerWorkflowsOperator-1.0-py3-none-any.whl | Bin 0 -> 23090 bytes ...zn_sagemaker_studio-1.0.9-py3-none-any.whl | Bin 0 -> 2360698 bytes .../workflows/requirements/requirements.txt | 5 + .../etc/sagemaker-ui/workflows/sample_dag.py | 18 ++ .../workflows/sm-spark-cli-install.sh | 9 + .../sagemaker-ui/workflows/sm_init_script.sh | 24 ++ .../workflows/start-workflows-container.sh | 190 +++++++++++++++ .../sagemaker-ui/workflows/startup/startup.sh | 1 + .../workflows/stop-workflows-container.sh | 12 + .../sagemaker-ui/workflows/workflow_client.py | 114 +++++++++ .../etc/sagemaker/sm_pysdk_default_config.py | 122 ++++++++++ .../conf.d/supervisord-code-editor.conf | 12 + .../supervisor/conf.d/supervisord-common.conf | 18 ++ .../conf.d/supervisord-jupyter-lab.conf | 11 + .../supervisord-sagemaker-ui-code-editor.conf | 28 +++ .../supervisord-sagemaker-ui-default.conf | 27 +++ .../conf.d/supervisord-sagemaker-ui.conf | 35 +++ .../etc/supervisor/conf.d/supervisord.conf | 27 +++ .../dirs/usr/local/bin/entrypoint-code-editor | 16 ++ .../usr/local/bin/entrypoint-jupyter-server | 25 ++ .../bin/entrypoint-sagemaker-ui-code-editor | 16 ++ .../entrypoint-sagemaker-ui-jupyter-server | 19 ++ .../dirs/usr/local/bin/merge-settings-util.py | 22 ++ .../dirs/usr/local/bin/restart-jupyter-server | 6 + .../bin/restart-sagemaker-ui-jupyter-server | 6 + .../dirs/usr/local/bin/start-code-editor | 84 +++++++ .../dirs/usr/local/bin/start-jupyter-server | 43 ++++ .../local/bin/start-sagemaker-ui-code-editor | 107 +++++++++ .../bin/start-sagemaker-ui-jupyter-server | 37 +++ .../v3/v3.1/v3.1.2/gpu.arg_based_env.in | 6 + build_artifacts/v3/v3.1/v3.1.2/gpu.env.in | 64 +++++ .../v3/v3.1/v3.1.2/gpu.pinned_env.in | 6 + .../v3/v3.1/v3.1.2/patch_glue_pyspark.json | 15 ++ .../v3/v3.1/v3.1.2/patch_glue_spark.json | 15 ++ .../v3/v3.1/v3.1.2/source-version.txt | 1 + 72 files changed, 2587 insertions(+) create mode 100644 build_artifacts/v3/v3.1/v3.1.2/Dockerfile create mode 100644 build_artifacts/v3/v3.1/v3.1.2/cpu.env.in create mode 100644 build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_machine_settings.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_user_settings.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/extensions.txt create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/conda/.condarc create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/jupyter/jupyter_server_config.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/apply_patches.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0001-sparkmagic.patch create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0003-fix-ipython-display.patch create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/__init__.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/__init__.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/async_handler.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/server.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/stream_handler.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/sync_handler.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/__init__.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/environment.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/exception.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/logger.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_clone.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_config.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/python3/kernel.json create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/set_code_editor_theme.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/healthcheck.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/plugins/amzn_sagemaker_studio-1.0.9-py3-none-any.whl create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sample_dag.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/startup/startup.sh create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/workflow_client.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker/sm_pysdk_default_config.py create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-common.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord.conf create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-code-editor create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-jupyter-server create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server create mode 100644 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/merge-settings-util.py create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-jupyter-server create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-code-editor create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-jupyter-server create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-code-editor create mode 100755 build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server create mode 100644 build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in create mode 100644 build_artifacts/v3/v3.1/v3.1.2/gpu.env.in create mode 100644 build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in create mode 100644 build_artifacts/v3/v3.1/v3.1.2/patch_glue_pyspark.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/patch_glue_spark.json create mode 100644 build_artifacts/v3/v3.1/v3.1.2/source-version.txt diff --git a/build_artifacts/v3/v3.1/v3.1.2/Dockerfile b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile new file mode 100644 index 00000000..92754a04 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile @@ -0,0 +1,218 @@ +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE + +ARG CUDA_MAJOR_MINOR_VERSION='' +ARG ENV_IN_FILENAME +ARG PINNED_ENV_IN_FILENAME +ARG ARG_BASED_ENV_IN_FILENAME +ARG IMAGE_VERSION +LABEL "org.amazon.sagemaker-distribution.image.version"=$IMAGE_VERSION + +ARG AMZN_BASE="/opt/amazon/sagemaker" +ARG DB_ROOT_DIR="/opt/db" +ARG DIRECTORY_TREE_STAGE_DIR="${AMZN_BASE}/dir-staging" + +ARG NB_USER="sagemaker-user" +ARG NB_UID=1000 +ARG NB_GID=100 + +# https://www.openssl.org/source/ +ARG FIPS_VALIDATED_SSL=3.0.8 +ARG MIN_REQUIRED_MICROMAMBA_VERSION=1.5.11 + +ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" +ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" +ENV IMAGE_VERSION=$IMAGE_VERSION +ENV PINNED_MICROMAMBA_MINOR_VERSION="1.5.*" +ENV SAGEMAKER_RECOVERY_MODE_HOME=/tmp/sagemaker-recovery-mode-home + +USER root +# Upgrade micromamba to the latest patch version in the pinned minor version range, if applicable +RUN CURRENT_MICROMAMBA_VERSION=$(micromamba --version) && \ + echo "Current micromamba version: $CURRENT_MICROMAMBA_VERSION" && \ + if [[ "$CURRENT_MICROMAMBA_VERSION" == $PINNED_MICROMAMBA_MINOR_VERSION ]]; then \ + echo "Upgrading micromamba to the latest $PINNED_MICROMAMBA_MINOR_VERSION version..." && \ + micromamba self-update -c conda-forge --version "$MIN_REQUIRED_MICROMAMBA_VERSION" && \ + micromamba clean --all --yes --force-pkgs-dirs; \ + else \ + echo "Micromamba is already at version $CURRENT_MICROMAMBA_VERSION (outside $PINNED_MICROMAMBA_MINOR_VERSION). No upgrade performed."; \ + fi + +RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \ + groupmod "--new-name=${NB_USER}" --non-unique "-g ${NB_GID}" "${MAMBA_USER}" && \ + # Update the expected value of MAMBA_USER for the + # _entrypoint.sh consistency check. + echo "${NB_USER}" > "/etc/arg_mamba_user" && \ + : +ENV MAMBA_USER=$NB_USER +ENV USER=$NB_USER + +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less mandoc jq ca-certificates gnupg && \ + # We just install tzdata below but leave default time zone as UTC. This helps packages like Pandas to function correctly. + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata krb5-user libkrb5-dev libsasl2-dev libsasl2-modules && \ + chmod g+w /etc/passwd && \ + echo "ALL ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \ + touch /etc/krb5.conf.lock && chown ${NB_USER}:${MAMBA_USER} /etc/krb5.conf* && \ + # Note that we do NOT run `rm -rf /var/lib/apt/lists/*` here. If we did, anyone building on top of our images will + # not be able to run any `apt-get install` commands and that would hamper customizability of the images. + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ + unzip awscliv2.zip && \ + sudo ./aws/install && \ + rm -rf aws awscliv2.zip && \ + : && \ + echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile && \ +# CodeEditor - create server, user data dirs + mkdir -p /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data \ + && chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data && \ +# create dir to store user data files + mkdir -p /opt/amazon/sagemaker/user-data \ + && chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/user-data && \ +# Merge in OS directory tree contents. + mkdir -p ${DIRECTORY_TREE_STAGE_DIR} +COPY dirs/ ${DIRECTORY_TREE_STAGE_DIR}/ +RUN rsync -a ${DIRECTORY_TREE_STAGE_DIR}/ / && \ + rm -rf ${DIRECTORY_TREE_STAGE_DIR} && \ +# CodeEditor - download the extensions + mkdir -p /etc/code-editor/extensions && \ + while IFS= read -r url || [ -n "$url" ]; do \ + echo "Downloading extension from ${url}..." && \ + wget --no-check-certificate -P /etc/code-editor/extensions "${url}"; \ + done < /etc/code-editor/extensions.txt + +USER $MAMBA_USER +COPY --chown=$MAMBA_USER:$MAMBA_USER $ENV_IN_FILENAME *.in /tmp/ +COPY --chown=$MAMBA_USER:$MAMBA_USER $PINNED_ENV_IN_FILENAME *.in /tmp/ + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION + +# Make sure that $ENV_IN_FILENAME and $PINNED_ENV_IN_FILENAME has a newline at the end before the `tee` command runs. +# Otherwise, nasty things will happen. +RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \ + then echo 'No ARG_BASED_ENV_IN_FILENAME passed' ; \ + else envsubst < /tmp/$ARG_BASED_ENV_IN_FILENAME | tee --append /tmp/$ENV_IN_FILENAME ; \ + fi && \ + # Enforce dependencies are all installed from conda-forge + micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME --file /tmp/$PINNED_ENV_IN_FILENAME && \ + mkdir -p $SAGEMAKER_RECOVERY_MODE_HOME && \ + chown $MAMBA_USER:$MAMBA_USER $SAGEMAKER_RECOVERY_MODE_HOME && \ + SUPERVISOR_VERSION=$(grep "^conda-forge::supervisor\[" /tmp/$ENV_IN_FILENAME) && \ + JUPYTERLAB_VERSION=$(grep "^conda-forge::jupyterlab\[" /tmp/$ENV_IN_FILENAME) && \ + SAGEMAKER_JUPYTERLAB_VERSION=$(grep "^conda-forge::sagemaker-jupyterlab-extension" /tmp/$ENV_IN_FILENAME) && \ + echo "Installing in sagemaker-recovery-mode micromamba environment: $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION" && \ + micromamba create --prefix /opt/conda/envs/sagemaker-recovery-mode && \ + micromamba install --prefix /opt/conda/envs/sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \ + micromamba clean --all --yes --force-pkgs-dirs && \ + rm -rf /tmp/*.in && \ + sudo ln -s $(which python3) /usr/bin/python && \ + # Update npm version + npm i -g npm && \ + # Enforce to use `conda-forge` as only channel, by removing `defaults` + conda config --remove channels defaults && \ + micromamba config append channels conda-forge --env && \ + # Configure CodeEditor - Install extensions and set preferences + extensionloc=/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions && mkdir -p "${extensionloc}" \ + # Loop through all vsix files in /etc/code-editor/extensions and install them + && for ext in /etc/code-editor/extensions/*.vsix; do \ + echo "Installing extension ${ext}..."; \ + sagemaker-code-editor --install-extension "${ext}" --extensions-dir "${extensionloc}" --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data; \ + done \ + # Copy the settings + && cp /etc/code-editor/code_editor_machine_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/Machine/settings.json && \ + cp /etc/code-editor/code_editor_user_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/User/settings.json && \ + # Install glue kernels, and move to shared directory + # Also patching base kernel so Studio background code doesn't start session silently + install-glue-kernels && \ + SITE_PACKAGES=$(pip show aws-glue-sessions | grep Location | awk '{print $2}') && \ + jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_pyspark --user && \ + jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_spark --user && \ + mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_pyspark /opt/conda/share/jupyter/kernels && \ + mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_spark /opt/conda/share/jupyter/kernels && \ + sed -i '/if not store_history and (/i\ if "sm_analytics_runtime_check" in code:\n return await self._complete_cell()\n' \ + "$SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_kernel_base/BaseKernel.py" && \ + # Install FIPS Provider for OpenSSL, on top of existing OpenSSL installation + # v3.0.8 is latest FIPS validated provider, so this is the one we install + # But we need to run tests against the installed version. + # see https://github.com/openssl/openssl/blob/master/README-FIPS.md https://www.openssl.org/source/ + INSTALLED_SSL=$(micromamba list | grep openssl | tr -s ' ' | cut -d ' ' -f 3 | head -n 1) && \ + # download source code for installed, and FIPS validated openssl versions + curl -L https://github.com/openssl/openssl/releases/download/openssl-$FIPS_VALIDATED_SSL/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://github.com/openssl/openssl/releases/download/openssl-$INSTALLED_SSL/openssl-$INSTALLED_SSL.tar.gz > openssl-$INSTALLED_SSL.tar.gz && \ + tar -xf openssl-$FIPS_VALIDATED_SSL.tar.gz && tar -xf openssl-$INSTALLED_SSL.tar.gz && cd openssl-$FIPS_VALIDATED_SSL && \ + # Configure both versions to enable FIPS and build + ./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \ + cd ../openssl-$INSTALLED_SSL && \ + ./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \ + # Copy validated provider to installed version for testing + cp ../openssl-$FIPS_VALIDATED_SSL/providers/fips.so providers/. && \ + cp ../openssl-$FIPS_VALIDATED_SSL/providers/fipsmodule.cnf providers/. && \ + make tests && cd ../openssl-$FIPS_VALIDATED_SSL && \ + # After tests pass, install FIPS provider and remove source code + make install_fips && cd .. && rm -rf ./openssl-* && \ +# Create new config file with fips-enabled. Then user can override OPENSSL_CONF to enable FIPS +# e.g. export OPENSSL_CONF=/opt/conda/ssl/openssl-fips.cnf + cp /opt/conda/ssl/openssl.cnf /opt/conda/ssl/openssl-fips.cnf && \ + sed -i "s:# .include fipsmodule.cnf:.include /opt/conda/ssl/fipsmodule.cnf:" /opt/conda/ssl/openssl-fips.cnf && \ + sed -i 's:# fips = fips_sect:fips = fips_sect:' /opt/conda/ssl/openssl-fips.cnf && \ +# Install Kerberos. +# Make sure no dependency is added/updated + pip install "krb5>=0.5.1,<0.6" && \ + pip show krb5 | grep Require | xargs -i sh -c '[ $(echo {} | cut -d: -f2 | wc -w) -eq 0 ] ' && \ +# https://stackoverflow.com/questions/122327 + SYSTEM_PYTHON_PATH=$(python3 -c "from __future__ import print_function;import sysconfig; print(sysconfig.get_paths().get('purelib'))") && \ + # Remove SparkRKernel as it's not supported \ + jupyter-kernelspec remove -f -y sparkrkernel && \ + # Patch Sparkmagic lib to support Custom Certificates \ + # https://github.com/jupyter-incubator/sparkmagic/pull/435/files \ + cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/configuration.py ${SYSTEM_PYTHON_PATH}/sparkmagic/utils/ && \ + cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/reliablehttpclient.py ${SYSTEM_PYTHON_PATH}/sparkmagic/livyclientlib/reliablehttpclient.py && \ + sed -i 's= "python"= "/opt/conda/bin/python"=g' /opt/conda/share/jupyter/kernels/pysparkkernel/kernel.json /opt/conda/share/jupyter/kernels/sparkkernel/kernel.json && \ + sed -i 's="Spark"="SparkMagic Spark"=g' /opt/conda/share/jupyter/kernels/sparkkernel/kernel.json && \ + sed -i 's="PySpark"="SparkMagic PySpark"=g' /opt/conda/share/jupyter/kernels/pysparkkernel/kernel.json && \ + # Configure RTC - disable jupyter_collaboration by default + jupyter labextension disable @jupyter/collaboration-extension && \ + # Disable docprovider-extension for v3 and above images + jupyter labextension disable @jupyter/docprovider-extension + +# Patch glue kernels to use kernel wrapper +COPY patch_glue_pyspark.json /opt/conda/share/jupyter/kernels/glue_pyspark/kernel.json +COPY patch_glue_spark.json /opt/conda/share/jupyter/kernels/glue_spark/kernel.json + +USER root + +# Create logging directories for supervisor +RUN mkdir -p $SAGEMAKER_LOGGING_DIR && \ + chmod a+rw $SAGEMAKER_LOGGING_DIR && \ + mkdir -p ${STUDIO_LOGGING_DIR} && \ + chown ${NB_USER}:${MAMBA_USER} ${STUDIO_LOGGING_DIR} && \ + # Create sagemaker pysdk admin default config directory + mkdir -p /etc/xdg/sagemaker && \ + chmod a+rw /etc/xdg/sagemaker && \ + # Clean up CodeEditor artifacts + rm -rf /etc/code-editor && \ + # Create supervisord runtime directory + mkdir -p /var/run/supervisord && \ + chmod a+rw /var/run/supervisord && \ + # Create root directory for DB + # Create logging directories for supervisor + mkdir -p $DB_ROOT_DIR && \ + chmod a+rw $DB_ROOT_DIR && \ + HOME_DIR="/home/${NB_USER}/licenses" \ + && mkdir -p ${HOME_DIR} \ + && curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip \ + && unzip ${HOME_DIR}/oss_compliance.zip -d ${HOME_DIR}/ \ + && cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance \ + && chmod +x /usr/local/bin/testOSSCompliance \ + && chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh \ + && ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} python \ + && rm -rf ${HOME_DIR}/oss_compliance* + +# Explicitly disable BuildKit for SM Studio Docker functionality +ENV DOCKER_BUILDKIT=0 +ENV PATH="/etc/sagemaker-inference-server:/opt/conda/bin:/opt/conda/condabin:$PATH" +WORKDIR "/home/${NB_USER}" +ENV SHELL=/bin/bash +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ +USER $MAMBA_USER diff --git a/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in new file mode 100644 index 00000000..93710c44 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in @@ -0,0 +1,64 @@ +# This file is auto-generated. +conda-forge::s3fs[version='>=2024.10.0,<2024.11.0'] +conda-forge::seaborn[version='>=0.13.2,<0.14.0'] +conda-forge::jupyter-activity-monitor-extension[version='>=0.3.2,<0.4.0'] +conda-forge::mlflow[version='>=2.22.0,<2.23.0'] +conda-forge::sagemaker-mlflow[version='>=0.1.0,<0.2.0'] +conda-forge::langchain-aws[version='>=0.2.19,<0.3.0'] +conda-forge::jupyter-collaboration[version='>=3.1.0,<3.2.0'] +conda-forge::sagemaker-code-editor[version='>=1.5.0,<1.6.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.18,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<0.2.0'] +conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.7,<1.3.0'] +conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<3.5.0'] +conda-forge::langchain[version='>=0.3.26,<0.4.0'] +conda-forge::fastapi[version='>=0.115.13,<0.116.0'] +conda-forge::uvicorn[version='>=0.34.3,<0.35.0'] +conda-forge::pytorch[version='>=2.6.0,<2.7.0'] +conda-forge::tensorflow[version='>=2.18.0,<2.19.0'] +conda-forge::python[version='>=3.12.9,<3.13.0'] +conda-forge::pip[version='>=25.1.1,<25.2.0'] +conda-forge::torchvision[version='>=0.21.0,<0.22.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.2.3,<2.3.0'] +conda-forge::scikit-learn[version='>=1.6.1,<1.7.0'] +conda-forge::jinja2[version='>=3.1.6,<3.2.0'] +conda-forge::matplotlib-base[version='>=3.10.3,<3.11.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<0.1.0'] +conda-forge::ipython[version='>=8.36.0,<8.37.0'] +conda-forge::scipy[version='>=1.15.2,<1.16.0'] +conda-forge::keras[version='>=3.9.2,<3.10.0'] +conda-forge::py-xgboost-cpu[version='>=2.1.4,<2.2.0'] +conda-forge::jupyterlab[version='>=4.4.3,<4.5.0'] +conda-forge::ipywidgets[version='>=8.1.7,<8.2.0'] +conda-forge::conda[version='>=25.3.1,<25.4.0'] +conda-forge::boto3[version='>=1.37.1,<1.38.0'] +conda-forge::sagemaker-python-sdk[version='>=2.244.2,<2.245.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=1.3.1,<1.4.0'] +conda-forge::aws-glue-sessions[version='>=1.0.9,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.31.5,<2.32.0'] +conda-forge::jupyter-scheduler[version='>=2.10.0,<2.11.0'] +conda-forge::jupyter-lsp[version='>=2.2.5,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::python-lsp-server[version='>=1.12.2,<1.13.0'] +conda-forge::jupyterlab-git[version='>=0.51.2,<0.52.0'] +conda-forge::notebook[version='>=7.4.3,<7.5.0'] +conda-forge::altair[version='>=5.5.0,<5.6.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.7,<0.2.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.10,<0.4.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.14,<3.2.0'] +conda-forge::jupyter-server-proxy[version='>=4.4.0,<4.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.9.0,<1.10.0'] +conda-forge::tf-keras[version='>=2.18.0,<2.19.0'] +conda-forge::git-remote-codecommit[version='>=1.16,<1.17.0'] +conda-forge::docker-cli[version='>=27.5.1,<27.6.0'] +conda-forge::aioboto3[version='>=14.1.0,<14.2.0'] +conda-forge::sagemaker-studio-cli[version='>=1.0.6,<1.1.0'] +conda-forge::sagemaker-studio[version='>=1.0.16,<1.1.0'] +conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.13,<1.1.0'] +conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.11,<1.1.0'] diff --git a/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in b/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in new file mode 100644 index 00000000..2c088f01 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in @@ -0,0 +1,7 @@ +conda-forge::dash[version='<=2.18.1'] +conda-forge::evaluate[version='<0.4.2'] +conda-forge::catboost[version='>=1.1.1,<1.3.0',build='*cpu*'] +conda-forge::libsqlite[version='<3.49.0'] +conda-forge::urllib3[version='<2'] +conda-forge::papermill[version='>=2.6.0'] +conda-forge::plotly[version='<6.1.0'] diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_machine_settings.json b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..44fb8ef7 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_machine_settings.json @@ -0,0 +1,4 @@ +{ + "python.terminal.activateEnvironment": false, + "python.defaultInterpreterPath": "/opt/conda/bin/python" +} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_user_settings.json b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_user_settings.json new file mode 100644 index 00000000..ed3ef56a --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/code_editor_user_settings.json @@ -0,0 +1,3 @@ +{ + "extensions.autoUpdate": false +} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/extensions.txt b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..7672e9df --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,4 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2024.5.0/file/ms-toolsai.jupyter-2024.5.0.vsix +https://open-vsx.org/api/ms-python/python/2023.20.0/file/ms-python.python-2023.20.0.vsix +https://open-vsx.org/api/amazonwebservices/aws-toolkit-vscode/3.30.0/file/amazonwebservices.aws-toolkit-vscode-3.30.0.vsix +https://open-vsx.org/api/amazonwebservices/amazon-q-vscode/1.58.0/file/amazonwebservices.amazon-q-vscode-1.58.0.vsix diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/conda/.condarc b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/conda/.condarc new file mode 100644 index 00000000..c3616df5 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/conda/.condarc @@ -0,0 +1,6 @@ +envs_dirs: + - ~/.conda/envs + - /opt/conda/envs +pkgs_dirs: + - ~/.conda/pkgs + - /opt/conda/pkgs diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/jupyter/jupyter_server_config.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/jupyter/jupyter_server_config.py new file mode 100644 index 00000000..0182cc23 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/jupyter/jupyter_server_config.py @@ -0,0 +1,28 @@ +# Default Jupyter server config +# Note: those config can be overridden by user-level configs. + +c.ServerApp.terminado_settings = {"shell_command": ["/bin/bash"]} +c.ServerApp.tornado_settings = {"compress_response": True} + +# Do not delete files to trash. Instead, permanently delete files. +c.FileContentsManager.delete_to_trash = False + +# Allow deleting non-empty directory via file browser. Related documentation: +# https://github.com/jupyter-server/jupyter_server/blob/main/jupyter_server/services/contents/filemanager.py#L125-L129 +c.FileContentsManager.always_delete_dir = True + +# Enable `allow_hidden` by default, so hidden files are accessible via Jupyter server +# Related documentation: https://jupyterlab.readthedocs.io/en/stable/user/files.html#displaying-hidden-files +c.ContentsManager.allow_hidden = True + +# This will set the LanguageServerManager.extra_node_roots setting if amazon_sagemaker_sql_editor exists in the +# environment. Ignore otherwise, don't fail the JL server start +# Related documentation: https://jupyterlab-lsp.readthedocs.io/en/v3.4.0/Configuring.html +try: + import os + + module = __import__("amazon_sagemaker_sql_editor") + module_location = os.path.dirname(module.__file__) + c.LanguageServerManager.extra_node_roots = [f"{module_location}/sql-language-server"] +except: + pass diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/apply_patches.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/apply_patches.sh new file mode 100755 index 00000000..c4ec7604 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/apply_patches.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +set -eux + +# Check if parameter is provided +if [ $# -ne 1 ]; then + echo "Usage: $0 [smus|studio-ai]" + exit 1 +fi + +# Validate parameter +case "$1" in + "smus") + PATCH_DIR="/etc/patches/smus" + ;; + "studio-ai") + PATCH_DIR="/etc/patches/studio-ai" + ;; + *) + echo "Error: Parameter must be either 'smus' or 'studio-ai'" + exit 1 + ;; +esac + +# Check if patch directory exists +if [ ! -d "$PATCH_DIR" ]; then + echo "Error: Patch directory $PATCH_DIR does not exist" + exit 1 +fi + +# Patch files can be generated via "diff -u /path/to/original_file /path/to/new_file > XXX_bad_package.patch" +# See https://www.thegeekstuff.com/2014/12/patch-command-examples/ +for PATCHFILE in "$PATCH_DIR"/*.patch; do + [ -f "$PATCHFILE" ] || continue + echo "Applying $PATCHFILE" + (cd "/opt/conda" && patch --strip=3 < "$PATCHFILE") +done diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0001-sparkmagic.patch b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0001-sparkmagic.patch new file mode 100644 index 00000000..25d380b9 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0001-sparkmagic.patch @@ -0,0 +1,10 @@ +--- /opt/conda/lib/python3.12/site-packages/sparkmagic/livyclientlib/command.py ++++ /opt/conda/lib/python3.12/site-packages/sparkmagic/livyclientlib/command.py +@@ -54,6 +54,7 @@ + try: + session.wait_for_idle() + data = {"code": self.code} ++ data["kind"] = session.kind + response = session.http_client.post_statement(session.id, data) + statement_id = response["id"] + output = self._get_statement_output(session, statement_id) diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch new file mode 100644 index 00000000..0e6959fc --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch @@ -0,0 +1,24 @@ +--- /opt/conda/lib/python3.12/site-packages/sparkmagic/utils/utils.py ++++ /opt/conda/lib/python3.12/site-packages/sparkmagic/utils/utils.py +@@ -94,15 +94,12 @@ + + + def get_sessions_info_html(info_sessions, current_session_id): +- html = ( +- """ +-""" +- + "".join( +- [session.get_row_html(current_session_id) for session in info_sessions] +- ) +- + "
IDYARN Application IDKindStateSpark UIDriver logUserCurrent session?
" +- ) +- ++ current_session = next((session for session in info_sessions if session.id == current_session_id), None) ++ spark_ui_url = current_session.get_spark_ui_url() ++ driver_log_url = current_session.get_driver_log_url() ++ ++ from sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.debugging_utils import get_sessions_info_html ++ html = get_sessions_info_html(current_session.get_app_id(), spark_ui_url, driver_log_url) + return html + + diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0003-fix-ipython-display.patch b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0003-fix-ipython-display.patch new file mode 100644 index 00000000..f4b2389a --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0003-fix-ipython-display.patch @@ -0,0 +1,7 @@ +--- /opt/conda/lib/python3.12/site-packages/hdijupyterutils/ipythondisplay.py ++++ /opt/conda/lib/python3.12/site-packages/hdijupyterutils/ipythondisplay.py +@@ -1,4 +1,4 @@ +-from IPython.core.display import display, HTML ++from IPython.display import display, HTML + from IPython import get_ipython + import sys diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch new file mode 100644 index 00000000..cadcc70b --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch @@ -0,0 +1,12 @@ +--- /opt/conda/lib/python3.12/site-packages/botocore/data/endpoints.json ++++ /opt/conda/lib/python3.12/site-packages/botocore/data/endpoints.json +@@ -5404,6 +5404,9 @@ + "ap-northeast-3" : { + "hostname" : "datazone.ap-northeast-3.api.aws" + }, ++ "ap-south-1" : { ++ "hostname" : "datazone.ap-south-1.api.aws" ++ }, + "ap-south-2" : { + "hostname" : "datazone.ap-south-2.api.aws" + }, diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/__init__.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/__init__.py new file mode 100644 index 00000000..0427e383 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import + +import utils.logger diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve new file mode 100755 index 00000000..bd604df3 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve @@ -0,0 +1,2 @@ +#!/bin/bash +python /etc/sagemaker-inference-server/serve.py diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve.py new file mode 100644 index 00000000..0d23ada8 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/serve.py @@ -0,0 +1,25 @@ +from __future__ import absolute_import + +""" +TODO: when adding support for more serving frameworks, move the below logic into a condition statement. +We also need to define the right environment variable for signify what serving framework to use. + +Ex. + +inference_server = None +serving_framework = os.getenv("SAGEMAKER_INFERENCE_FRAMEWORK", None) + +if serving_framework == "FastAPI": + inference_server = FastApiServer() +elif serving_framework == "Flask": + inference_server = FlaskServer() +else: + inference_server = TornadoServer() + +inference_server.serve() + +""" +from tornado_server.server import TornadoServer + +inference_server = TornadoServer() +inference_server.serve() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/__init__.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/__init__.py new file mode 100644 index 00000000..28b0e2cc --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/__init__.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import + +import pathlib +import sys + +# make the utils modules accessible to modules from within the tornado_server folder +utils_path = pathlib.Path(__file__).parent.parent / "utils" +sys.path.insert(0, str(utils_path.resolve())) + +# make the tornado_server modules accessible to each other +tornado_module_path = pathlib.Path(__file__).parent +sys.path.insert(0, str(tornado_module_path.resolve())) diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/async_handler.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/async_handler.py new file mode 100644 index 00000000..9eb94608 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/async_handler.py @@ -0,0 +1,76 @@ +from __future__ import absolute_import + +import asyncio +import logging +from typing import AsyncIterator, Iterator + +import tornado.web +from stream_handler import StreamHandler + +from utils.environment import Environment +from utils.exception import AsyncInvocationsException +from utils.logger import SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER + +logger = logging.getLogger(SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER) + + +class InvocationsHandler(tornado.web.RequestHandler, StreamHandler): + """Handler mapped to the /invocations POST route. + + This handler wraps the async handler retrieved from the inference script + and encapsulates it behind the post() method. The post() method is done + asynchronously. + """ + + def initialize(self, handler: callable, environment: Environment): + """Initializes the handler function and the serving environment.""" + + self._handler = handler + self._environment = environment + + async def post(self): + """POST method used to encapsulate and invoke the async handle method asynchronously""" + + try: + response = await self._handler(self.request) + + if isinstance(response, Iterator): + await self.stream(response) + elif isinstance(response, AsyncIterator): + await self.astream(response) + else: + self.write(response) + except Exception as e: + raise AsyncInvocationsException(e) + + +class PingHandler(tornado.web.RequestHandler): + """Handler mapped to the /ping GET route. + + Ping handler to monitor the health of the Tornados server. + """ + + def get(self): + """Simple GET method to assess the health of the server.""" + + self.write("") + + +async def handle(handler: callable, environment: Environment): + """Serves the async handler function using Tornado. + + Opens the /invocations and /ping routes used by a SageMaker Endpoint + for inference serving capabilities. + """ + + logger.info("Starting inference server in asynchronous mode...") + + app = tornado.web.Application( + [ + (r"/invocations", InvocationsHandler, dict(handler=handler, environment=environment)), + (r"/ping", PingHandler), + ] + ) + app.listen(environment.port) + logger.debug(f"Asynchronous inference server listening on port: `{environment.port}`") + await asyncio.Event().wait() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/server.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/server.py new file mode 100644 index 00000000..496bfac8 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/server.py @@ -0,0 +1,127 @@ +from __future__ import absolute_import + +import asyncio +import importlib +import logging +import subprocess +import sys +from pathlib import Path + +from utils.environment import Environment +from utils.exception import ( + InferenceCodeLoadException, + RequirementsInstallException, + ServerStartException, +) +from utils.logger import SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER + +logger = logging.getLogger(SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER) + + +class TornadoServer: + """Holds serving logic using the Tornado framework. + + The serve.py script will invoke TornadoServer.serve() to start the serving process. + The TornadoServer will install the runtime requirements specified through a requirements file. + It will then load an handler function within an inference script and then front it will an /invocations + route using the Tornado framework. + """ + + def __init__(self): + """Initialize the serving behaviors. + + Defines the serving behavior through Environment() and locate where + the inference code is contained. + """ + + self._environment = Environment() + logger.setLevel(int(self._environment.logging_level)) + logger.debug(f"Environment: {str(self._environment)}") + + self._path_to_inference_code = ( + Path(self._environment.base_directory).joinpath(self._environment.code_directory) + if self._environment.code_directory + else Path(self._environment.base_directory) + ) + logger.debug(f"Path to inference code: `{str(self._path_to_inference_code)}`") + + def initialize(self): + """Initialize the serving artifacts and dependencies. + + Install the runtime requirements and then locate the handler function from + the inference script. + """ + + logger.info("Initializing inference server...") + self._install_runtime_requirements() + self._handler = self._load_inference_handler() + + def serve(self): + """Orchestrate the initialization and server startup behavior. + + Call the initalize() method, determine the right Tornado serving behavior (async or sync), + and then start the Tornado server through asyncio + """ + + logger.info("Serving inference requests using Tornado...") + self.initialize() + + if asyncio.iscoroutinefunction(self._handler): + import async_handler as inference_handler + else: + import sync_handler as inference_handler + + try: + asyncio.run(inference_handler.handle(self._handler, self._environment)) + except Exception as e: + raise ServerStartException(e) + + def _install_runtime_requirements(self): + """Install the runtime requirements.""" + + logger.info("Installing runtime requirements...") + requirements_txt = self._path_to_inference_code.joinpath(self._environment.requirements) + if requirements_txt.is_file(): + try: + subprocess.check_call(["micromamba", "install", "--yes", "--file", str(requirements_txt)]) + except Exception as e: + logger.error( + "Failed to install requirements using `micromamba install`. Falling back to `pip install`..." + ) + try: + subprocess.check_call(["pip", "install", "-r", str(requirements_txt)]) + except Exception as e: + raise RequirementsInstallException(e) + else: + logger.debug(f"No requirements file was found at `{str(requirements_txt)}`") + + def _load_inference_handler(self) -> callable: + """Load the handler function from the inference script.""" + + logger.info("Loading inference handler...") + inference_module_name, handle_name = self._environment.code.split(".") + if inference_module_name and handle_name: + inference_module_file = f"{inference_module_name}.py" + module_spec = importlib.util.spec_from_file_location( + inference_module_file, str(self._path_to_inference_code.joinpath(inference_module_file)) + ) + if module_spec: + sys.path.insert(0, str(self._path_to_inference_code.resolve())) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + + if hasattr(module, handle_name): + handler = getattr(module, handle_name) + else: + raise InferenceCodeLoadException( + f"Handler `{handle_name}` could not be found in module `{inference_module_file}`" + ) + logger.debug(f"Loaded handler `{handle_name}` from module `{inference_module_name}`") + return handler + else: + raise InferenceCodeLoadException( + f"Inference code could not be found at `{str(self._path_to_inference_code.joinpath(inference_module_file))}`" + ) + raise InferenceCodeLoadException( + f"Inference code expected in the format of `.` but was provided as {self._environment.code}" + ) diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/stream_handler.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/stream_handler.py new file mode 100644 index 00000000..ab01f587 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/stream_handler.py @@ -0,0 +1,59 @@ +from __future__ import absolute_import + +import logging +from typing import AsyncIterator, Iterator + +from tornado.ioloop import IOLoop + +from utils.logger import SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER + +logger = logging.getLogger(SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER) + + +class StreamHandler: + """Mixin that enables async and sync streaming capabilities to the async and sync handlers + + stream() runs a provided iterator/generator fn in an async manner. + astream() runs a provided async iterator/generator fn in an async manner. + """ + + async def stream(self, iterator: Iterator): + """Streams the response from a sync response iterator + + A sync iterator must be manually iterated through asynchronously. + In a loop, iterate through each next(iterator) call in an async execution. + """ + + self._set_stream_headers() + + while True: + try: + chunk = await IOLoop.current().run_in_executor(None, next, iterator) + # Some iterators do not throw a StopIteration upon exhaustion. + # Instead, they return an empty response. Account for this case. + if not chunk: + raise StopIteration() + + self.write(chunk) + await self.flush() + except StopIteration: + break + except Exception as e: + logger.error("Unexpected exception occurred when streaming response...") + break + + async def astream(self, aiterator: AsyncIterator): + """Streams the response from an async response iterator""" + + self._set_stream_headers() + + async for chunk in aiterator: + self.write(chunk) + await self.flush() + + def _set_stream_headers(self): + """Set the headers in preparation for the streamed response""" + + self.set_header("Content-Type", "text/event-stream") + self.set_header("Cache-Control", "no-cache") + self.set_header("Connection", "keep-alive") diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/sync_handler.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/sync_handler.py new file mode 100644 index 00000000..919f803a --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/tornado_server/sync_handler.py @@ -0,0 +1,77 @@ +from __future__ import absolute_import + +import asyncio +import logging +from typing import AsyncIterator, Iterator + +import tornado.web +from stream_handler import StreamHandler +from tornado.ioloop import IOLoop + +from utils.environment import Environment +from utils.exception import SyncInvocationsException +from utils.logger import SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER + +logger = logging.getLogger(SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER) + + +class InvocationsHandler(tornado.web.RequestHandler, StreamHandler): + """Handler mapped to the /invocations POST route. + + This handler wraps the sync handler retrieved from the inference script + and encapsulates it behind the post() method. The post() method is done + asynchronously. + """ + + def initialize(self, handler: callable, environment: Environment): + """Initializes the handler function and the serving environment.""" + + self._handler = handler + self._environment = environment + + async def post(self): + """POST method used to encapsulate and invoke the sync handle method asynchronously""" + + try: + response = await IOLoop.current().run_in_executor(None, self._handler, self.request) + + if isinstance(response, Iterator): + await self.stream(response) + elif isinstance(response, AsyncIterator): + await self.astream(response) + else: + self.write(response) + except Exception as e: + raise SyncInvocationsException(e) + + +class PingHandler(tornado.web.RequestHandler): + """Handler mapped to the /ping GET route. + + Ping handler to monitor the health of the Tornados server. + """ + + def get(self): + """Simple GET method to assess the health of the server.""" + + self.write("") + + +async def handle(handler: callable, environment: Environment): + """Serves the sync handler function using Tornado. + + Opens the /invocations and /ping routes used by a SageMaker Endpoint + for inference serving capabilities. + """ + + logger.info("Starting inference server in synchronous mode...") + + app = tornado.web.Application( + [ + (r"/invocations", InvocationsHandler, dict(handler=handler, environment=environment)), + (r"/ping", PingHandler), + ] + ) + app.listen(environment.port) + logger.debug(f"Synchronous inference server listening on port: `{environment.port}`") + await asyncio.Event().wait() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/__init__.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/__init__.py new file mode 100644 index 00000000..c3961685 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/__init__.py @@ -0,0 +1 @@ +from __future__ import absolute_import diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/environment.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/environment.py new file mode 100644 index 00000000..18870de2 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/environment.py @@ -0,0 +1,59 @@ +from __future__ import absolute_import + +import json +import os +from enum import Enum + + +class SageMakerInference(str, Enum): + """Simple enum to define the mapping between dictionary key and environement variable.""" + + BASE_DIRECTORY = "SAGEMAKER_INFERENCE_BASE_DIRECTORY" + REQUIREMENTS = "SAGEMAKER_INFERENCE_REQUIREMENTS" + CODE_DIRECTORY = "SAGEMAKER_INFERENCE_CODE_DIRECTORY" + CODE = "SAGEMAKER_INFERENCE_CODE" + LOG_LEVEL = "SAGEMAKER_INFERENCE_LOG_LEVEL" + PORT = "SAGEMAKER_INFERENCE_PORT" + + +class Environment: + """Retrieves and encapsulates SAGEMAKER_INFERENCE prefixed environment variables.""" + + def __init__(self): + """Initialize the environment variable mapping""" + + self._environment_variables = { + SageMakerInference.BASE_DIRECTORY: "/opt/ml/model", + SageMakerInference.REQUIREMENTS: "requirements.txt", + SageMakerInference.CODE_DIRECTORY: os.getenv(SageMakerInference.CODE_DIRECTORY, None), + SageMakerInference.CODE: os.getenv(SageMakerInference.CODE, "inference.handler"), + SageMakerInference.LOG_LEVEL: os.getenv(SageMakerInference.LOG_LEVEL, 10), + SageMakerInference.PORT: 8080, + } + + def __str__(self): + return json.dumps(self._environment_variables) + + @property + def base_directory(self): + return self._environment_variables.get(SageMakerInference.BASE_DIRECTORY) + + @property + def requirements(self): + return self._environment_variables.get(SageMakerInference.REQUIREMENTS) + + @property + def code_directory(self): + return self._environment_variables.get(SageMakerInference.CODE_DIRECTORY) + + @property + def code(self): + return self._environment_variables.get(SageMakerInference.CODE) + + @property + def logging_level(self): + return self._environment_variables.get(SageMakerInference.LOG_LEVEL) + + @property + def port(self): + return self._environment_variables.get(SageMakerInference.PORT) diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/exception.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/exception.py new file mode 100644 index 00000000..eb961889 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/exception.py @@ -0,0 +1,21 @@ +from __future__ import absolute_import + + +class RequirementsInstallException(Exception): + pass + + +class InferenceCodeLoadException(Exception): + pass + + +class ServerStartException(Exception): + pass + + +class SyncInvocationsException(Exception): + pass + + +class AsyncInvocationsException(Exception): + pass diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/logger.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/logger.py new file mode 100644 index 00000000..c8800868 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-inference-server/utils/logger.py @@ -0,0 +1,43 @@ +from __future__ import absolute_import + +import logging.config + +SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER = "sagemaker_distribution.inference_server" +LOGGING_CONFIG = { + "version": 1, + "disable_existing_loggers": True, + "formatters": { + "standard": {"format": "%(asctime)s [%(levelname)s] %(name)s: %(message)s"}, + }, + "handlers": { + "default": { + "level": "DEBUG", + "formatter": "standard", + "class": "logging.StreamHandler", + "stream": "ext://sys.stdout", + }, + }, + "loggers": { + SAGEMAKER_DISTRIBUTION_INFERENCE_LOGGER: { + "level": "DEBUG", + "handlers": ["default"], + "propagate": True, + }, + "tornado.application": { + "level": "DEBUG", + "handlers": ["default"], + "propagate": True, + }, + "tornado.general": { + "level": "DEBUG", + "handlers": ["default"], + "propagate": True, + }, + "tornado.access": { + "level": "DEBUG", + "handlers": ["default"], + "propagate": True, + }, + }, +} +logging.config.dictConfig(LOGGING_CONFIG) diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_clone.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_clone.sh new file mode 100755 index 00000000..714d687e --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_clone.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -eux + +sourceMetaData=/opt/ml/metadata/resource-metadata.json + +# Extract the required fields from meta data stored in opt/ml/metadata. +dataZoneDomainId=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $sourceMetaData) +dataZoneUserId=$(jq -r '.AdditionalMetadata.DataZoneUserId' < $sourceMetaData) +dataZoneEndPoint=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $sourceMetaData) +dataZoneProjectId=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $sourceMetaData) + +DEFAULT_DESTINATION_PATH=$HOME/src +DESTINATION_PATH=${1:-$DEFAULT_DESTINATION_PATH} + +echo "Cloning to ${DESTINATION_PATH}" + +# Function to clone the CodeCommit repository +clone_code_commit_repo() { + if [ -d "${DESTINATION_PATH}/.git" ]; then + echo "Repository already exists at ${DESTINATION_PATH}" + else + rm -rf "${DESTINATION_PATH}" + local repoName=$1 + git clone codecommit::$AWS_REGION://$repoName $DESTINATION_PATH + # if the above command exit with nonzero exit code ,delete the partially cloned Repo. + if [ $? -ne 0 ]; then + echo "Git clone of the Project repository has failed. Please refer to the documentation to understand how to fix this." + if [ -d $DESTINATION_PATH ]; then + rm -rf $DESTINATION_PATH + fi + fi + fi +} + +# Get the clone URL for the project +response=$(sagemaker-studio git get-clone-url --domain-id "$dataZoneDomainId" --project-id "$dataZoneProjectId" --profile DomainExecutionRoleCreds) +cloneUrl=$(echo "$response" | jq -r '.cloneUrl') +# Get the project default environment and extract the gitConnectionArn and gitBranchName +getProjectDefaultEnvResponse=$(sagemaker-studio project get-project-default-environment --domain-id "$dataZoneDomainId" --project-id "$dataZoneProjectId" --profile DomainExecutionRoleCreds) +gitConnectionArn=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="gitConnectionArn") | .value') +gitBranchName=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="gitBranchName") | .value') +dataZoneProjectRepositoryName=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="codeRepositoryName") | .value') + + # Check if the cloneUrl is available +if [[ -n "$cloneUrl" ]]; then + # Check if the cloneUrl contains "codeconnections" or "codestar-connections" (For customers created connection before Jun 7th) + if [[ "$cloneUrl" == *"codeconnections"* ]] || [[ "$cloneUrl" == *"codestar-connections"* ]]; then + # Check if the DomainExecutionRoleCreds profile exists in the AWS config file + if grep -q 'DomainExecutionRoleCreds' /home/sagemaker-user/.aws/config; then + /bin/bash /etc/sagemaker-ui/git_config.sh + # Clone the repository using the cloneUrl and gitBranchName + git clone "$cloneUrl" $DESTINATION_PATH -b "$gitBranchName" + fi + else + # Clone the codeCommit repository + clone_code_commit_repo "$dataZoneProjectRepositoryName" + fi +else + # If the cloneUrl is not available, check if the gitConnectionArn is available + # If not available, clone codeCommit repository. + [[ -z "$gitConnectionArn" ]] && clone_code_commit_repo "$dataZoneProjectRepositoryName" +fi diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_config.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_config.sh new file mode 100644 index 00000000..5f4d61e5 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/git_config.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eux + +sourceMetaData=/opt/ml/metadata/resource-metadata.json +dataZoneDomainRegion=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $sourceMetaData) + +# Configure Git to use the AWS CodeCommit credential helper with profile DomainExecutionRoleCreds +git config --global credential.helper "!aws --profile DomainExecutionRoleCreds --region $dataZoneDomainRegion codecommit credential-helper --ignore-host-check $@" +git config --global credential.UseHttpPath true diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json new file mode 100644 index 00000000..4c84693d --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json @@ -0,0 +1,5 @@ +{ + "@jupyterlab/apputils-extension:themes": { + "theme": "Amazon SageMaker Unified Studio Dark" + } +} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json new file mode 100644 index 00000000..fe64b8de --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json @@ -0,0 +1,14 @@ +{ + "disabledExtensions": { + "@jupyterlab/apputils-extension:announcements": true, + "@amzn/sagemaker-jupyterlab-emr-extension": true, + "@amzn/sagemaker-jupyter-scheduler": true, + "@amzn/sagemaker-jupyterlab-extension-common:panorama": true, + "@amzn/sagemaker-jupyterlab-extensions:sessionmanagement": true, + "@amzn/sagemaker-jupyterlab-extensions:spacemenu": true, + "@amzn/amazon_sagemaker_sql_editor": true, + "@sagemaker-studio:EmrCluster": true, + "@jupyterlab/scheduler": true, + "@jupyter/collaboration-extension": true + } +} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py new file mode 100644 index 00000000..7ce6e079 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py @@ -0,0 +1,30 @@ +import os + +c.ServerApp.terminado_settings = {"shell_command": ["/bin/bash"]} +region = os.environ.get("AWS_REGION") +csp_rule = os.environ.get("JUPYTERSERVER_CSP_RULE") + +c.ServerApp.tornado_settings = {"compress_response": True, "headers": {"Content-Security-Policy": csp_rule}} + +# Do not delete files to trash. Instead, permanently delete files. +c.FileContentsManager.delete_to_trash = False + +# Allow deleting non-empty directory via file browser. Related documentation: +# https://github.com/jupyter-server/jupyter_server/blob/main/jupyter_server/services/contents/filemanager.py#L125-L129 +c.FileContentsManager.always_delete_dir = True + +# Enable `allow_hidden` by default, so hidden files are accessible via Jupyter server +# Related documentation: https://jupyterlab.readthedocs.io/en/stable/user/files.html#displaying-hidden-files +c.ContentsManager.allow_hidden = True + +# This will set the LanguageServerManager.extra_node_roots setting if amazon_sagemaker_sql_editor exists in the +# environment. Ignore otherwise, don't fail the JL server start +# Related documentation: https://jupyterlab-lsp.readthedocs.io/en/v3.4.0/Configuring.html +try: + import os + + module = __import__("amazon_sagemaker_sql_editor") + module_location = os.path.dirname(module.__file__) + c.LanguageServerManager.extra_node_roots = [f"{module_location}/sql-language-server"] +except: + pass diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh new file mode 100755 index 00000000..ca1a8fb7 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +kernel_type=$2 +connection_file=$4 + +if [ ! -e "/opt/ml/metadata/resource-metadata.json" ] && [ -z "$SPARKMAGIC_CONF_DIR" ]; then + export SPARKMAGIC_CONF_DIR="$SM_EXECUTION_INPUT_PATH" +fi + +if [ -n "$SPARKMAGIC_CONF_DIR" ]; then + mkdir -p $SPARKMAGIC_CONF_DIR + config_file_path=${SPARKMAGIC_CONF_DIR}/config.json +else + sparkmagicHomeDir=${HOME}/.sparkmagic + mkdir -p $sparkmagicHomeDir + config_file_path=${sparkmagicHomeDir}/config.json +fi + +if [ ! -f "$config_file_path" ]; then + cat << EOT > "$config_file_path" +{ + "livy_session_startup_timeout_seconds": 180, + "logging_config": { + "version": 1, + "formatters": { + "magicsFormatter": { + "format": "%(asctime)s\t%(levelname)s\t%(message)s", + "datefmt": "" + } + }, + "handlers": { + "magicsHandler": { + "class": "sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.logger_utils.SessionManagerFileHandler", + "formatter": "magicsFormatter", + "file_name": "spark_magic" + } + }, + "loggers": { + "magicsLogger": { + "handlers": ["magicsHandler"], + "level": "INFO", + "propagate": 0 + } + } + } +} +EOT +else + sed -i 's/\"sagemaker_base_session_manager/\"sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager/g' $config_file_path +fi +exec /opt/conda/bin/python -m ${kernel_type} -f ${connection_file} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/python3/kernel.json b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/python3/kernel.json new file mode 100644 index 00000000..7db91492 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/kernels/python3/kernel.json @@ -0,0 +1,14 @@ +{ + "argv": [ + "/opt/conda/share/jupyter/kernels/kernel_launchers/python3_kernel_launcher.sh", + "-m", + "ipykernel_launcher", + "-f", + "{connection_file}" + ], + "display_name": "Python 3 (ipykernel)", + "language": "python", + "metadata": { + "debugger": true + } +} diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh new file mode 100755 index 00000000..06f37ea0 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -eux + +# Check if the .libs.json file exists +if [ -e $1/.libs.json ]; then + lib_config_json=`cat $1/.libs.json` + + apply_change_to_space=`echo $lib_config_json | jq -r '.ApplyChangeToSpace'` + # Extract conda channels from the config, add `-c ` before each channel and join the strings + conda_channels=`echo $lib_config_json | jq -r '.Python.CondaPackages.Channels | .[]' | sed 's/^/-c /g'` + # Extract conda package spec from the config and join the strings + conda_package=`echo $lib_config_json | jq -r '.Python.CondaPackages.PackageSpecs | .[]'` + + if [ ${apply_change_to_space} == "true" -a -n "$conda_package" ]; then + # if conda package spec exists, install the packages + micromamba install --freeze-installed -y $conda_channels $conda_package + fi +fi \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh new file mode 100755 index 00000000..29246780 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh @@ -0,0 +1,180 @@ +#!/bin/bash +set -eux + +# Writes script status to file. This file is read by an IDE extension responsible for dispatching UI post-startup-status to the user. +write_status_to_file() { + local status="$1" + local message="$2" + local file="/tmp/.post-startup-status.json" + + # Check if the file exists, if not, create it + if [ ! -f "$file" ]; then + touch "$file" || { + echo "Failed to create $file" >&2 + return 0 + } + fi + + # Ensure the file is writable + if [ ! -w "$file" ]; then + echo "Error: $file is not writable" >&2 + return 0 + fi + + # Create the JSON object and write to file + jq -n --arg status "$status" --arg message "$message" '{"status":$status,"message":$message}' > "$file" + +} + +# checks if the script status is "in-progress". If so, no errors were detected and it can be marked successful. +write_status_to_file_on_script_complete() { + local file="/tmp/.post-startup-status.json" + local check_key="status" + local check_value="in-progress" + + + if jq -e --arg key "$check_key" --arg value "$check_value" '.[$key] == $value' "$file" > /dev/null; then + write_status_to_file "success" "IDE configured successfully." + echo "Post-startup script completed successfully. Success status written to $file" + else + echo "Skipping writing post-startup script "success" status. An error was detected during execution and written to $file". + fi +} + +write_status_to_file "in-progress" "IDE configuration in progress." + +sourceMetaData=/opt/ml/metadata/resource-metadata.json + +# Extract the required fields from meta data stored in opt/ml/metadata. +dataZoneDomainId=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $sourceMetaData) +dataZoneUserId=$(jq -r '.AdditionalMetadata.DataZoneUserId' < $sourceMetaData) +dataZoneProjectRepositoryName=$(jq -r '.AdditionalMetadata.DataZoneProjectRepositoryName' < $sourceMetaData) +dataZoneEndPoint=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $sourceMetaData) +dataZoneProjectId=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $sourceMetaData) +dataZoneDomainRegion=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $sourceMetaData) + +set +e + +# Creating a directory where the repository will be cloned +mkdir -p $HOME/src + +# Remove the ~/.aws/config file to start clean when space restart +rm -f /home/sagemaker-user/.aws/config +echo "Successfully removed the ~/.aws/config file" + +aws configure set credential_source EcsContainer +echo "Successfully configured default profile" + +# add SparkMonitor and Connection Magic entrypoint +NB_USER=sagemaker-user + +config_path=/home/${NB_USER}/.ipython/profile_default/ipython_config.py + +if [ ! -f "$config_path" ] || ! grep -q "sagemaker_studio_dataengineering_sessions" "$config_path"; then + ipython profile create && echo "c.InteractiveShellApp.extensions.extend(['sagemaker_sparkmonitor.kernelextension','sagemaker_studio_dataengineering_sessions.sagemaker_connection_magic'])" >> $config_path + cat << EOT >> "$config_path" +c.Application.logging_config = { + "loggers": { + "": { + "level": "INFO", + # console handler is required to keep the default behavior of jupyter logging. + # https://jupyter-server.readthedocs.io/en/latest/operators/configuring-logging.html + "handlers": ["console"], + }, + }, +} +EOT +fi + +# Setting this to +x to not log credentials from the response of fetching credentials. +set +x + +# Note: The $? check immediately follows the sagemaker-studio command to ensure we're checking its exit status. +# Adding commands between these lines could lead to incorrect error handling. +response=$(timeout 30 sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id "$dataZoneDomainId" --profile default) +responseStatus=$? + +set -x + +if [ $responseStatus -ne 0 ]; then + echo "Failed to fetch domain execution role credentials. Will skip adding new credentials profile: DomainExecutionRoleCreds." + write_status_to_file "error" "Network issue detected. Your domain may be using a public subnet, which affects IDE functionality. Please contact your admin." +else + aws configure set credential_process "sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id $dataZoneDomainId --profile default" --profile DomainExecutionRoleCreds + echo "Successfully configured DomainExecutionRoleCreds profile" +fi + +echo "Starting execution of Git Cloning script" +bash /etc/sagemaker-ui/git_clone.sh + +# Run AWS CLI command to get the username from DataZone User Profile. +if [ ! -z "$dataZoneEndPoint" ]; then + response=$( aws datazone get-user-profile --endpoint-url "$dataZoneEndPoint" --domain-identifier "$dataZoneDomainId" --user-identifier "$dataZoneUserId" --region "$dataZoneDomainRegion" ) +else + response=$( aws datazone get-user-profile --domain-identifier "$dataZoneDomainId" --user-identifier "$dataZoneUserId" --region "$dataZoneDomainRegion" ) +fi + +# Extract the Auth Mode from the response. Unified Studio currently supports IAM, SSO and SAML. +auth_mode=$(echo "$response" | jq -r '.type') + +case "$auth_mode" in + "IAM") + # For IAM users - extract IAM ARN from response. Response does not contain username or email. + arn=$(echo "$response" | jq -r '.details.iam.arn') + # Split ARN by / and return the last field + username=$(echo "$arn" | awk -F'/' '{print $NF}') + email="$arn" + ;; + "SSO"|"SAML") + # For SSO and SAML user, extract username and email if present in response. + username=$(echo "$response" | jq -r '.details.sso.username') + email=$(echo "$response" | jq -r '.details.sso.email') + # Setting up the email as username if email is not present + if [ -z "$email" ] || [ "$email" = "null" ]; then + email="$username" + fi + ;; + *) + echo "Unknown authentication mode: $auth_mode" + exit 1 + ;; +esac + +# Setting up the Git identity for the user . +git config --global user.email "$email" +git config --global user.name "$username" + +# MLFlow tracking server uses the LOGNAME environment variable to track identity. Set the LOGNAME to the username of the user associated with the space +export LOGNAME=$username +if grep -q "^LOGNAME=" ~/.bashrc; then + echo "LOGNAME is defined in the env" +else + echo LOGNAME=$username >> ~/.bashrc + echo readonly LOGNAME >> ~/.bashrc +fi + +# Generate sagemaker pysdk intelligent default config +nohup python /etc/sagemaker/sm_pysdk_default_config.py & +# Only run the following commands if SAGEMAKER_APP_TYPE_LOWERCASE is jupyterlab +if [ "${SAGEMAKER_APP_TYPE_LOWERCASE}" = "jupyterlab" ]; then + # do not fail immediately for non-zero exit code returned + # by start-workflows-container. An expected non-zero exit + # code will be returned if there is not a minimum of 2 + # CPU cores available. + # Start workflows local runner + bash /etc/sagemaker-ui/workflows/start-workflows-container.sh + + # ensure functions inherit traps and fail immediately + set -eE + + # write unexpected error to file if any of the remaining scripts fail. + trap 'write_status_to_file "error" "An unexpected error occurred. Please stop and restart your space to retry."' ERR + + # Install conda and pip dependencies if lib mgmt config existing + bash /etc/sagemaker-ui/libmgmt/install-lib.sh $HOME/src + + # Install sm-spark-cli + bash /etc/sagemaker-ui/workflows/sm-spark-cli-install.sh +fi + +write_status_to_file_on_script_complete diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/set_code_editor_theme.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/set_code_editor_theme.sh new file mode 100755 index 00000000..f295052c --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/set_code_editor_theme.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +USER_SETTINGS_FILE="/home/sagemaker-user/sagemaker-code-editor-server-data/data/User/settings.json" +COLOR_THEME_KEY="workbench.colorTheme" +COLOR_THEME_VALUE="Default Dark Modern" + +# Check if the settings file exists +if [ ! -f "$USER_SETTINGS_FILE" ]; then + echo "Code Editor user settings file not found. Creating..." + mkdir -p "$(dirname "$USER_SETTINGS_FILE")" + echo "{}" > "$USER_SETTINGS_FILE" +fi + +EXISTING_COLOR_THEME_VALUE=$(jq -r --arg key "$COLOR_THEME_KEY" '.[$key] // empty' "$USER_SETTINGS_FILE") + +if [[ -n "$EXISTING_COLOR_THEME_VALUE" ]]; then + echo "Theme is already set in user settings as '$EXISTING_COLOR_THEME_VALUE'. No changes made." +else + # Set theme + jq --arg key "$COLOR_THEME_KEY" --arg value "$COLOR_THEME_VALUE" '.[$key] = $value' "$USER_SETTINGS_FILE" > "${USER_SETTINGS_FILE}.tmp" && mv "${USER_SETTINGS_FILE}.tmp" "$USER_SETTINGS_FILE" + echo "Successfully set Code Editor theme to '$COLOR_THEME_VALUE'." +fi diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml new file mode 100644 index 00000000..16ccfe64 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml @@ -0,0 +1,77 @@ +x-airflow-common: &airflow-common + image: 058264401727.dkr.ecr.${AWS_REGION}.amazonaws.com/mwaa_image:latest + network_mode: sagemaker + environment: + # AWS credentials + AWS_REGION: ${AWS_REGION} + AWS_DEFAULT_REGION: ${AWS_REGION} + AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: ${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI} + + # Logging configuration. + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_WORKER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_WORKER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_TASK_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_TASK_LOG_LEVEL: "INFO" + + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_WORKER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_TASK_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + + # Airflow URL configuration + AIRFLOW__CLI__ENDPOINT_URL: "/jupyterlab/default/proxy/absolute/8080" + AIRFLOW__WEBSERVER__BASE_URL: "/jupyterlab/default/proxy/absolute/8080" + MWAA__CORE__REQUIREMENTS_PATH: "/usr/local/airflow/requirements/requirements.txt" + #Project configuration + DataZoneDomainId: ${DZ_DOMAIN_ID} + DataZoneProjectId: ${DZ_PROJECT_ID} + DataZoneEnvironmentId: ${DZ_ENV_ID} + DataZoneDomainRegion: ${DZ_DOMAIN_REGION} + ProjectS3Path: ${DZ_PROJECT_S3PATH} + volumes: + - /home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/dags:/usr/local/airflow/dags + - /home/sagemaker-user/.workflows_setup/plugins:/usr/local/airflow/plugins + - /home/sagemaker-user/.workflows_setup/requirements:/usr/local/airflow/requirements + - /home/sagemaker-user/.workflows_setup/startup:/usr/local/airflow/startup + - /home/sagemaker-user/src:/home/sagemaker-user/src:rw + - /home/sagemaker-user/jobs:/home/sagemaker-user/jobs:rw + depends_on: &airflow-common-depends-on + postgres: + condition: service_healthy + +services: + postgres: + image: 058264401727.dkr.ecr.${AWS_REGION}.amazonaws.com/postgres:13 + network_mode: sagemaker + container_name: mwaa-292-db + environment: + POSTGRES_USER: airflow + POSTGRES_PASSWORD: airflow + POSTGRES_DB: airflow + volumes: + - /home/sagemaker-user/.workflows_setup/db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "airflow"] + interval: 10s + retries: 5 + start_period: 5s + + webserver: + <<: *airflow-common + command: webserver + container_name: mwaa-292-webserver + + scheduler: + <<: *airflow-common + command: scheduler + container_name: mwaa-292-scheduler diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/healthcheck.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/healthcheck.sh new file mode 100755 index 00000000..a9581b54 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/healthcheck.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +POLLING_INTERVAL=1 # seconds +LOCAL_RUNNER_HEALTH_ENDPOINT="http://default:8888/jupyterlab/default/proxy/absolute/8080/api/v1/health" + +while true; do + response=$(curl -s -w "%{http_code}" $LOCAL_RUNNER_HEALTH_ENDPOINT) + curl_exit_code=$? + + if [[ $curl_exit_code -ne 0 ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint is unreachable' + else + + http_code=${response: -3} + body=${response:0:${#response}-3} + + if [[ $http_code -ne 200 ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint is unreachable' + elif [[ -z "$body" ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint did not return a response' + else + status=$(echo $body | jq -r '.metadatabase.status, .scheduler.status, .triggerer.status, .dag_processor.status') + if [[ "$status" == *"unhealthy"* ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner is unhealthy' + else + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'healthy' --detailed-status 'Local runner is healthy' + POLLING_INTERVAL=10 # raise to 10 seconds after startup + fi + fi + fi + + sleep $POLLING_INTERVAL +done diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..3f14c1ec58eca6c157f982638c536126aac1d168 GIT binary patch literal 23090 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%0Au>iO68L7QgKzuZ&7Kn#Wi%#hDX)q}Tx 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ೊ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 W~WW(1|XS$>!8tTh53whb~Edk_E<)5rDh9c7H3 zyR)6Q*~4c3?(LSMzSeY)4b7n-4{_UW3JC%e13bVm#3~3+t}=@7tIw#2tdR-5N&G>F ziMrZbU~yehH@b7q_eba!IzmbLdpGkXQ=f!Ltse=A9WEl7&G&14uu5;8hc0{SMt;Kq z_gYY=`+G8^*%ov%M+=xuSZikPkwo7XoB5tSxn{VdKRx{0^qXgtocY;q^NiT!*;aS? zEGHhxch5Grs??14+duv8;ooe$9=&zzyFQ|1#2ZR}y4})aoE4-poh^Fw0?{qGfEiaQ z_>F`@JwIOIROo@~cUzu}9p%|p1yFCF&DM)&vjus+=xk)RdUm^{^d{ki3>aE(nCWrC zcp_^fZJ0XDKHPF-SD@16=O9LI$i@)|*Pc`nX6X@mO1@9b-r1B>PRd(4{gSJV>7EJ= z2-lX2lG{e?1vEo}1HgA)P`Adk8>~AiwmLAt7C9tfM$y5{O44nNHg_-c&Hh2HyU-+v zLx%2scoFIggHia1TIN@u)T5GL8mS?$Q;v{N4k-dj4L};I^%YKFk=W;G*h7El+sy9B zB2!wn5)8$~zJ47vca=-6)`SK%(AU$V5e`d$<}*`PeJz#fVVR>AoL#YNXH0q>v`vAU z4wX{Dh7s=2W2aD@FeVdP(!!=cMVX17@M`>UO%Fln*!0+~%Q0=H6a|JtQYgZN&H*H= z+DX7?Y~|CPm;~*JvG^l49nEesdX|s^`>+j^V&!QR|KJpv`GmDOEfscJkfw?;kud+E zI6-J~RrY5OvpHq<#v$wr9VeUp4GoUa=qy;_HBczU%1@g*OZizT_*I5yS=fySRRHhM z>=Q2Iv{Ro8x7%doS$1l)ex>Z4&%EAPxSOmvwoUCd$2MqYvnN;gs-{)vwXR!Fa$+a zU=mS|oHClN@AknFjVmiw9AZ{o7s6U;ZGaBb`D``o2N}bBVJXy2*0~hVR9V^xriwvE z)-o$tVjrTay4?g2&Xpn24!3Oqa2?fgbjuw$y3bq6TxGIR5MFSmg>@>3^GjhRea$L= zRQ|Qb0_|E?y|)Y%fhtg1h)!Flvu$BJQkFgdp`C5`HL=gLpMyaB=rS#^p*4hq3u{oE z7$^3*+L6r{=&Fax)*`@W zl_5|c+>Vk-XXY^qbf4jdr>ZK_vJ4GP=Vsst*5(ymr*y$eW@n33@23Prq{ z01X&5Nr6|p-Gd6+v*;x!kVV7v8`^nh^*xEMFF@&4zD!^zF#@zHjzlphT-ibqgdLIJ zXX1?S`}-~3n#%2$V#KP$%HzkA>~^_Ufo81?M#GyNf}=W=Y^=-t5cT4kTu*=zSB6X( zbsshGLt7dcfFu2_`$Bwl)`7Z9BQ$b>3qD!kfCY7pU?DBFPWcL%N~nM~0P}$<6_|@d zMHTrBuw6{kas;NDZ)G|%wb9N8SP$e9 zN|7P?*(o~1yjiY-V>S5!o9J2e-(~anDjP4defUjBEC|bU#19wjbj8HNW{O6e^Sjj505PH*=Lx$%oFWuI!KP45uD;NwHU+w?BB_j2UMGEN8XJm5*p;6vG=izz zSusddiWsoqQ{gh;moel3-P(UkGzVz|WI!o0n(nW`k|WUx1DFp5!c)Zirq$CeK4yUJ z$@2ELK2ImDMvW_CYT)0~WgaLL!-r6Z-gBXgEQ0QdN@^`;DC^t*4j>?dD?=(5LK!ub zqRo}W;nCP5p$$4M1+==7S&E}JQi}&b$MkRC;(n{me{gSSXey!|P!`$o{ zOU|UTQ#9@EEF8{F6s0cdQ4F?F{gM650KY zjxIKcq>Zh#T-e}FEVO3yalWM61jzT|S}Qg#rj(gZ1II?v?BWEzG9%~I6cy_)+7@Pf z=dL9(J<`lja)G2@rbao&ePdV@5OeqrlJ zk)T93K2jRRd%DHMd7bnv&d&6rZq!y1Fsm+y)+3m0T}>|CDb(}H1quZsHQlbLcYR*v zD?~s4EEW&fiV$y@v?bAIr$nocH7?=?S-0~_?=XPy zxWdnjmKj}NaomLf$w?PWvZ~jaEd}L)*%U__x|9pKLm*DV6?Vs}f}{qY@vV-h3YP=K zw0=0wG}NwvlWaFzu7s6ovdtu80sV`M(W8ut4gB}WEOnG1ljzry-LO<&bXF4zqsYv< z;J<+h3X=LcZBIs>O$!l{)%QY`c+1DJi<|X|PQZ5gK670ZuHXt9H|rOQf--(#1e>%gSf9a>z%% zqf^u%I@>JD@UdK@LyJm8R-%6TngfTkPO0R;B>~IvODX znh}S=rxFU#1n?F#P|+b#)X-Oa%l5N(jaUmTjw3rFAN-at7g!TOj-rxENO1^xy%Su= zyueDNL{F%sT{hybv)PZ4mZ0@b!W=U2q0kOm-~EKW1C9&gIQ^j2bpTd`mUSZk!gQef$&<@nJ=kN^jSK&ev}v9=}cba8lBcca29>y+Hy zB^oK7_<;!`HDowkyNMTSbvpB;Gq*2|=PguSF{}F#9Bzt=8CzHA%+GCj@+5o6D80s- z^MKa${-*cag7+;?mnM?FbkjZz&LtD;&La!4Hjawe*S{d)E?rZau-SrEgO)69Mj{ub z+gYJaQ0>?O1H!>%(ow*t!nbM6_~q*)hbznI0LTs@6oj7yC{$ONFmlBNp-q8TsEG$D zLz1@Y?&f1Tpf{k78s$2ZzJq|8G{KBR;%{Ng!% z`vt8_g$lBkO#CtzpR_l->}fHvzQEEU%8~C1(F%<#)}5q56z^SZZXW2^79l`s+t8YW z!cIu7XwZA=bCU%RxWD6ym(VT3)J%MjR`)V2H(0zHZ4vU+F`-*Ynwglj#MJi|LC`Wcbz{&-OelVi3@8Kg3OXiyjSJ#O^g1c+Tj?1U&4NYiWfK>T>8%2=NezsaA4i~FlVpTY`0IM|0GV;3M zWs=K5KM`VvY36-sV$6GlPx?rI%O$ zYP06AN!1ljn%^;_M~H4IRZUA_e5!-TD*;+ZV$>8wNXLhZ6cnd9?{;~Yc-qe3l{gc= z<5FkRFpR~eKlgm0aukYP@@Tf*QSKg&CSQ~{DyBE3_u;HP^eFm%J?A&#T9Vz2KnE4V zWe;nr9pKAR#{weI5)7dwY$MEd(CV&lY3vahxd0?K2~ak5nrJ#KM8 zm|da8CoqIylmhfabqhsx&6=CObZ6frfw(Q~`n zd~B%$x~hI4wuwP~na>`?6R7r9j=9ZI92eoI(oraFM~Ht{Rw#b92HjEhZ~C=Ft5>Z` zbpnQsw8+ zH9&%-b`@bR@i9qyz47NCm0DS0tGiqY2NFoHdo)-Gx45Z6858<0$>hmTJ#;`#f`}Aju@D&C}}sD)QJ8 zU1jKYOizAW!%^X$Gv$2!{KdCnt{hi`a`h?e@{dQeeErAS$L(*v`pta(U;FJ>cbos8 zy?0-3>qznjCt~-n@1Kp>*azTpdN+KNL`inHTiY}KKmwG}CJ8n`+U+)J1_&HdXn_Fc z0FX?#dt)DAA8j9Le_7YesyY`OP-?lq?wB!!I(5m)TV-WsWxe@jvYdbP=!fg<=JMmO zKK}Tt7qlNBtiT5$;Z%^uwF;K`;sz0c?hxK@A>Vy1^WCOqxBF&@-Z^+ByMLV*>S@U8Y33m{ z90<>}MizF>c+PE*9&#@lQr@wRMuyT8@}b1`*%x0pROtj)?xz>pA3wUdc>C$a#p93h zpSPd>CXmd0{`z1#MEW2&De`#631yp<7sXe0bjXSAbEF?DWMA+c_iMXVH0ZswpOcEb zCd&pRG64#{IMNW9d8PmiUsP~ToyebK-df-cm#%CG$}5^8oH=k9I6@fIyqH%%ST9%e zJA*-CDg<8&WRao2CYSAf{-r07%A@9fdN%vv;$pqG_iXPG{5w@bIur zrC;vt(Vqid+TK@{+W2~LkzZV_E`vpb9mdoIw2nAz2WJfAdOSHB=C@hB_monm6G-_= z(2)uvcR{fV5590-fn7IUQ)aO0{$c!1?$&oWsd$5=Xu~OD%U8*refcH4uN^+r3?jl+ zX;9zZ>`u&dcDs020hsx1&<&SktmdWt$#fu;I9{v9EZ%?27{Y8#po;?0k z>dEdXL$bJAm7!QIr2cv77?{w)NKsv90`1-G-y=1#={6GyWA8HP{E>Q)IU zg9Ff}P1}pLV2SZ!ofrt$3fjg`-kp7ohhw-hLzCcRTHzSXHOj%dYvVzBi!9eG$)(dh zDXhlznMRF2a#<h78{695jj=SWT*gi4sl)75oJ zi!-cveLSg-1UK?JKyme6zIZj95vR4YX;#tBNPsAIf!D-^T>H^1r znq|l}4hqYD5MpRW8h<;z>lu5gy53OtzJCSk$nY@qUCxG!<*PZee;R$zgu2+ItCeVA zI$NI2(ce&JMJ;2G(KH**5E41ballE-8J7Utu>35+tS@dJ55*v~bypxYVUOeCY;uDf zq+54DR@ASALH}h2xZ-^!B*DL(b|TRZW)X z^V}XTI1Ahw7^P1W86G7=7YQ&eHr&93L`8Fm{;@@}^NsTC)5wIrR>1NG)DxsI$9s*@b@+69Gd zxZn%1HhdrWz_)U%KBy=tRCyZ zd^C%M0)@>o-G=Q`?esB&4(V-S&9h3Ki1rP0cy^BC1h>gz}Hh5pe4g^kRkkzVh zVP=)Z`cL1>b-qd*6%gS8b^dI*zPXuc@WM5v$TZ_OXzPVgDh^O(;f8UH(c|B6jZ1%>p(N zUW2bOtV$^4>GhE{AmlJnOxMRlxybe=?|SK)&v3YDnNF>DKBmEkN5SJp=}Y-I9D?y! zy{S8#MlC|;JLNAd=!HJ%CDF1mbkhg6STo3scMO3+d_EkfMyCe`DM_xDuM$KP+M>m< zEHH#oLxbQ+8pnquDhG?CgHgL$V_25;LePkBCbRW?y&T-nMjTPWmm)Jr05YA7R_+|^ zaJZf}KQ~G2VHsAGd1k9P&@A!G_uQVoT-YOG0)fJ^(Fz>#0&W!VzJhmXaB;B=!vjKq z8&gS5_h3F2dlbz^pTr@x$Mx9CUK1NEGNEKc^us-0Lh^|3Wqx!#Hy z>rZQJH_0x~#yI)<;FY;EL}FqJJs#~)5Bi&L!;F?~w6YFO0hk?8ZJ3r`;0lNssIdvK%pB?_|@+z!yuD)Aw%u&q{6wP%jqH z$tZg#kZ!oWb#UKkS&nWrbY}=up1_}pc$fD9umuRah{Jq-cL+VB7ZL4->IlJwn z!sIg(b8JP*BKu%hUtEAk zqiz{1fbCPkeTLwR!@F|y$@2TSj#Lmf&7_@Ape*Clkf`^tiHb@O4IC?q zW=Rsz&FCdWziYOH})VCvm)CXfwc*iv2-X%J}9 zv~dK&LuUN;p(E{NKI=j3^2t~Ug^56@)6y#lQJWPjS>W&;4}U^*Sw4}`X{?l2ZcSCl zV>Uh*E`}pSVt7GN{zd!Tp|XUmL)v2;oIOUkLWX-Y6p=_~M8QYvpn0)-_G+@+S>$uX zNU!d9@NeJ4XFKaWVK4io3W2>88%#wnRj8GjC;;3wk_#|0}oFS|*wdZT7 zDr>WQGyiW7Q;9Ima=2oW;Mjcx1-!BXl*vuP@rW@7B+)a#kPBAtZk zP5V0=!D$S&`0>dHUpRJ;C$qz8_S1&UKn^`956HDo=5vBF!A-@LH~`vWMo+7Jj(aiD zgS5%-yaOoD8w9u3T-lBhKa1csdRykZ$!t7-%kdO{ELhs-*I>QZcfc6FegS$`X;(dm{vu#IBNAdTW}=j3oEh4 zCS)LpCspomYIg^%{lIN>Fz7t`=D27#;%$~lkLYEIl`DC$jVG?ZFkY5r_ zPw!W+z=XJ>r=6>AnHC=s4Z-!~P2%iqia3x4-4Vyd^GP8~kmimO3w(|vojrLHuZ+NX zKBlJ)l{St^T$67@yz_~$WlaqTjVcdtgMg5ti8mJEz_$h<8glgDpx-?`F~hcd4dhB$KvE7FB5nr>W3vt{m&puvl>Yg4vkRU{tYe16~wqJH3c- zsL)s^$`zz*Bi^~DORP<%NZq3pc4^_-lX7>vm&62t6*Gy=2Rm3NzaocRe z46hnx%`Q)M$bfIOC50+l;3nb*!{{j~mmgPuyqIHPlYOXgVlzF?d<3dWLLt*z5*gX^ z^E~8l_DM52!`ZKUf9cG8+EsF5$Pb(xcK^w+Ym0cbf37VlyhzCZuwI0+ZOaqncw*}A zn>X6tDLteYMUH0SB@7OqJW#vw{*RG3{>bTjzCh&FIBVgA?|wOPPpkll6i$k2dsr$E zRI)I4$IVQQkpFaUoiBXQkV=9RnVZ&Da1*s#q-jOGjb0&QOAZ~{)x^xw_P7k;@^fXl_55x!O2M0LpmWA=T`C0e4(>oV7WT)Tn^|=Z8U8@_y z)%o*jw~xNf93!JrUtIV6!;nzZf`8Wr30sD_tg+&drNGqh&4cgs)4!bS|8lN79Sjxk zy!D)EOBOojMrW%5E9J|;ug$s6><^9(R-BOGe|gK*c}vn#GX7SvMJ;xOGlnXz#Q7`f z4QIV1zw-{Hx7^7EG;?AvT-zM+6*sn_3GC6S2DzWDULn=c zh_-p??QU_EE#{+FS4(64b7n#6!h$Cj5OQC?8#_A&hT3}Zq1bd;HB6pYGP7qD$Wp|` zQBAxs1eHz{Y9&^AQ@ ze%-_vhFw`PjukG@q`?2_&UK2byj|&p(J85l{oY7*=yxRxmq7Q&kA4_F`nmP!FG$C6 z^&gj?evGu76-5^p$f$_SolpMb@{^C9ob4{N*%Er@4V)-Zs3FceaN7y{eSKa$!CCwV z8jS}qo9zTs9ICJVJyjfUL~<7c3`VcAyJ2UVQH~05qLB#33bmA?k`b%SuokIMhKH1{ zFg8NJWk#h|6wPRI83hWLj|Bp=O zar!6nkkcO|A-8`YU4Q)I_1!W`K@QrfS6L8717?r)!1WX{i&nl9ofWxfJ6_R2Fh*P%gPbrw2Kl=g5#0;{`^e zAWOs&2ZL`N-oOTfQ{4Dy55Den&eD#fqv7jJ4+c|0gy$p&50!IDR6$tTD;=#+nuBR_ z1B6Hh6-Ld)7fU5>R;^%dFvG$ZrY#FGDDvmsO^`=>KI_bG=J_ZacaR=0Ij3@j;)I7d zRU}Fn%f zhmOoI$H`#a^N_iNSHs+@O$J}1b3{bD!OX=)lJMG?OBf|=Bt*c~OYw*^uPXxey}3XRtRDM6mek@&j*z`Q)pT zT~Rrf9ilcB)TH;Y7}UE zoESMN-sowh)Vfvs2_GgX@DAf86@<%+rA?e3+82wSeIaBZOg`amB(mO*4&Cg$;0rxt z-O!dteB(x{Ccx)5X>c&U170AZL|lOlqv9{_wC^dI+kCaC1f|0lRF&n-BWvOiGFZp%;dIwnSgizUnT3r=BsufedzunNUq=%230)HJEXMpoB3?% zTT|WjDG&45bD~^fn`pyYbzSUIO#JW@AEIiBXIxc}W9zJu4hsUaTdoMKFK*%a;`hNS z|6-6Z)TEIS(zaGPjsXi&y%l&q+`~JZ7hPfE5Si!Pqds{% z?E_Gym7ME&h*zcMbbv<~veshaPw<@&la&@b_&hGR^`+|CXbl7cE%Ai#E&fYaIO{+1p7J-P zttwxtZ!T7cKIm8`1J%7czY(y9mvH19ws)I3ba3ohaA>ds?VHqr%_g%{FWxN&>jk}b zcsj@1A@Gm?*BX&t0Ln0j4ekQ%>IC#9!TW#?c|o}3tQ(54>#jnEeLW_?>}Z+@Ud^)- zkA>1J!t^!}H*R3)KH%^u*G;Y(o0co%MuQhn&hNhTU5c&5$JU~&yA#W`7@;05brUP_ z_4JP!c{>Gahm_7NR{CL)ZF~EwkY4XY%bHhu-;Jr2GW?in zK~=Y4H&R)A-cBwmrt9mmSr(`d!_>`m591UzQc@2l&DYJOk>PIx#!2ZL(wUkRoRM8= zJ+f~E{23+6?=4oixbbtQG7cKV1AyxN0Am7E8U7dNRCT*X6q3L5dbrfdu9>i_@s(qa z7m_5K4liwa(#z+^Vsv(eiB(C!!P*pXp$D%<-9Z0H)M^!ECsXLA0_PHyWm}54P-_BI zox0+|)nAfMdZU@?wW$Itfm>`c{_ zqC(5G(BAX7*;4ckH`Dps51t@3Z}Sz>j7@Y)dbyrB!EB+Hsmg^*Xo%8%(0rsK{xFuA8dIKi{Fd}e z6$jL$F{8&okQi3p2OK=FTeE#X8{W;^`*rId<0X!4wU`b^V((H0%z+A=E*&6EY=g0l zpV8L0^3)3#%W%bx-_cIhR`9sh%)nu~O3_bbLb#(B1D@@D@msqh?fM)b+hvEzFD_;m z7pw3IX?y=(1E_RM1mu+5w+h?Zn5XWiz{F!D zg}Qq3@5m#CY*I)ib@{0_qQhY~LVV(>27f{RA>se=#V0W#Zt?!ov>HuOvWnJ;cpCyTMf|!wZJAcAk3xnOupf~;6ldEAw&I@ z+-KR0opkkDWCgJw+ThX2Y_!sn>k#0WCuJVuRi(+@`c6M*!}dH!bcNr{MOkUE8R}KE z&}cAOmw2r0B)f$Ye}jw{LGQLvFom+#hH%>K=2&-gDI$xiu#r$a{q6HFKlgZ4GATHL zofy|5aEcV{v=@E2(4c~VRa#$pHTrGl#L32PV({9mIMFC}S%m$F4vc9USAc`JXd0FP?sxWvyf7JuYTW#T8Bpp=#J z%KEs1ckUoFpLlJ0_mS5vcn6Xt!sWGDae~kgYWpG}Z)B4@B$DZqd6&K82mC0Ay58%9 ziT4;S?5Xs&4$b1hEGKEH&*@z~6L)>cmfpv+YDmM_$9s$SAKYWZ$48VsidH6plz3Sz zS)+E3RjMl4iAw5z>6K=7cTL%>+=@#sv7%;7{iWcet`pph+-}I}CQm)NT1>7O75zJK z*=|EvY>_FFdU|Y7_Vif%Ttnrc-VFTlqrrOi%kg~n%h@{n<-2VB%h{{-FNgW$m%(uL z@r#ds*n4{U)emGG{_+feo?m|a8)+nBcVHLHfaZ6@g|~QLt7LgjRD$qdN98x_Sv*F* zqKeAMe;Q^0l5aKuv;}aDXw`xzsY8}bt*ScDv|1y$icN6<*xV#mYP=#`7ei+H+fN5v)A z@t0v6|C>y)kZXRz!R2V3(-Z3U?xNApVJb$fe>81H5pgIYyzgM=;`Y`>AI;B>I!2`!#5?E*FdLh+mtvR#=xEyCFn<6~#wW}?Xb zk4PJ9;572?8NdMOr?VQ4v2<>gACFed#%^ z(9hyBb$|NkKOSE_e)8W#H;aV~!z&V=4ku~HLY?J`b;fDRibGV99c2(ukAu>Sfa#*) zD&Q&LQIIB*cD*24C*~C+T#hEz_i}(#vS*#Z_af$Oa8i%#&zNUXD_l3Cx2t@D_7bvV zkGPLB?s4xLCiI)_+|!s3x>FVjGoMn6AP7#oaB}vHq_JDzD$rdk!iX&`+3O~0hN$AC zkXUOz#-r$naG|Trf+NKT-sB{E8`XAY1!`n6g*l+#bqLcZ3$L1SSH-+jyxPk3hd~{8 z0tT!jqdLBrBcp&!$On3xiQ5XiVpT*=&5oD8ftUV}3y@qB#oM33@p?{hf}>n{{c z23Ij1B~~{$ZAXU9 z^eDJv9DL!p2{-8KH?J@l4QI&Z&bi6@C~flGf<+OBByLg)Q;~gBy&SMEf|0~=giEJN#ONZrtGLQRmMe|Xe8u1eFk?vo8ZcwG}Tk&rR7{l z{pojsh3Yh42oC#|gMvssTg;%Q_`QM#CXZyIk4fn4T|#X}H5~bBY#ezwvyHSZvp$ zeqm|vvGiuLLvyuwre24emCX>*Zp?hkoS0ltFlRx-54Ym ztq^e987sBH%G6k=!~5xcICk7*zb7qiXXrSuo$A9BbG_ikV_LzS$rL}NA^?gTD)ZCe zTGPf0FOkmRZiD?!bZ`@Ni-;Gxw_xq1hbvq|#SMc(- z@wZE1c2=8EB~w-{fdQeX96b$s*vA4|`a=k~D{dyYYwgZWZh^!pYh?Sjj*hqpp7c&S&MpxP zDh_jI>hN5@0;{}Y4_x%XdndEiQtQlM;JcE5Cvi`OZ(bec--Mx0qKO+>PufYp zehck)U$|}(d$+QVDy>F^z0dc4A5bdwEcH9NTp@t(;;9ydvufvhfc?ZqtH()f3mw;=U6<@W<&Ln|ifh0@oMxJ5^~5_>syYG!!p#UK%Ah#N&_JpI=+-BqA8BdMN6*xlmQke<$ir+k``rBQ7Vhlq?kQkWf{ z>Lmj;>?|}?dwKcrMK}ms>6n~E5J-aVDR7P5?7OK3)YdHku_$&h5R6 z$LJQDk*dA&X{SGckL#p$EPPyT3SeYNJ|DEM1_SZBdgr*+729sA(>?2oN>p~*8VpW* z{j;l+^W%MaLUoE4+dGN!{np7hSFMAC-ucNH2cvs>)oQoYfbF`}D~5)xlA#dz_dwITX79x78PSgQ*V()M>x>Er#lsjMwgl0^$9ZxFA1b0w&-rI zIcf+l6{PFaiw0N-Y_O%eQ12F*_#>aQCn#Sld?~0XRtW{#Y&gCDIUCoTjLSO32XKXk z`_q<=V*nMU7K<(zsSX#oZZ=~FHK-2E;Gpy3I$$R($12Or0j%e(M`04CrJ{@6P)N~{ zNSzQOCAl4eyo>Y&syoHbM%FGZ|0d7ARdXgJ_#Fw9?~+xlwgs%%tLB2KtF=IKsvZtI zB}jX6{wC_O76yE;1+xnWW7ROYzRuX0s>Fk7)EQ`4JI5JnaPytZ^Zs!3`UYYAigSeK z3%*paZh(6QU&Ly)`8en;*k8y=J;YF6WogImb4Ad!1UV$f%q3Q-$mE1!1EcEXCAZ{S z2WQ=Hg^Ahj9CgB4hcGcaZMW$!0uEc1TH>ABb#A8We*FuMAzq=Xq-`Hv+SrDNi5^bY zG-FjQx#+(~3Jhs^5U0vixqMa$Hx>EK(Q2Y3=}e z;Xv#Hv7eILtaiV5>Tp2zDX9{nT(JA<^hGD_&fuWm-50f#qUu~>^V`~QVS~ihCG!a% zjzl@ty*lb0=ui=CS%bYPRG-+*eb?_w$V|sahgWAUsUZi09`=^9_W5bJGk=Lq<=NGD zU2HLRA6K0}pVAH)p(}|A#B~f~UP|Ta2-uJ(T>DTW-G_#;IS0L?^W&2%_$`jR@gzG( zM^}ek;*WwFihu>*PCA3LPP_c$0gb>0ufQHna$5{4L91@gAeZf z{`3`Yqc+hHh|i+XD=l?`%X=p$&=x9eOIaNdf;5R<-7hJ38@!k14ox4yvyGVq zwhT85DQjY|zMf?(8F9$%c&1ToRl^>B8)~{x<&Ny+=**BL0uRQ&%;)Qci(~ig5}$eV z)|=r3QK=JpbN(;$S>Z(hGx0#7PlvMs+^EBRGEWjLL=Imr97EV^CeC)?A@urBCy5Lpb05u z)_`Y4HL#r}?b;^G1@2cx#o2O{Pjp}`uMK%tGQi4=2{(4QBgr;!QeEN3#h!gKR#BEq z$M3eUq$5`W#%u}OvqWGpky`cH3={ROV;83)hF=}EXfTTh*3y;niViufB3)1tdJxiM z@BL5J%Zspx$veU2Qdb~vpfQ&DD9Cv~#1kOOA>#Q_W#qMYL(C*BuGP2ke53+h6+L!e z?EYc#pQfjsHx#G3Gnwsxuiz5-Y{xLua%VK3;V7P7(%Qk}u{(Cw%bhs|e(bCeRI@WU z>%;T-hbN2wv_yuH=ZD_4TM#!vT_CCm4q~{l44_%7s7V19cw@$|py)VTCPn~h_~ll;J&aE52I;KjT;q0=Ql8jNs(lC8*sprR(1F`7(F*xqboj8H6@wsgoKn1CDBg_B7kv@e=u(5w zhnNlZXd`nNquQzl$%fjr&ap`%ek%(#x*8d-pc;q?K|ke;VMeVLwnUb zIr`qoC3MC42@K_;gQs9U2$;AoR@Ai8HkFo~dg>#N2@e8YaA|)s0$1s@I#H)p;07_s zo?x_T{X!CqhFZR&<-nwA)0sfY^1zjrS|VW zz7kU-em4BBFEZ*7X$w9&#gdk1oaS`(+-65LV_(|(NrO;jjmuU>mpMr+$ZBV5vs7bD zdO6N0a~=5*5wu9D>~b$PfErt$$Qx5IV156N&lO*{Z-Q5+&*EBzmAdtT$oB>&oU-h& z(1#hM3ivBcb%wEYfKQSas#`5y!IaI1Q$r&@r?Svf&RJ}b0(xkMWA)6`_vdQ_sEiZI z>p4fVb^)_kp5-WS>BytpeoMCwYw;dfj!07dj=S05q6%+Idjt54f)@!~>0o_F{-z^x zEAeKmYwPO$Fv-EvS0 zllA8HgN^5}rG7bVj6pfB*dPLAR=rsNgp=8z5mwx6K&xJm8=`oy5Iwa9ixJ0~#UHt> z9So<_ELWjbnWYwMEI;su8c^I(y{pk~GhW?5u2Sb2q+jHN-ls)Up+_|QZ)cR- zCfEh~i&0SviLPQiHo=FRmT7EvG~s44ilZ2uBN_oYDn$H2X+#z7EgZq`uv|Tm9zl9A zuRboVFeYs&UX$UkK$shIFYf)1GR4B@i?KdM@=Hp1ZKHr%#Yozcfj7f};|n)|(-Qg> zay%lhOdL92vhK_hweao~iIpX+#g0PSpX0b8CLvYeL^PRQv#}BgGLHi11M)n7B`-P84oreZ?s zeO_A_EO>|RcB7Y6xnWn@X@#}t;`_Puxx$2nTRs?5o#hpaXjz4!ZB$%nvZ}F+rvSbp zI$UhcW^>v+%x7DhuBJz6xOQiw>6%Uq{6LOZtV|`>C*K=Galz`88ichhm2oFkWxQA@du!@+)w>7cd$|GeD z14aemR?xY(JoS||ue3&2UJLmfCL7pMn4pUzKkX)crP)F=Oi zkEl~0e0_h7qyl^>UakxTy!l?VV%Ygx0y=gx4VcrQ&LO1khUUrv;&U$oMCq5I*_v5Z zU{mB(1H+}(w#KGJ+eeqBGOI_%3d7jRm2rFv5ZxnnPA*fQ3!A5gGn4l*vKDM|oCXh1 zabUx5>RqlviVHApQ?P;6Gu60G`q0R+Hw=WOOu#f4;gY9I``InzAy*My*5qNh;Ga1j zYBkn=fP@P`e-PNQX_z?`P0N`4<^v@iHy?R3(eD<-=kvA11D_|bWWQ<=V7x6p*oH-7 zNzWkPAYusSq&byG$Y4V~Z^i&Oht``m(m9FwaP>A?AuAPFPkJbZj-2jPW@lmW^ zlhwBqHZ9nOw{}nOk)RbfEGW>C;9Ti2X-E&<0+h83hZ>Sc2l}RsrNXWc9{=&9AD-bw z-Cv&n@c8og;k&wjT4%YrYHbFv3|3!z7i*N1sGzJ+v|_mwlJ~A8Qyob%rm`rAjw+Ac zE2o^RigC#5^EvZ3P=W=>YDX2fP%7TFMvd6SM&LU>(Kk%}rGrG~mg14NlLfXg(sP-C zBhwPWe&PreT#;fj!^=tS@POFIO&mCtVBeYWhGwg;!mpeKx4A5-fG$l5iiW9~TLfM& zxG-ejHnhQVSJ=Nu2Q8ZxfaPBe^Qdrq9eq^(=;VskZykFJU5y+gR9ue^!%Uw(+Zj)8 zC#&TS`q>$3Q-7!HkHVN*yto+u?dh|>>*dL+T7p2g>W&+PzJ(KTJR1eXl4{wR-vn@) zkaPx(yS(X>Ja34Tum{B8uGaZ%XEonxopyId>O?rg0^Qvq*H;rN*tRm{Xm z!^nESxzp9cHRy#`*RT!IuQu2+PxChRYNH zN@ZZ1-2zD5Ccb@TXTTt(_|8PuT?HT0OWIYCWT#TVbvy9AzW5R89at3eH4f{OJ%@~% zGCXYu!Dbfdc3+@;oMOhJYK2WMbxM?+4s`qRLhd-Xmr_6q@P(d4h&2vE#DJj%Z*gQV z$Iy~ydroN3irfGU0mj@7SZ+#jd2V_dwcN^O9eDH=u50T}(1GU=4k;S)SEZ)#UM4B- z8{9sJrgDUNJ6XMgcx5}c&|xH=sU@#MO<6VpUIwp*xLfe6LX6Yj>luP206h#bI@;ZN z`w9qIBeK9Rd#{FXm|38!dnT-jrg|>%P@Je0SzwMrL^khrmD!0^MzF>Ev+_Z>Rg zHZdSvhS-Oj%-rhqR@;W)>P&{<)(Q5aIqWfFS^P^0v$Cml5%>j*{^Ol9TIcb9#%2S} z=$M#R+a>NaItwqGVbRTSUs3fn&aT(DD7f8OtnFcfz&gYlO;-Tbx{bZt z9P#PP$I&Y3rwdg9XkvD&B93lH{O_ms88!p6ooh(NOi2c5v70&FI0V2icAh@o`L=Zg zi}VrZ9_cqsLG|?6PNt4SKBGw?qEchRD?}>F?bhtGomWGcPp&r-654gp&f%lU%?`39 z<6wyP4j+G}5M=<=isJFkv&TEgdDJ`aBfsuR@9gRjnS+bro6HP^&gxd6eio>sn&5yl z4B4t?`FQ6!gY%$uLZI$80iATmlaz1h%KOo#e{lII zAHJRLXRy#F1=)rm^iFDbBbiq(6JK?{?exDt`#Ol&)Zb1z-$7#^A+Px$x{2vpBg@?} zWpcODrv3&{mTX2Vsi`D7oU3>E1ZZ&kzyORf5+;mRhzX9d9j?UM;r`S=Yr{`!UaeM( zH;=#i_shrX-dEf)MbwnS5n`mcL%f5=*aK;xetNd|2><Zsxc z;4rZe(2A+bkiKIw(@E(KvdamrTS?c8D>D>QftpeGjLzY=3UX6;LVypfs}B)D;f|d+ z7i#F-Ckq@yo%v?W05&o6p(rXLy7?rAGBL45DoY1x6!`b+sZAf}5zp5iWERM){T#UI zqL`BciPa;Mfx#Fq60S;@mWfoMeiHBcSQy>sXaMN;4+c|=pIA;3P8e34U_uu{?bN58 zzhxvg!U3EU*rtZ3kgRyQ!UH|RM%7oZqBgA9v?-;z1Jl$BVkRt%u|3lI7ForkJia#j zxK&o_uU{GN=5I0~RQ^;V=&9?Yj&`YWW_6vJy=cFw{Yp?JhBrOifo^2U8}x$fbXA<;G&tKz?TNf+ z+hK{0E^qal(dt1HTg4&E>a_Bx0S{_F8;CFICXa7f(?TuhWF60eQ z#@-{W%9mE}WGZ6H!(PABed$AFAgPDA(cj07SRcxSLV7a6Xpc+vH)K9CmeNP*V$&G` z@Tc?6xg4sC-246B%kT|8m25yh%Qradou10ZW!VR;ocPBPYpKK(C2d#1LeGjV_gSt3 z4l%AsbYp9Kcg88_I%!-`enD1t-WgK{23~ zTkWUhDNktZ)9-|?iOj8Ze6kstSwk8aMP;|NE5I11h6viyID40{t|-Uddw%Y^j|_o{ zQH#)NDq}l>gU`fq&9a{7r}A-Y2bLYF03d8>Xq{Lo&Af}zg{_INdeIA{&(w3g>wU?? zeD>m_;oIde`2R=i<)hpA8}-l8O#PWG=l1WT>yKYdhIcP;CZPhRU*s6=30|L)42VL* z@g-osr8TGcdzb<-f%mFKExvW1%BZ+&0}cGmeupFFfqz=Ajx?Yo@{Jrwl# zhfL`SiNqFD;Awy=9zuFx$7P>XMIfh^0zwTl$7Ddm-Qs8R1me-^!m zpLnySdBG-}oLd47U-338y!$#=4melK7C8ZOxC|q|{(vai|NO%UYW6>YQ;OK}NL}hE zwR}CBLBe*{3v92(+0I|**GoiJ-0zHaqH_dgWE=6c$@<8D0Z~&$)-FyWXI{F6|CP-P)=#&uf6T3?T<#^m=BDZ_Y5CQddB;>XlXN7x~HzTT*5MMLVUXIH;&~x7HBYNQ@*TCJD29Fd7@K!U zYHeXxUHp0+uBU_NK2a4A)J)OyPAJ(I$8_|Kt5;+IgR?W(NBcsjVij0c?s<>RHYB`< zU~9@hnW@A$5x9<=8tv|Yj(>y)WiaSG`sUc*t^s3H(crlgm|%)$SUj`D#=fTFJsqw@ zZUyz5V;+7jovBJJpHxj-|3a=sKn0T`tfV~DLiCTA;1#YBu8qOymd}p(z?-zE|0O@N zk>m&7YJlTEn1qv`1=rcTheo^#cD94(8qH0)$Ph^`OCBKXS@EXbif({Kk~N+qd8p41 zZtb$b9F&{k0YbKiRv)I9Z8|y{!)lBNtjRdG10*uc^{rDb%m?{=#=ZzT7#E-;wCzdz z1`9;lfZNo6IKTsV?ejp^DC#x&0Xh9n23>l+k;24`SYJxPGXNP&bW_nk=*w48TjyuJ z@_};r?V;ew2>jsO;g*8=2M?f1wxyzhK2$v34G-{M&~3J52%!#QV9}CJ+=4G$G}{?H zTaaoLd?^-E0zVtQUd*wf)rN1ZVPv?c+1~Eqe|9a=uW-oCCh-_LpHJ6!WT3?YS7)0+ zrjbxnsyk*d32Y#OG2CeC@u}1rkp_@JwJTtKBv2dIMw37b13_Wp`R55tIK*)K?BZe& z8EL_|2FMh;;*p>JZu^lj&y6(V?%?~Av(}%l+TFv$-B`ok4V4kxjM$oE0-G_4=d!3J zLrY;V*RZx>6%V>!uqJ zmBpBGI9aik?;J0UM{#_F0bFgxa_Wj!B_ z?nmxQT^UD)E_5MU93jD{Lez(mV@6s;7FAP+#iDu&LYm#Vj%!=CYH@yc2#xhltTp3X z&K3%m+T(}eqn}%k{<8Pz_m8fA^Y4!@Kh?ILL7GuK76hJY2RoZp(!;J1={U3k(rD|M zj6FQ5}G+ZVOgdqZQ@u~KGD^;O7F&K!!lh_kX9SYN~x z`(IIB##ej-4R?=fRpR{=YIRe|9pa^s6;tB*Zym>~Yq#vTH#fk+H(=k(zkT`lNABOB z*Z6mo(MG6%2S7>bI%lbC*TNJ=>MVB}=na+~G0T+B3~9x=&U|zBb4_M-+Q8KpP;9eo z8U2#7azkKaRa6JT?=#S}dNK}^@nnSjG}fyWfOIZzl-E$T?4_Fuz|>ZvB1eFFOLfDw zPHKv0U%201Q~cO^yL2h5>=|uvOH3yiJerS;b6y=Dr({!LTTM!Bj{Lc`TYY6G8`$jkHQgLwZ+8dv&D@+)HJQ0yoX8OV!$D$^=AXFiOcspIG6#JI3 zXZ(caGvY>LGB_;x!U8)CH)b=HUOSSJrH)#$v}OkTk3)o` zAQI)HM;{>o#e}0E2IZqiKU`-wmmh!i@yB1iK%4-2UfvC7AZ`BQad;QD=<&cT1%ms}rU&shCW4U<^J+mNUFUGc{jphW^RE z81+x)vy%+TT#yFJopu!t#o7rNT+0HbFje{Q4ky{PNxI4o4zO4EslO4bv*Vu2#KupmKLn<#%EP!qh*5upyDs$xy zGvFRuXs;@9k&nLdh6g60kFA6S$6h*i>b0;=k=Sz*xbCXuBC;Do`Oe#5+naeUA&WW# zmTKzH0oicV$M4c{Q4Hr1b*%i?_^pSSx95#p#TLud&yxsA9VT!gT2n)X5+1lrh)20 zM?H`LOHJY~6-A30Z>N?q(NOotyj|7pt*;OZuIP%D7sc+uebWHbt-%4ua=U}yhFX`B zq|!YUP;^@1hGR}7JXYq^rrGaUhSdQv!KTxXi|_0ZIy!zYxPDUAqIgMj&L3yNrEt@uz(ztts4f{3fF?@d*`e zD&_1Kk^Neum;qb`$4{j3GNgB%tmbk%V_vHM;^{Mlo#l4buzZJRJxY(tiC)=aACIk% zL{M>Mlf(Hmm``Psqv3KzEAC_^H$b%-4(?|oGF6l_%rl0tBa@vlV&OFwm;4PskIO6+!!p-r>*(`R26E)@iYawtQRa0kn? z1~WM74DK9Y0ku`%`eU@_>C+5%{={XD0q!|)7mrFJamzhrfnk&MrO^mF*QX8uRY34| zYz(880!vJ(uy6tqBULVVO6htUINMQmf1Xbj)Ejr3x-X^|(dQOp$*58U-GkjUwavAu z#zgO}SIEI-EfS8~;7fs|(lbi?*mo~*97?g?Ti?ENovFQ-#RIJc##LfhQ2QzA!j!!* zP7@ob0zZQHfN^}dF4l7x+8vJA*MhXWNOc|+}r^` z=uP!VSaOrw65~bv3!fp^F2$Ts(A6gRPo55uTkRUjbVDgtx;QK(xo~T2sa%V0nWPm+ zvLCIwuEqp)WVE?k27@o5&~qhG0EfRe#Vh+#cA1LzZo>`Qyj9T<$pgoNX*b}951wTy zZj5e+y$9B7Z_Apz0s{ilYAuoXk)cSrPO55Pbx?>Ip9`dwXdb^ z$@QewJy_M=Q0_!7cf4L1E$o~c@*ynb`5hjzy|l0-?Hf~xiMKA%263>wsaK@b*`Qnw zVL`q@s(Kj?k+wY{B^~!A&WxFvP({C#QZ1jdFl=f_n4Pc8n5GGWB(24Y_Wz5e&VsvPF;(Rcj zAciV(b=6xc*!Tr}unps-HfD|B0zx~q7`_koWYl4_tQkbc7?iOKE9D&XVX$pA`*4h? zSIUr~0LK))1({#8I2#ozJO+%j0@BetXR-%B061n0KTd`Kcf1Ds0v^jue5~s_9*LYe z36nz&4JBH_c}HhPHz@=|hn{gx7~NJXGVhpXgSfazPH}Ts8E$sL9d!RI8?%T;r>(Gl z+K55&^x}Gjib-IKt7?Vy>x>Ic-BpiFF7(kNUbI~zd7@pTKT|mqS$rj4UB#nJ!?Ahm zlxzZy5^Fg##M>fXjdjRTVv(H)+G}b)BR$aM22YccEd&1rot}zg!Q^)iDhpL)lVYX3 za>Ff%i()*O4rRn^@P&_cJeeI%v!661VwtySG%O-qHNXLjI!rMZ6BN(FV5^$8*}2Zd z*~06v_shwW1>dIzE2>?4WYcNFg{Y--Yg46M$V-P0Cf88qIkfHm)#yHtoLxjn!`!ZK zq}VRfM!nLkzIW0k^N~tHtKZxXe$3TL&jBo4%%@hhW-kCy^E?2UVN(D>cFS9bx z8EVtmstNbt`3`OYzf!R3K8LfFg?MK<$|sAJeqEXbb6JASyfCq_*qXt(hPTkC$_-YB zn4(bqgsmrdLo3hm50wlTg9UkVOCZbe3i`d;FWOU0sPz=B{be~-w~ z59AIU>>KeT2J@O8te#fzZWX7~QI_B(TJm zJ3jIoF=K!?R4ZcRb7_f?JPD|=vnfVy65=hfyT#Vy_(++}F!sQJ$^=uYZ97~#P8UeE zIEAYF=h{tH;qV_v-7_RAhEd#9B$V`(%Yv%H3_<#BH|)hi;NaR4HO)pR6Y*v`e~X3T zAA}hu3IM{`;W~=ZsXhiJtH3Q@G!6A>HR@TnTib$-0HA#(WYlH1-UpYiSIX3C?<|yS{(;IT$tvT~8sa%fwW|5z6 zqG19PLLXtv;l_->9xCF84GslA8$(qORo!|>k25&-B2oeoi;MMGeF{Q5ChWfFX zi&S+@E2hnh>%#^bWpsg_&sjuzYF1UmDm36Y<_!XyVV{z;oKA-_DSt8a(0te?a?p$G z9^(RlxtZcfR9t(o8iSGQ^^Ceedr94LInXqB`wGUdP_b^46F(^YT?;v@k+7QSkpB6J z%3;lllBxd=S|FIp5dAnlZe3?-myIHoD|(n zvD~FpX=8?V`gXJ zBB)$((F%dk2u>3nC(KKZq1Y!Qo&Vd+_)`5f%)ILmOv$jOZY3~vnHH^cf#+!cHp}<1 zf+r725`O#h1zhf%G|(4)U|K~2Xx-Y0QShuVqMbHr0o)2B(rGGTRHT#^GZzw{H4GJs zjZuQd3s_Q2A=8e+#v#KO%_Kn!n2>ExQ!9?(zdL&0v0mO@B<;QY0sle%-iwPkZ?Dx1 zeji7tToC|wC9ioiz@1i(17;IaZxz_?GMnLEC$c)}IFqzY4Aw}5qON{6lLtqOTH0%q z#arz)VW#8sN?tUT9~^SvWpcoTX0Z5R)uTle8fuA(#AmGESm8s&O3i6tH%M5Ax7Yd$ znG?K6!Zk2TQ5<-=?(9cxh4UG5Q$ncCa=Je`zD|2aI^{b0;0 z!}D9NeO7W}#iO=tu{a4`6WuANtK_G_v)KtNUA<$CC$`1oQ0CccM(z!BR2X36b#uMk z_ENfWxZyZoJzv6kM%^3|%gwiw>@B2lGFE#8!KU()W={ilNP+o63zB2m2aA;=@hZP@ zWie@KkvvZj-LU0Ulyj|7dB4C_Yh^lPIGH1xWa>7 zi)IKH>yzOWW~A0G;UkuV)qIhf?8BndB%5k_N(AW3IZ0Z{oPii-%;?)bI!YLG^VtSX zAXYKlg^cfx{F+IpGU3aSsj4vE;pnUeYfFqY8eE*kHNuOT7f7N2;9R2)2WyFE8SGJy z48cCOvk<*vhTEVxvN3Wb)3)2)Exe&-1IF!8T@>wjQVBb3Sz-_A?^f7K!hW@d{FH>@ zTE$Vv@$I@KF`7QS+Mod)!Xf$!Azyszsc>r>!@0j6y+#^yUfrFQGRTn_cWg88`n_;w z)ADjNR`-~ofS25e3Mvtr^6m*pdKfg1Dzmg9jBR~sxFyx;=u9R&54_Kh$DxNl#TyW< zN~O7}h+BL9-9X^CZ$ z$36Sf7tr}xkSkkt_iXR;y8Thr>JD3ZK1`%qn^wB|)Z{~DK!xERkG2R&6ohWwJo~RT zGSEQ|e(>590ojwg_1#f6yTyGMJ0Gao7GeUSdEyUNOvo#{vn1_w$Zn~x;vOZ4=|%~kv4vAlAl)n)%QgxoSJt{yttmK@3TYq5SRKE=0p3Xps)w%CCMSukZjnmN_Ne6?#&% z)hlGT@X7YBkcDvc>T2oo5(m^Qu5PWe4XOMpMVx`~BbFHl? z>D_)UG%^jM&9F-cR0_j2%`M^M-~z=W?Cdy1j7*14>%(+M307=Lz#2ta8~w^_@t{^pd zP0POg$R`imLgyVvwmo5>6d08xT6$wQoKg%6M=yP&vIO1e6Yek~Wj*jvznOAih3EgS zFfoodl{jF&G&G=yXZ=^+W`8=r_FuwwCYiv#yo!`&^e#?IZn2i)z-0X0WcBK3_&U=f zA5b}Eeu>IR0d+S~d80dcF#;(ag)LlBwKH4a2^pcer(ao;U!sQkB8MUa$CxVc_oKyF zhZ)RWoY;<|R>2p}n>MwTn58RBP#>6{zt!m`u{b9#1Ew%+^u6>D1d9OEKyLih(O&$K z&&MDrfwRP1tTvT!`O-uawd`d#lbO0(&xZ-VaG`Dr;=Hu8C z{uG|+G(!dhDtwsY^xi?$XsuwQe6|EPdkGv6I$uha0!wBK0w{reAf% z0aP35$89p?W8`$@E!v&K*7=c4{d#o7Yn-+Ak2+Up-=7BU1_%A_=@~|I_s`{$PIp!P zs>;6}-5F&Z=61##QDtn`C14&gWCfJ1TtQ>7IXy z$(ztWTwJX8_MYuM!r%7q4iE9CgLi)E=i%XDn@Ydj+oL}Ry0pEoDz)+T;$n6AiRJ(! zciK{8nlc4ixa&(9W=`F3Y`emQhOp|RCOvCbqvb8ISJEq?9llDZ86i(mbB4=dNi`7S z>mAv+@6u@fmvQ;eWn8{5JE@u316<=>s7hl&Id%)qw3O!EV%-YDVZ~Bowz+137n+k2 z2Hj15-r`YQ-8tJB(o*cYRT~a&BaOsuT)v?c?c}9h-T|@#P~vN@rqyKKko2)+X>|4E z5KY&O+~k;MGrOZA0aJzYS}0Y~k@yy#+4p%x#io4c^H-Um#!y zn*kiUxJ0DvPBoi*ucB%l!l)Z!W~aKTjk=_(NZ7D&n-cl{D1Rz;c-FRs%j5>Z)3RhT zyIR;wPiEN5*vNG3qj@lfFI+rR#s*@bk;YCrpNa&>BY{&wO^=)(_($+=s}LUm=WFo} zkoVAkV04o#RoEO?%X4H8_f|uA*&Zn_R0WS|;M%89Vd1CLQb3mH>L|}~xyi|r5G5k$ za72zBI~^I&pmH}IfjU98ptyG8a1=i84)~vfw(DJg0ws|=t zGJ@DvwJd$!M`{6a-y2G!ClnVwM+07{@q0!0d9DzeuhJct?DZUEk@jn<$ZwHL11fL^ z|2Y^dG}q&=mM@J4aJ)jEXR_capI@v#5Yc}#L1=l^=38%|!s9vV_E$0se*J7P5@R|&`1xs zs+tP+Lx}<+;WpfyVjI4i>hmbvi-?KtPl60%SWUF7_ZE+0IS#)r;Ml0+UM%KH)7qkR z3n)Y7K)wx0BgFFv-8s38|KG?uTWM`IuZV1xhnOX zk?w2R7(hWgtq;myzQ=%8!5RHqi)zg2WJDFJ({@B}INM307(*=2=7_p-7K8nmjJfB% zF#1w9E&hqC9zOzWK!xfwt3c_nc|TnE8wS;)QI8v*eNh@ZV0&xK4qQwbyXKRnJ`ZbW zvq?7Y{4~l`N~~I>Pi>iC121v(8VD_hab27Jg5Uc)9?1OY39IZ@!%CSLlruG67~&Q1 zX&5W=OtlISa5wyUjx00U5HO2It={*ZK6Sv~#c^36T594o86t|&3av`&oQ}qG9JbfS z$ZtQF5SMj|Fu^yIQRXQ3Auxr5UOn%gG~YE|-q4*S=%4ory@d|CZuvIL79_6bQ5I+K zX|5QE&u*2n9h5#&t$XOs)D+!;{d=9L)ubE13qV(hd$Mu{g#hH>7w&?4%Mt71x5o+7Y|@j>;&X0)K-nS0(TpR=Tw6E@@&1vvBMe zaK4+1sZcQ^O0GkKU_7H!7X7UD0A!3u)Tv-`xu3z(C!Zn1M2v~+=S#UED)&4~M3|kz zVzohr5nL0U{>>}O>pA-6&w$w7l@FuP#^7FPTv1+O6RQx;BaF?hwhnJbLkrTZbGQIXnZ(Y-`B&_meXKJd~>%X$}og$ zIMt;Lr-xCo*mbQNsMnNP$Lf4(e_hsl2{HQFc=>8_^H0xomb;M||Ij4*F<7xWXj#v@ zX*Z{gkV-KikP|vh`S@%VrvojuDr|OQPUS1r2e`EqKx&75jt4BE z;jA_I<_cMhqF`=HrFcGYW-l}>O8S)U$P96rl4J$XCUVSnFs5H+B~90N;^=_-)mM0F zZ($*@Iybqu(bsu|{DFnBAO$$%1e3!sD?ohE%ESN>%bQj$4e6nf93*c|C6zksot_5O z22>`~Ol_EZ%Hmc1HF!}AYs1NOzHJ?yx72+AODa(JsI}jr{Ipkt&e_$=&Pk^qRp}m| z_WEa6s;1z<&YufD9ClCISI4chgReUS#~*SY8CEqM>38uO)DXTtaE6)hhDKs&2%H5S z6a6!Ba5{Kya|v*E9H@6x>=(24b8d9LT@f%)Y!cAxoxwIlqpq*SH1`R4p?92 zc~)goicPXO(|e$I15la-6$D*`F$LIe_-$(=-nFWzs|U)e5vntI?Ibb8(~aMNh~fZ6!m!!MIsZ$ zs2ADK^BQ@*RcAaV#a|5k@uOF()nfV8$1k2d`QZ@~Y#^sHa%_D1fByG>fAW8P^&kKD z)i3}1i_aeaUzeXmAL-krw#~#00g8TVI8iIGF;x#4GIp!9qM{h#o6yR=?%?u(1X-;VxH|2$)o%Z&Py^ohXbOiVm&jQ-OJ85!xL$ za|1?CemJG&dv35t;N4nm8a*5ybJ}s5!GC<@5Ebr2Y{zb~*!Xy{VCx*8G8R=dsxmm( zjQ~p^IH8)D>no7POON90?ivrrdR5mLZ7a{r4rg{dQ7QU%zI%=(UH+? z;+|Pq3p+v8fL0`mVw}&W2={iepY*LlN}QOP@vX%$tq5(>?Tm-e&9Z`_1HWOk-iKyN z6vGu}<~ZxOP6mg){&5ZGYr-vX)Eb;!A$Ldjuv_SrwXCUN|6u*H0!o!RGFnN51D12H z_@JAWFSBf^YCu8+-N9+o{+>I=qk?wlsH6Nk29itlH`2sr5AG<$9rVC*EmzL;(^$cDSbuSW4xZqlRz_q{lo{+m&=5{)kSKF4Kk8}vpCw(63|->h3|Y0)1@knS0;L)nXSDN(Mo z7qFnSwa^xoB8u@qh5Ra;0Xxdn3^YTgU>AG)XeFuXI9B1ok%!roN*{B(ldkN_!|F!E zG5vFXilkEH%{B-LwVt9`L!CFkxla51NCI)tJ89#c#NJ6uB&R~It9IwObt3Xzb-pcp z70%FGUnG6kN|9-n|G^c`#@AVqekusD^gq3S>VXqio%g#*mJsr3wgu0E%QgOX&_jWj zUtG)**|pBkk=(6Pi!dODk8WCz4kL1^Uc`=9pE}63tsP?HYuxV-seBDtX07oXI-VbEcNobTTbo^41J=f6z~mL3(PRw> z)&TKs*OOT`ZqSh8Qd~2^W}5Tdw*;@Xrg+dE`9S9?HzmA}dWNExI`NSpY5xKX-HnFAhDQ*&c&jbEr5Ap?o^AA!1H)EI5><7>C?f)I{5tI=216AX z%*I2DeHC6Q%o9pJ2C-;h7M;b7ilalU%Hg!_F&*1+?bO(|fytlh76egVpbsP_ zwjo3k#nU1D==4bLCRk2+;&3tH^?~b++drC{Gf3Go|aAuw;5zBN*IfWMYc3$h03z9KnT5- zt)(hOH;gq3tQX&VbzKV6=Sz7(m+S<>+cr6Fss6Ock%fuw$?%0<6NdUSg!PS-=5Swl zqXE*_PO||#YaAe7itYUf!Df{4i8r(B2stI)Fh$eIMr#~Q-xo$$^L86(Xvs9&2w2jD zb16u-W=NVJKTY<*+&av<7CTyu*Iv2RsMXX7fnhDePvwh~4dH(WHkp00x{+ddz}LV+ zxmCZpSQP0DQ7#(Pe0xFpJSelYkV1WRTiO*GSN01ZYg2XNtZX@eD<%e0nuZUe)F525 zI=QY>4ZN6FCz$Sr*x=7@v(x!>G7{M!6JL2_#G%t{<96}`Z*l~$Fmzd=DoTDA9q@;) zin}SU#XCFgb_=_RzVU_zodp?(L#!vO@$L$NFpsRu@1mu7Nxe$Nn~sw4wB`WBhJu;y zca5cBW&gqTyMf$E&hEj{$M^J2k*AiZOFQdYE+lG_@CD*M z1U#P++{P!zg0g)4SI)bCTH{b;aDR6_r~494XwZs(;VmEs$nHE_ew_{R^jpwK7g9d- zz%DDPEwnkFZzT<{_P&T%xI>O1aWWPufwf~Eh)b?tYEcjb$Xd z;8}qM!?N2PVxo<)P$7`l!zEI7H`<>$97bo5#8K4o2e3<)pfCk2KX4`KHtcYpsG}e* zr13}I)O9*ewe?>U@=YcR-Xhi)XPj&r(y)(ZdwDy+!|&wV*_+O6yqH7Y8gk37ZC}H7 z6jd3`3hw?uKb@|xu?N*xR2}k)t0U39YavV@Um9(Y)yrL(ufVy&mqyLBopv<2&WCxB zc8no4ti_p1+XS7}G}(y>1~QjUz0SbtJS7Ti<+p2f>6C-3*)IYWSV>j~Pnzz_lnLjM zZI<!Sb zJiI)oPoJHAQ12kBju~z&StpaseB~Ik$IK(OKyqFUzVJpgiPPbVZm97VyqH(lGG-bG zsSm!Csn{;%oYlETKoynQ7>u$&PC;ZkZnTW<+I}dW>avt2c}>QVnx(@0qyr0FD(R}D zM@cP?J8c+Zrlp;g)M|{=ZBz*shJSvPS(hU5AQqU0T2=>(>gidf|`UnT;ockLh%O_Y4_k1@mZuM9M{O)~w~WN+1<(HDwV+i-Vkq5R|g z8V14ZyJ7x%Yeqm{ir$O~Soh*wY@O$zicKd_i$QGf46U|^(}9o3t0J~3HhJvE%4s)U z!23Ippt3HNX3z4tS7e&WGqR!38)u+G%gZ%rVQsowQ1U1Tk!)0A1h9!iBDYAz1leVM zb;2O*=vx^pqw--sztf8bZA$Vvo(-wL?4<(b&}U5}0fO^p68LWgD6Rshct2army^{z zzppurZ_s-?lip(L!5VN(EcS6rdi1Jh_lNUoFo%L(aTfxfacM-_vIG!xDFnp`F20p# zaZ1k_Vu?x|OY|Yqs;&t1hWc6=++m>`R@r*W4aQi?eSMeSYXL8lPo}v!(fu^4>pJ-T>{z3H zdW3`B0rr*nc&-nP1J*wHQl{@*)$Q!p)HbJ|-6GgEzqjBSMyThu@?7J(8S~u?*K(%r zrR9&Lu4UaYOtDgqTHZUW&5EtYGGmv`e>==Vqgx=u1waRI@vjytiwV}a>LOt2M3%}t z9pI)If*@4Vjjfe|c`=+pstkGmfF1i{y&aqZU@I@-G|!U_2DIJ5C1|bX>zRQDAV%(f z>)1@$eB&$G17`X^$!i6<%B6^;`iK(-1#a`WxiaNcr9PZ;E(y0Aew@ncUhO z{AOO4wtCWN@*pwA=?bkfvt7{U(*%`-nt*;Ms{2{6{)_5{$?L@Aq8xUTICAc6u(E1p z3!QAYowiOHkE;Jo)LxRM1UVR)RPP_!*2!88&g@`N@>O>5da`Kc$lHfp7>ts}X>T{# z!j4iq;NggZhvgnvd`K{;F%M)TQ<$ng$=+($V{A=Q)*A7R&j}Zy)r&fA?q)V(7EbVR z%<=wWo-`Gbu~Oz!0uhk6tplZ0@9#jebf(FzWlO0zE>pVSO+3$awWR2ovAoQ@SE{b; zq_ef8rW82(s@a32eALcV$ ztfq(w^izI5P$E8VsBNPI${4L={AB)_Us(hpasna+87H7ADU*@0zo-BeOt-IgU+gY% zB!gRDp3xB`IL=x~oqxZaERVC*aE$#6Mlu*>?P_J9VJBLA8zvtre z_hUE+m;gkWvE&pfxuHPpV%8?xp}N6PcDU>-?(&H^Y=|omTMiJQBt3?#w8eB7n$sh> zZ0Q~c*vyt8t3c)yLv84=%2UpOzs7N0L&K+anZA=F`gVnQgDE5(RZ*w3RJ%UOJmaIUM8}BCm?xa95|Sc5zV3F1nHC zw&!kjF^$sdAc+}ulpQhEv?4DM-$5}f2bLQ>%OwrN#&obIYh8M5=J-<=25NS#PTDr9 z8-{?KV$~l_7Q<=eB-9K+#N=}7h%1=Ep3$A>6CtOpJi4soJT|<0S7`M?0rNz(w7Z99 z`e;LfejpTL*e%C;T_iRYzla)PW^u^gF_zO?BvDu4@2$lGx80PnrVEr4F{T|^q*k$+ z9AA5%f9Xna2C47P>|R_9KGkNT)6SJ+A|*(kr60zP$K}s9`eA>>ivT}8+k1rn{;qTR z$!|Qc%WQ_2UFC*#k4|yWW-vmN`ls&D@r;cDjH_iLB%$FZ)er-wUT~Ukv9IDM^hos# z^q?PRQ{fD~@U-5}hHDAbx5Z&p06UA91F#QiYoQQ*&5XHS(;uu9z=|z*MZ9BFU4kEd z=9a4en0QwV+EoWO^5MiJ|V;wknL zbGRG+wEN<>UwrXAND%5D(J5Q5)o>dP^>nXNNY=&$)y(ALAUTDglb*_FxxYoqjyjJ6 zC=69Rdo9j;SK4cccQw7w&{Q}=nF}ckxJ%U!HA?*WQaFj6QjX$<&^vmQ?!yx)Tnzwx z8?i{;x2xBCd&<6Cw|{qdcyY1r09i0M*N2CPZTx9}xwl7u4s>aIUsY=3YvL&bmuhH3zMW5`;E5Tlr&F;4 z+6^GGs38{6V8w|OG}~Z(-MjuPp05$s0Ris6C;{e;aQiMtYB1z$BM(*7QhwI0jgaWI z#I2+l#(Oii+uy!RB*_U?%vVh#LYc>=u&NSxF2)oL1rRD}YKXNUv7WUDUw04B_>$H- z`?_<|;w6LAR{tBf&rx6qLh0dU^h>>Ush%bnKKi-!=r0hjtH+NngRL$xq@+R;4RtK8 zwnL+H=P5Zg#hlMgRWs#~aPn(Hwy4`4A}=Oz;+`RIP}l*L6*NN@>LJ|$*`%2}9KzY< z42+`pEN+tILQ9O+g{}l&aoEZfi?>*W@#{uOelM^fBbsif0sci;vB64Gg6%1i-#4OE zL&L6s>`w6PF3j6dYC(<^lGFze1&qg`g(ETzB1pV)Zw5tTX|{t)B*@bl(l1Ph)YHYE z@BRL_!6^^*BSI4^dx}<=R$Dw5+wYtnwGKLbbwQ1*ULUW2M_=0g-f8i&H-$m*Va*}KR7vpb*G#Iys9eDk3JXe>%k0u3eEVL7|Qn%Zf%hm_%O@H z*Td24BuUF{nbY0?j~0I`cF?i%-BwsLPGT&U+d;DRcvg>#5g&;oY6-5i(oe( zU!T?;HuNokNJuf6i`$GZA3qiDhL?|@1;0NJet#MK-h1|iDESNZP>78iyrh{#eI5I$ z=20B;zHtU*#fldb772C)TgGp_yMtcKCXg*U9ftRhPtJvVp_q%|%Y3*Hxd?1U{ef3i zpsStsaJ6P0B@umNn+KIWZ~%`Oo38TBXH#5Xa|blk4<8Rc*9}75{0ROHL;r-lGXmYq zfA(A2tSFeq=BrQ5_uO?gyl;Nk>e5^2rSf5E7U+v5FgaSSbAQn$>8C%Lk7YOq6)0uO zk>45L%34&QYnfp+;!K-ei!c&F#v4|bO)G*3Qab=`XN1oRN#~RuR&#qpgy_RS$08|M zz_n~BbzbV~yAUmoKRktjhe6j%8wyumoAuo^Fciu=-z0*B?ut@|&-yVZw1z9WcXMH2 zn~xj?MehF^dX{3_T!_YIfUs180$XN*KyU$2IXW%c_;D z4p3guGGNZT;lkOVyRS2Gk2mJ1-8bZQ=YR!4#;W&F7y$x9R7!c(Q5a`)?85b}Awdpv z2m@;hkZ~%It%y`4n>0BbBFJpKNsGa1zF2J7WIYm$nwQWgt$X?0}YT^uan`Z%Bp1~2vXXbUN3Ep^rByH zjSISFE}7s97k6vw)!QPHZK}7F;zhG`WLwI;sgHXo5ZKNbi}Qw&_#-?#HOnZn6_#j{ zGD2F^`P{QF;GD2S?y{p7?;PH_Q2%@Mo6kOZ{Nk%mFD{;3exilIz`8q zbgt!~_D~|AYjAO~46!!WDYd|k24SYaVs*S&t39+@o=g?HduDao=7xE9_BAp&&|;eI zF3arj^oiFthJZ8x2IbMt$x*gl@G<=A{&On?5 zgI!&mMnDXU6^HxlIjG^bV0LauxRy^w5l+P@vnWqlv$2-ka5eK51A#?#y2628#F}vE z%4J8}5J*)2`+xiUe>?r=fBK*Qw|}Gmee=Kk`Jox_Z30zd_EB9g?{b2>JiB_cp(gB}txGLNgbofLV>O zXW>ocv@%#t1~ap|XJ?3JO=mG#S?tO$k<9Ly=Hx_2lEKWVA|p5vWM*Yk+>?L>w7^1u zZUPoM2m-Xa=qx}7UH2yFpqp-j0AUV-{saAfX8vLR@gjn(?CNf92da`0@41_so12@P znVXx>hO=gLdN!G!$49rN1c-nc<6qL~x~(r>PtGTYlj*Q`C~=&=#OIj78pxRy8-9B@ zlzXW{OIl166bCcMy=QPY-+fz=yM6_F2u#kMzjBR z*j$W9Ncz+O5qCPinH)Fgco9IcEb$Hw=DNo8ugGa;T#bF(I|#agk!H>756$R&Ca~tR9~-k= zBfp)DiWnLYXzv11yAc@*gRGl&4&_$%#54{X`(;7ZNYS!cC5copl9j!mU( z?2t?|9ZYt}G%=S<=|q@MB*Nuq5wSwAwYdHpSK!Tv+w9=pEA4cA2HR^Tt~nM26$U-J zvbjIK7?y=1y?nI@7Mh@2D>lt+iL0lt!M~;!dCDLhc&==m6}?9fD_AbPZ@K{J>&PERDg{AWs$ zlt_*4ap&cj#s`Ii6BBV*n!A^rXjgYvo6AyJ?G9J2IuU6Fo=P}?f0oEMBiuv+`vw3< zxWA}ZGe0{nnE%kvRj)C zXK8p-h^hB);di#6u*Ps@AiM^)LIf4b={peLp_wlRC$rd&FLK7@kHwmJE_l5lI7#;aN2j4=|KrBa6lvuK$qH)k+IlZOf6>y5R0)0GGGah7;AaPJj zkv3AIT;)FbL>pY0yWFv@*ba#le=WNtd3I#M}Bx}QnrQf&Fw zyck|aD6`H@1T*VZWbieGGog5P1C5pz(5x5b9e?>xLTNX-djo9VjE}m>J6#(~AdyiQ zGD+m{2xh4jpd$T?S#gX@C=YogX^5*nn!&gk(oxu`4BUdJRsJ!({SqS?SJ4{P>k5ZdI zsfXp#5xK$QBla6Fn}?kOsV1XMVL&|a7RC=aDD`PUIl{4?JYs=P+Y;6^j3Hl3Y<#|$eNq-yRDHK){<|qm0*O$_bt@?vBL6x5qlGAjaVd+_7|}!V1PS_}@IOX8{|SCX&~=KY%uAy8iH#&a?)e zba~x86C)WXo>#o5r|4LizZTBUBVS%$V?;2{9`V;h`nqX;M!H5BQHSH+&j&=Fls=L) z;z@w;lnL5Z(KtG)Jyq)z&bq9$rBYr`xoZi3U_d1#FgsZw!{lXrtB}+DyqhIz+5(#{IB3&B`5G>yHnV_bhr8T3d=4~l`gSRtosZsC4R-##!0uGBQ-2W zM=R<*^T>4On|)4C^`%Sa7rA%SHXd-)c8E&NJLg6On`iTC2kdJgP9^{X)v13m9nAys z#FazBr5c#P;Yy+KGp;vT(a88^S=bIVyMIr5-vv=%=8c+@)QJftkpG=qK~+cTF#u zZ#?+O9MdhDw&KZ(Z5j`mf9R%gi+`+`!vT^0*?@;QaX%>}yomL{88U;z>u$%+shJrj zGGhX7*oXTctBt@+-e^lb2XxpCvnj}eAnOS=+QLDS%$!@#_nVF= zxn1))y?Bdc(Ad`49v_`e5XIE$e3IBASGa+jRZ2HU$Ra&LR2Ga&8ztb@uAl@MZ;Ir#{55_=4&WSkk8N8qM0i3>633jT%#$@59 z8_P7X-fqys6xTe$gHy$v(B1oMLLLoHZP*6Q@f!LhO%yjb=z++=2*J6&YE3sQA5Xk5Z4M^bMu75AMMYoD z$0azP{Dz7%GS7OPH_(QoYx%6 zd9U3d%_$-yFz3B$uaWIdQ7#Wu7uAUgBcDfcH%a4G^*`%lEGyGr*zdlRvtKBGlrsjyqw!?$H%dTkpRRh19c~UKMK^b798ge?8#RQ_P=oPg zyf(hTmw}IClcknxace`KpgZRcv`=hS$R5uJ3qm54$rgCmmkW#RMX(#VUH}v)X=3T+>KEh$b!w2r+13c{YdMo}wSn8lkMjy_eGY+x|dFlIS zqTj!P$BgN7#yBaJdID(B<5=vfvOQT-#Z8|k2u@Q-gksn1$&d<+ zg+cTV>h-YDOwVVWJ>5M2g%0dU;81kkI^yO#pv%DTCN zIL#zidqb^_WDwAtb~<~WH1DR*aXC3JG41a5zJ{sL&01W!!d#qtoC1gX znwdRr@q-6-hyv1Axw)+YDz{n$s%vp{+tlf}pjm99-J#(zG(8aV+b5v9nkdHze8?Y* zmFqpW0IFTLjm?;t(#5E?G$ci^`^zx4n=~@~_H3jZL-nqh_tyo_5w|+74vkUBAaSUV zJ;UN8B=%}gh@!i+WI%_A4B1A0v@EX1_{NbOFOMa{7C zGHngV??%(f_!JQ{t>U<~EmL`!wme5ii^Gsmc207&^OYYnUo|+nFdr+Ps5rE7yrO&B zw6@HExr)p5jE4FRoo5zh5h7{iNPI0`*QQH5mTm_)na3YId8UK+c9o(pGZH{_iuy^x z$E~OS`qt7UybbZ%#+HM9&O@)85*58F=9hj~Up*yAi#VqqMlmtxHA99H>0;L)i=Rw? zQ+6xNFFXAM#@3@y;vD9;0Z4YSji)noPC+w6Fump!^b8*7hAG@KH!Mbx%T2u;ZO^7H zMTGqrQ?cl{XU3E{Ys8&u&w6Ey6^EZ}<&Uw}OH`tq>ji!Hf!S~FnCBAbJ2T4MWV(_v zo^EXsMESwqoSKz-k3j6|pY8!CPw;YKOwKyY+R@4^Qm-t5QS+)scsLW5w;x}Ms=?#ku$R!=)zu?sT2wzYS4a9R$ zijEp6)YTSrP779uC2;&wumFl7`%9dt-NgoB3kRnX7+})}p+DYHab0 z{6}GwYFnd23+-$c9pmVDfhwWFEe@au|0dsU9? zs+as^IM#)LxpXPMW`m<{ zvd0yHQq<_dv%u2gXNk1u45;NynGWxAjdq7!F)BQ1$W3qA{=x7eey}BM*-sBq>bU2& zlww!SmC$i?11jhnGlv_Bv2z>?{0Um4VPOV42Q{q-rH-ubPZ|0cWj|D@&?cRd6Uo$7 z0(ibn5(6ap2l)1TNjZ@FUeJZh&XMusRxrD_Wd2VD;PbVi$K6gRN4u3{Un z#d)h)yOchWqgs{~pT_Di@T?bTaggoel5PdC<82#fG2xMqd2;CYnnxNxS4n&|gBl>Q zb^fRqz|*;eSh6FZQp^SB?i@wIigmJ*6U>o7j;k@d@o>h`@K~7IzvC-hTqo@y{w^+X zX{;$kYO+4vX&%0xJ=C!3og=ELKIgP9s_)fpfpbeXjyEf+1#vI zER|DcOugg*nB7B7!KBKPjqu1UnS#bG2r=q0E1PG43zRDqlR(OpN~DxoHkMmF%}K2k zA9r|jOXul=vzu(%EkE^DuZEY=y;$G%>KbezwdmJG5LSx()y5_AsB~Ijre(=)us)IE z3kQh<(FwbT^juBE5Hp;9U5WWo!m?<@}1u+>P#BFnKio)BAf8%tsq8`he zq*%d%2}4<-EeJMfc)%x6e@}DMKGoE;*0`%JoDnhZ=QsbE#`W$m+q4B=Sy``b=V^ai z7s0tQ`LoUDzBqZqa^MAT+}w~HjBvOc3x8v7_Ar$nH*uvv04;~^9GNc8|EQcTgQ`+6 zar%GPJ&U;n;&kk|MqN7OIlCE3&I*o!ebed9Us_ty=J-7)+$VkHHa++}J9kj5a1lz7 zw-pp#9z%u+S5LDWWie0p!0lnPKzG^!{ zpNdqrmMx*lDuT2ev!Npoq#NmBq%hXID9#89-2Zkk<93TGQFNnWe+||A2C|El7LMTC zo_VJ>GXoykgBLE^u#@R=Y{yjcW4kP{g5bcp+@H%DDJt6>S$|WEhaUfSJniAEnS)~twTV^r8!j%<5YZZd@UA8K zZR#3YX09A}wxYk$@_v?sIR@=13-_8AxcCCf+Tq*b;Wz4PjDRGbBN=gHpkr@66+-0X z`Nu}SKn-2jk>1N&%5DxXh$n2GOeWtj9YjDUE(?-SuE(|Fh32Ig;dl>ii$~8MTKA;z z=_5=v3B-9kJdZRBP+5)9tZzrh$YF+CWRNG@!iXyEZcUxw;6t}j_xrUw8G#ed?u`@* zj*9mhJJJG=x<;Yz-O7@fuiyLP9bz)v5?57S<}Sp83ynHJ02(AA)-n;k9xLt^si3k?hXXf38$pIP zRh@$rk_9*gsKqfx}V8ZbjY4*nW<|L9L_g1gyh6 zkxR2N6JQ)-#d3!Zu-~FO^&u3c6Py9+OOY-P(cmzIsIjsX;I}#ACav|{(YCnSk_qBL z7-fOH!EDy&2pw1eYUrA2z=51!1ELE|D)~ElG;2q*36>;e8tu-n7bTS=Tb1tE+R4G# z6@6|DoesN~r}@aspuflt`bJJPt$GOPY0J=Y;B?S1WSob-N;zWmpZMfE02m5F{C7Ke z>9g-Zo?l)?8dcCaU~xG4n98EVXmbl%ic|kXocte_i)3u!wg>HV$rFC)kAeW z@6ZNQO4Ne|BRhLq9dwF32Q6?>E^<{Zvatl-!wGpAh%ib;Co>!0M~-^*l=LhV+s;N4 z)3ydAav!H%UPAA++RQTQl=e^Oan^K@gM`Y@fm(QwN~r|GAu=k^-FNsR%0$A`IX<#9 zIf?WtwJRduvbnsX4=@7D=C7oWWtTqrWZ8+A1GGp+u}Q2_9IK3*rzH?B%UkfhNvK=_ zr;L@=E_jQWRVp8Jn17?%zVuL}$6>I8qE(@cCoGvD$aXqkKHuAS7$h&3APw_P*O@bKwSxSxeu4+yWt5oW`}1hyp80wzqbgR zaTkc?vw7#$?EHxUkgP$U1?td>%ruU)XMQD%9U==skf9bg*LX$6*{qX$R$L6B_*BxW ztj<PWJP}NVCxvWf7*Xgk|{T4O=SJ&7w52riC^fYR@8ri zy72&o##=2RUza$uuZpyM3s?sz^D+0JQWPSn)uu~=xzNi@8}pUzUu6j&cT(-HEza+y zkj+c@-&JkZQ=r8kT29_fB`+N$s6UYv{1pJDOYb(ifug%gbmk*-7j zZESoiTJ)WAIZEZRTe_AI#Y^(Q{PC}jJ$kTU7*$~(K;>UhFd6FwLR7lGG6!INpv$N2 zb0?))i$TKPJCj6vn5B4gc$V$P5f^36C{}fOKsuAv1YlsZ9Ew;cnr;z1w-pqmN94Hq zwE#QKglf-Wl4Efc4I2sq+~rQ4naw@AG4=X)O?d?+#2zd~u4mo55jtiHgFvS~0UR_> ztCk7~Q@n!pLpe2I>2Y!=N8QF>*kXF&cZ%rh2-Oafy+Y$KBYb|^N*!Jsx-p09~WNN`KWG``lNM(^5IZSE@qa3&Y9 zY@bP2Jb>eJQJKax50%FPUUu0Vse-}Ah))CuV|JNY66J-%unHHJVg5XtpVmOkRZvQD z=ejjibxoZNPG2A4w2Mj_8Glah+!v!TxR)-s(3HEBv-{wBV5@^KQEiL(Yne27Elxi-L+<2qoE=3eo2ICK<_ThINv$mYjU!~=| z;=3M(j=1wf35x<0sBlDwv}yDkV?yd?l1Zng4^3t-Y~?5*{ntzs|F{xGU~XOIuCWbt z5QLz~e~qaA9{j$Bz-E__u+?Mkm+_2UddTTH=$Rr3mJWV@@(vgLA@<#E!D1#VGx+zQ zD0XIhzSvAwRLk_KbDvoGvd*FJ(en_)YX@2!e$MwFCpQ6Mw8;jcg6WIfvE-fVMG}FO zWeCVtoVUj{n#|$%Yqii&1x^pI^3#BCXKzt*~qWeTNmB0E-Q z@PhC-CSTXFl=%#=e;lH#9ymZ)$}O0B@t;3er7I@aCKn7G;@?H!yD;p?=Drk{N3db7 zqAJ4AP{8mWf(alYLnExt>?=qmstGmQ0U?Y4H60>^>hgy~f|XZk0dgw1p-j~J8_w9Nh?O9~;R$Js>al-jQ0QHGxvZ=g#k8=qx` zWp@af*PL(D|BQ{>2>=bUI60$}z!TA3p(yxHD1rdEstE5lqOHukE#aB^(w!|GhQ@9O{>2@+V}(&LOfEx7R$ z>UHPu|L*AW{)4NH-VdYk=_Uv3ccDfj(&6xJ*Hwc3p;Un$gcF`oT7|)KlHXl$A-to9 z1;HJE7^qr=;&ldU*-^?yXL%)_6U^wUMQoMPrM>6_BdK;s^VX-YqdYYGmWwqPpJ|KQ zIh+7f6%j$|L=i#Njh{HdwCKp?e$}`7FHh_3N!-__ocRv(fv@9oz+a|gMn6H{%nRRR z754FkG1OoOlwpcWo>)FaO6iM*fnHfnXTZ4WN96etSf$>J9;C^+LfQV@;3BW}rBq^N zT1NgY%_D2tRWm!AFh@@H1^`FKlO=cM%4Uvc({j}_{gyXz`Entv@7T+q0z>S%a!KDhloUNF_ijfG<<1HDtk zSR#3#L;CUX{L$nTd)?dLB0mEIff+Ytrr53?rdCX6xbcRL=P9npz>U|Fo-zY!1%Tyo z{FbUtZ3z`$sI|SPI(jv0d>oITV@iOpTw&Ej{HhB;>BZ&b94xawpNLom5tPiZwp-J^ zJ;}@@NAAX7e?&gjO{_S+PX0@;y-9}Llm;%FwR?!!D%OjJva_>MA3&fAk~Qm?1qG6Rog+4fff%-F^F^fD#$>U{z|_ZF;UN;7YB;Vw146Kye7w?-GqrE zlZ|0eWtKt_^h>sSIzv0z3qe&hKyD$_RrTHEsHt6tIb(SI)ZvH)D5UA;un&Bza|6-~ zjIF}nn$%ls#q%0=sAC_O0_7-ekVKEm+z~<`NgPp=40Fi9SD_8!$&cl&LZ6#6_F$Qu zt3<1tQzf#9HjS;IoJlr|C&=vY_%>3L5f&5$hPwi*6LhMTIE$s2ID)R>l!Tk-9$jG@ zis(*Y?|@Tfo*Z<1>5g&L6AC{Dg=N7pJUP{QW0#lGci<)+!q2PTiGz-uVd!AnaSMwr zg9qW!`MDa{SSz=E`k6}5fI7KQ_CgOr;Fjc_v6y=hybM5t7X~^HOiCO+Xt^8NxR-<; z#hC~`EgDKjoF(|NNBAMUssh0Xj&_s^=*FC-RCIhg^je7Ivo{=s6|N6Y%;C`4xCLM9 z#?~@|POIYdiBov=W=Ycv(Fi!X-L33!QD_|_Nz%oiq$)64N=6lcZz`f>=4YLXQgp6V zT2=?_7F{f6NnmYe^2;`kl;dK;qe415@En-bX0vOsNEuU7bk>|(W;d{ai_Rr1Tl7@7 z`(&b5`uh7S4@&L5TkiIz$A&vUhb-cuk&WhlDnmOs*@63yz8Zdji+00LkT|@~u#c)Z z%z2zr(Z{+~p>?qZm^*6S!Lrc8wc+dbMXX=50WoLroaSDSr4tl7Jd9C1_g)?AD>5bK2W_jgOR*|Bcr3I}D)QA4^=>{2DaooyF} zBye4HNZUHC+Po{S#)Rum_0l1Khz;AgBMW)&)5gET6;nIj=!}R7X6b7Dd)_0?Nq)kD zWa-gLX)V2&&{5T23al%>7_Q%4s`x%0Lz#8^u$l9MBPEI(tRIO*bD3Nsm(|{Sh9Ixx z?}Z&?N7wsA0_%z$9e#zTMV8ebF*##dpG1d;eWk~w?f>15puTJ6Rj7%wN5aJXD= zYLE*fQI_JDr6)XLTe@243nx7*`%f4F3*kFY6GD$;xD@E6rwU}k$z|-==3>dakAami1hhd)8q12AC(@P`(}V)o+(TYW)knV+J6ty!Lo@WT5=srcpafwc zWJpMn*pFzyvn77S7pZ#F7~YRJF8E`gj~1m!2g_LXruI_mL+O)03qc$-(fq zZYG|P3(G#xZAaC7mPM83fHIe%eVtAb|0aFv{HS3-bvgvzTgvZPiHQpUe5(t#TD4iB zh(`s9FT)yxJD{Uh<3U#41Zgqj-;)-c-;RSP8j~j*wDc>f?ogeN{B}Oj8n>R=* zk7U9~okQqGq^D*9k!JzBn9FZx>~Br9 zdA^k}=hoVmL^UWzD7N))u7v!~QV|l2Ql~`{s!Y1E^t-Xd%cNYCVb>5)!S5jcQtWBG z9LtK138r;1=-Rx(fd z|M|cEzyJ8Z{Cl@<@&CKE*&N-()>qCHXAKXX98M7Y8_NVA@yQ7B9wIg2A=W8dQNGM( zl=C8aHRK_(hxzSh^$%g(2e_MkIvCH81xCVpOm)d69x!4Gm?<*C3{GUi?PllVamNr8 zFWD)DR6+XGDK=<%#tWGX$GCr^*E~gJnPyUXjRJ@U+uut?(I6ThDGFZPGi=>+LVO-;tthRKm87KK&(8{leg3p` z&{g_8^d%C^g>-m0sw3q@%uLSN1sovV72GyvV!A?;hzK|6_UJ6p?41-FM&<4!KyT^- z!VCeN?uAny;q*X4j+Lvw8|V08PhaWgyAk?#)yXEoy}#f8fBs7_KmY$v>XX3jxfgQ) z2SX1BC;hM~@6ht|;0fPu`yG27U51p5C;x!cuV4J=-hH>jG98{yaQ#OcoLzZ6A5gkX z|J#4@e|`08@768;|D*YRs&@ekx7+ZU%xe2p$h!~qT@v(AZmxzq=WpK*_Jaf9F1FF* zn<6^=6Hg~Uc(--ZH`{*h>pI7S{cdlp2<2=E5LJ!o@$ftl%|(Q&c0-iI8>9!6n|Jip z-uYk}-({~RXQ5Vjv!diFFymb6r(vsKo}Zr~JIC9}QA?en=an7;1Y)>r%11Bxss(_y z2a)WfMBErCJ+^Qp^8{lil3BYeU+I5vKYc}I*8HIy>C}fQPH;(`ol!Xk`OcArdsZv7 zKb&GWcW~m%`~s2pnxN{75xksQ#RYc$rx%m+0r>zi$43TVt*b@%-%cmz=O@@jbp;?w z+-j3zr=97BvD4rAn&X6&_!MMPn79<^060)O#4(I-d?2kP-qN)V*SaCHS99QIjc_f3 zdzhiU&GE(fkp3lvR5@QU%^NpX*a{9Uh-do*m-z8)g3~#e+8kF6N;J_NWo~Eub~vR| zL2gY%BKy&6ZlCJ{nc?QZC`TF{IDvs>0sLAAAmPQQgAd`Ltz3?BbR-eCID#EdY)4bd zd+`oQ-@k^NSEKxD!;Azbf}=(l6Fchl){Civ8E5@ zRsizv^aE)}4T%v9>_~*Bm!!^myxV#-K0LXA7dxTV?Beh(VvnN#j8t8V5YPd&DHfw1 zhE74uMD}Q9+}g;4rtp(e9(mIwqS=K*zPH-k-Feo3vHSe-?)Ki^UHsg7{`AF@?fvaX z{PD%ZohSNjZ~ys=7dy`$^QnBt<7m@|)~DF|z$ppEfZw938CwQMQ)rnP?vNi#)I}-q zMVHA8&dwmoDRFZ=hSVjocOaaFT#Wj~v*`GPUR6r|gF-zy6ha|X5WCVC%ZTRuMvf`4 zH_YA=_@8l}@*JZ(n;bF=xVsB2<&Ye*P+~Vrn-7&h4xT=noPU9Hg1Q83G&>r-A441? z!iR$~&-^3zqg+!K&2+a?%NhZ#3nCYpAesq~;sFbpQft#8tqNR(NaEp&Kcz;BH`Gwh z{J}{Cy#spzmwlXY(Hc&(79gza(5C#rC&@(=+Q}c1S`TRTP?Tpa3S$Cc>(Q zhimsAeEOpw8;@u#;@E=1Pc(8W_fhS{QBEO8WGOL;;Q87PqRCIP%L3@ZU43`=l~28s zSUzb>6wSDh%7c|j?@xcGvHvl27+7CQ2Q_*U;m;chgqSOIKE>QksS=JHyXveAwHgv+ zVbka^NBYP>i9Od+Qv2ud*r*L$<(R|Qlh>XQ=&P$7l{vf%QUiG-f=i%tnW{UYAoiX- z-+K6@|Fh?x@Adb#zTAHF^2zpY|K;wJtMyB52Zm4p7j$;YGJaTu8Y}`JHEUL_30cZC z6D;s?hMd-y92_3VK}R_QG3C%^Qb-GwLRgfi!_(IY*6jDwC4=pF8*d9`JsKApL|mKbp1Q~?)vBaYl1HQ-7=C+q_xWyp^h|A}p`iU{=PB%UnY2E>0P;MNdygt795nKv#{68zallkPs$J|&cODz>5!{`%<=8EG z-fg|>ZNnJE6*QdLe51~skaG52&1S5^6-8b$aEK{}kRfO*qhO3et932}-vi-km}k(K zsV>8_a6}^zsviuy8p7`e)6oQ06ebWr&u|z|!@*z+u8I#}hD`W0A0}rshrNd+4P?OT z>K4WR;22<T=IkS zC}o>+OhtTdk*NZvr-N^~K_MtaY#qBi9eg`Fy*O>g7t{}F;`^eq|HCu0H}+@vjXyIR zc$6M49N8o3HPA6&exLB#xQjzHW#WM-j>^R#E(9~E83&<@UU=1O`L`W0cF@=yRfa?d z==p_oyp}2EHP{V^kMlXr`f&$L6s-2^s$Tt0)9dw`Q|uv{IbQ&%C|;e&P_8F(6M`@p zU8-1-ecA+?@GLDcn1)A?Z^$}Pl2)BgSGpv`IL@s6Yx@y?d)|ZUu1BgOnhCdg|6V$5 z$~v2!;3LaI>_jlV{;)}7&ofU3A&9QcPLxj3UmJBvoypMkoSTC4G5RTH(Gd3&#CX!- zHpPOc5O}eda~dNqGF7EZ-^R`(Y#W9O2Y16)Sl;kztTubj!)OaBS=8wf*a*yJnKUAl zqHw4A5@H31t17aOJrh26%QlFy!~n9^yg>|5MI0lkBZcdM#Wl-G8oI=qZpI>)icTtr znv_YLJ^6SADB>51zXGSIPGC~pQplsrG*u%LB@4YN%;m2rtOK*KRN%>_O1}QEs92Ou zi%ObtGDVAyR~$vDPb~TZz;EsDeA_qrbe?CF zBCj);9mW-kPx!&ed20%WW49B5xO)QH-!iL4(9=uE;(qJ!=tuf4u8nN}>x;7wu%Y@h zY$YCDobVf26-w+2rj4z$&%? zdQbEOuch?#`AQFaM>tbj@QxH-1X^hh*sa4z!0j*R5+q0wOP27kz}N_(`IM#{k=qds zTq9cwz~)^$J>qi5(Ok$=!fr15QoqYE1bImy{7{38W$EJpo5mY6Y&-tai~Y5EK*>D%s<^Plu!3C82qi7=elDot z?Kjx;f)#4{M{{b<+tniW$<7u5=NnY%#PA*Ve=)mim8^=B47ji7|B47SH%j{F{%>V> zi?2$gQs!*+|6AMB>{PozH{UA%wh`{q8fLn~*di%X6Rt#=t$=AfvLQKOEZ)W{?}*E_qRWP{`@QBUzHqd{vM8QD%Rjv-;y}D3yrxB zcxhrbZq9{Ap|OCfhV=x{!DFAcK_`2?5v@PNnRd7ge2kEU%|$a!T|906;XqXNAH%gf z9M9lyWp3xwGsI+$4?o<<&0EIrakNCxF%ZbRjlPqs7k(pXKC;BXck*&P!V+kbQU}5p zt%d>MyyYj#5@9(5^%`HOZKsKnTp4lPy9pm2?hiw)gEYV{^Y3?W`pGFDwqa7s9NO$W{SeBp-Me=`^JmA>6vmq!FL<+JmV-Atx&o{T<1!8}D{N=s zW~mT%usJS4=5eByg~;)4I^#&vTg;lyY&#~jH(veXA2*^FvKwtr{&CBIjl9uzZ_ zpM1iTYHyr&S#f}g6(&KCh3}Mr3=%t$=f zpV(S9^Cwo3sgTp1tT~$@8ucVvnuOMKM-k*Z4zZaDKXYjaE zHkWzjtLC%j(pUG9z3c!#8c!3e%c9ZkJVP|wa6Gwq^R`KrP-t&53~_-nv+XrJnzR1# zbjYiyYEB0_F=L@_t;pWP$Ju z-q8p_-=~!fMN6U-MpTK|AmL?ay_DKN3?5KB!(i!Uiv%(@YXMmfBEJxN?0x(O4oOJy znfpo7*Z8AA_ZWFhOO>aoh9Ps%W=O=}*F~XgTV5e=mHoy+&l(}?kcjjOLYX}&(@yi3 z@@NfX<<_JsD;!(?6@HXcS5yFvYF6@cuiBRvCqt&XJj9>z#TlIERM$@!zN0~+aw4+Y z;R-Wftjp$I568+ z-%ie}<)x2WE^V3ayQn#s%t(=m(+YjLq4ki2&hN5G3i_K|aWwhtgn7BcWI~f2)t*+w zEK91(g*6XV%`jLzqL9Y_?8rQZ|Q|e41tP#4_H|gHJLDvB(j|Q2-=w>#~qd?E| z^uLxkNLS>1^JDHh55wmhCL+`Jl<9y*c}^_3U5KB>L3e=0j`m_`*WLD9Bd6Yl|EQh=Wz z?*jr!k+=k?=N)q*W5c(w{1C~B!AxHWa9EUZtDLVP#*O=A9e37@p`Ghr&zK)AX-(?< z&D!7K_@$UVs1lT*O35wJgiz?X)2E)asR#A>^(upGv|DLJPf((2JV@Pp@qBMTZ6&#a z9q7ALh#Bn8>&ejvfGUS6LNmerW#D># zexJWBIGqqPzN|bloWr+mawczA#Gh|G%Vrldel{&|b6?ae_aDakfG z)$EI;Ew>})nKZonh?_wHCUNCQVPlEf#MuoTF{`nL*a)|XpTbgN-B^N zu-Wbsb6oI7HP``fCUhZ(s@L62vPV03(dy|LLhQw!n4BSt0CYq-SRdeH4+0M2*Tc7i zcO$sLnQ;L}GCts58{Ce^8|8qKV9vx3_UM66E7`Vtb(35HNUeC*vf;vb8yziD=Pl_E4u^7n1ll&HF;wZOWoz~)*`EQ490NA* zaa{}23Glj(;|u1?m|eU+9f6=n&RzT)58>YZc*oSCb!C41bc+H+^&WdjE+m?B*;MFJ zIma%d9?#f9o~jc#`HohbFR+U-JW7QyxF?>I=SZGmzk^#V_DK8yI$qq}*qL|6U8CPG z5D;{Ro4B}dHs=7nY*Gc@h%MMuhvA5SVEziiN7zNfbOF!gEw^nG6zZF2Avzz+tUk*e zs;AIV35fWv$ywBpN^dlas;dn`$?z`;AN$E~dUQYXal+olSLP&X!ZVfQZr;DAtPn&@ zXcKA^HYagej`iy~*mc%U1f=WJw%>G-WmU2-I8>9E@Qh08b`7XNCX4S|Jgp)~LQ~Od zqQYu)OVLj)glJPP7~iFQ%XUx~xR&chwTliFMg^9fR_Sgqp3qzQ-sVAu#egC$-mYz|KD>Skg(p=t<3IpwZW(uNJs zLxV|Mcc?*yqJJiJ8IsmXLaO#e0_q=3rV=t<)TtyK?$&3Z7Fe{9FDW(}glp0zgo+dm z{LuQt|D{3XjJg&(Xr3LffT1^{YuB~sL*1qA`cUH<_PwuDv8VW|Q?>UW?r(irl1a+L zmY16t2PgDwv>5)rQSSh_^vNku!{zqrR1nG@MRxs&N-a+vCqhD$R>X{8XV*?v$9S4g z((W!%T!=)0RF4JFGAs*H0Kfjsvpi8-IzjhmR@(k@V)o26Awzr4?PhK;?WA=l-kS9WnQ znaW!f7~w#V|!xDW5+WF%GX~=6k^tUJ}VokP`~pxd%It_E*1(4`%prvLD8I? zMtvhEAPwpn0`;K>e;A(Ip>y_6=yR5W^x}W`$3Oqm|N7P~{{Q3o={j3dg~oiH)8TEm zHGOe`oE@^gga8&=iS9X~oqg_3AJAv6p8M1n+k;sJds-ocM7OH)`ZAwm$7M@mwX$Nt z91l08Ycbh!`~6GiS$3z)XWWvKGYIZ9r{}g;nngEQg-l}#*z{=&#P2W3XT|o@r56&o zOwXpT_AmiH{}8`FXQ~4CQ*=rF{&Qr(L`WbQOju&|c3U1*cTrQ|qZfMXv)j*YArWIT zX1$=adv^8x5t`q={b>7(hcBP(_jjJ{?LU0BwcX$U+ZWpqot@K@-sz8e-<}|zX4v8K zh^2FeC^@cJ5JDBz~C#Nbm!9xD#bk_f7_yJ}xm~4a;?#Ku3r85ty zxP4~T`CO9ipc!yo(P_m6jFGm#W>gVWD0^{PEaB#q7Dy*lETrmUkvLTg7=OJiYJHh; zVB2Jh8Be^FYQqfm?5m_-y*bFDo_U*AYe64X^i3%3v^YUfU-iPBaegeAPem4ZMt8YF zzGX9F0Van*wFXZQ$}5*5vfFv2_g=@E@MRtOuGj$a0Rr8rB9CC%7{yD8=`XemNIE0E ztrGz|sa~QF(pVyt1yTTE#GoQV5T%vVmn{{89nn(Pzi+ATMrk^HLjl+VBPo;u@*SLg ziZiK*3QZwoZ$s4@yZ8xbqdMTv3UwB-1M2@06BdTmyU}zqKIJ+C-#mP!t%F~0GV4Pa z1p^ooCg3H*jcnbrg1{B3-||_j{wKHWAi`q8l-o9frCuRsL^rK3Dyr&bz0~mV!MxYA z+3DQZyzBvhrSty8(5}nag_N(7Cl{J~c`n3chKkCZ!m)cDHnDTE2_uu+XI}Mt9X>&O zHPy4=7}_!d!7qWoE4iQNP%YWL(ET1PW11`}Fd(SIdoEqx;o48f2~9NNX^8u8MT`O_R;^_C zUGN-su3W22>TZfO@0npi=&9dnFLGoCJE|3P2o4#xoaRN$%m z#|3%p{^n9wSCogC!FqQ6{L+2|tvkx^xS`YNsn7_kPLeyGUJ4 zj6?H&?6AtIq^H*}?p4g&c)Mu|Yfmx1leR~9m`qZ5>)+7L7`0e138TFkI_fk@Q zTaX!?Pte2|nGix0lI1P7%M(>*f>Qgf#4dQ^uQhv&nwER5Fdx;4Ty1vr=B=cF=LRBm z_R|q`8+yLvd?W+}xEy-CZ8{{Mx@$mqO#}Xw{%J>%*Ez@|yy<0_Mtp`&o{~i3<7`&ft1hsSH^4`_P<^8J-UwREr znDxsCSDl{5DW|)Zi<&>^0Q$p2Ic~EnCP$v6;W`j@iWCpEP0?tKC!PNg3Ck&>_e8%Q z_I*cP2zuBg5yS#r+$B}LYPFOmgud@wSU;P*eufQ!O5l_+C|Ds~B*UD?P1|pHbScZR z0sV#-hQFDWcZ?SpbE3ISd6Q|k6RH}^m z9E8aa;ZoB8Sc2D3@O^46l5Hd%6s@AshhGgpbVO{SGDTen&d&=t7AeUFZ|e0}Kc$^d zE^^r+ybV@8kgrgb97Oj}!N0mPOha%Gg5~gbws>j*VtXHoXGfeIKd;jTC%J_)y> zr0p0!!6M0&Y&QT_p}M+Jtj5CoC>Ul$!7FKp1D#YKWF$#_``&KJ5bs2Chwgz%7n>jR zrz?T;6D^JH#NXdL9h{}pRh3Ox*Dm6s94W$^KQ0HAK}h%K2*c%}in4_d`LT&RH!7^c zGFdm^YJyiwuf0JJPSL4Je|R=QUNyB{>fIouWxFC8moR796~aly4WIA>UJt~G5IE!J zw_C6_fysU&Rf^(mmiL5(W4iO-9U5+rkG>NHef{r+e$ld=KU6AzpJJE%m z;>#-yAS%X6250ZnqQcSx3xP`mHAov-SJG)z#{G8~dk2eBZA_8*^Sf0p2X!g6{52Ww ziVS~~1q@$g7sL)pi^6b_q5LZCBFV_l%`V=^2&77UMcl%g-%vwdmfbFXuj+4HA~0?d z+&(WGXFpU;=2~gZz!uoU#qZ2FrNk_jhzu+a!*H?bfi6TmWU&Q4%yJuOB}ewQdQahV zg))&LQ+8mp`O&?5C36!wx5U?MRW6R zqOfg#$|abM0u>JIS{Ib)*az$f9luzuu}+rwX9%%*MVm zRb$%cL00|duAk5V6WGo91}8R?)4i6-$U>^xKU^sxXIO#&(aTVfkU|aH$a>O>fxx*`ndTI}h@1UwUsD0k{S7u|ypZ*$)MaboPD8(g_cjKJ z76!ss@_(bv<*NTSHg_yCzmZLz(7^Yw*%R7w8ZZU*fw1{U-lAbcS)er^RWwkW$TDt0 z?SI58K!m?`^SvES->^;hL)IU4VwN4$S2?@( z`okKzZ}YPA@RZR_k6g^e3k?VCY;=A!xc~ky@4vtI_50~RoL+R|S)i!iL4SqU8LGJ3 zKBD}L`$yNfRwO13L-wy!sr5TWL6gyJV}TtG?k;(m2suB5hjE`F$2Len`gfy|mTN^O zjtslOJitqfH=97BuR?{MP<_b@iL%wj<@`#Uc*{zK(uAdwpf@BfE$4%dI^hDT-hA_oali{Y%_QJbN9l{ z!0sLjef}ZhqIFi%whd5@#X(1F=>#`7jF`)DSfz@xtSgJK)(aBb5tsLZ`*WU8NYR&< z%k)6%7M+ml$zV8o;*>lz5EpEjae^Kh=*K&B8PWF|voeHhlP84iY`JHcE(&l3r60Y(f__y46w{P{L6pN+{!T^Ktn3aoB z0Vj7}j=ve>7WI7gTWI|5Jxw1Krc(#n_J1u7+nzX4AF!zSJ)i|)0Tv>^TM)_Msp8Nw zgcgbm5@;PKUpC`12cNuVaaahZeTUsQ#J`nQ#J*l8e!-T{X#X8z87x%W??`(PW_mtn z58gtEQr14T-!0W6)J-n}U%7 zV!E46aOY~aC#EnA$Sr~G>h!WE9L3<~R(kjsx4>Y5mxV-jktLUjzthO=rlDOfJg6%| zG02)-hm4*bsct0?{W>h!n42z~pV-0+mk-fC(fCgQ4`su$7M}DO*zRlZqpbY48}Z>N z(X;RK9w&E#y4>E~O6VvNuE5$CHwX7ZUz3!Z2H+#?R+`)Ne%n_<`FZKmChYTVZfpg8h-|~ziQIqL}CIW1n zxFrD!z}#t(sk$$4a;KI62?Pgs=oHGwTg z?|AeEwd299I``^U8a)>!sDyg~i>`jz#H@qT;&M2>gym+*Vkq;bQy@~6QS;tji!mc; zFd!g3Nw;nJQ;1LY9L#2u!;x@kxr3Q>z2(%KG34#$Cy1-cc{%AEr&n$Ia*5furp$M6n|n66-rsh`EiF?7pSr{ zL!`JOBOFd~>+OiqPF)2dYrmXO6NoP1O4OtLG~-{_suOda;GSDM!eo=ABv^gchNrLL z0-Oww*3kG-#vdM>1Lc}ykC_l=wOLvNHEYc!Ui9v*Hu!^oR+~?I_xKZk z@K0UC?6__cEN&_L(U1Q^|Lq-pGwtDB?_#$09((a?4|)UHZpYat8&ci0k66TS&{LDmcv(o|ZoGHNM?#l7>wfJKk!3FR>cz=0I`X+qlfCr3 zvCs|Kc?!QG91f{2hvB82$@%46ks;GNuqvBY=|*yZPFj{LXNpj4MM_(QFtYY%S~A6n zbxmBhSKWUv?&XU5jQGQ4X7GSvN+-`thA%jtk+sswmT;k}eb`n}o$%Po!?l&6qWIbE zn~vF9l7_$Y!AOoEKRGmTdCYmi0)F2oOL?N%dwPAIG{}mii<^JR1nbh6d62SL*f~amq zbCigYOB6PUP9($t*~C%sGT|GJCLVs%cY`DQeOePcTG?%5o(Qh&D(-xPo}YIw2opmG zx47Q~8Lt<7L~Nvg*lXDK_P6@MFUCR%=9B14=L-r(;wn~4z$kle$PxvH*mHUQOn>Oo zEa{#-)X_kdh8x&(uLv1p zo^Ol?o!`dECkY%yND;m_X$wj*RiW4f)q z(c}+@I!IBDvyOX+yC*dBo4B{A7ek=&{swwgK;w`)@0rQpXI8RA1q6e5tQ}OHKki8#mKJ@QJEIY4%)7&nnsxQ5Hlb`pJ}9IHrS%4m&(xMC$OP zn2=}uS$g!(Fy}mdGXYj2^ButR?#NOrjJS#d1w<1%+F@{$AlC4`i(?YebE@$|pk9SW z(o>)C(dJsrKwBPb?5ygkzLky6@c1WyMBn3#Cn00p?DsU(bXPXDf+pI~pa0db% z8x%+v;!CP0)HtpZE@T~F5{uaJL@2MZ4hJ|_rG%5lan=oYq87Drk@?%<;Ww0t^o4m~ z&0E|N^7zHec$Em7;)iql@!7==8k3!PUqhQ0d(V@f2pxpNIBSP`*vu|xrNC7yaWEYX zki`vy_U7y&>IBj>{;5y9YJFVtn$}+`_JW`^Y{L3hO2N-^{ye>8Fq3pCuII&|wVz}w z2E@pHwgGa-S>61ZmjPCSmGr#ReEzr3cW?v945`tf-<*V_t7`&m%}s443oj7JxjY!- zC9hk^#tTUci{V0u`|#_Ejzf~W;!`-_V%7OXBV$eMu%}n zs_2!g1IM=)j7TZynMF(^AFW;Ik!M(qH#_Tam8`p?kL!Ww5(m&a26WA}wgxwQfyv52 z=Y?;JXM0ttd{vagI9Q}1Y$~b(iKCRRI7Yjjhe|1&Qi$hdAwHF49trFNAZc61W(2IM zktHQmv%R&8do18OqX^ctb?_ftyJ^0ZYgm9&4FooNy zloX`lD6Gq3Wb=6zwbQhvbMhY55)T#7lBv<3T^t{ezUAU$J5lmk6fC$YA#&1H7$_X5 zX3wt7K+y~6W+H_*QY)E{wRbIrPDsmFjK=*6H-}TDyo(SJpYpQ*E96 zILC4i?Zt9w%TVOnZXFJFsWqfHaIQEMHMx(s3%y6*6gbH0W-3H5d(svl0CJdkl;O^! zI_aZ;bGaO}H3S&-9f=e&Ot198RrKnnFXF|&0DbVSzkXRP%5O=Sw0M+ocRly=NBx2ln&&c9OEDG98d3Z`v{5Tj&v&yd#k>A$G&n^9dD1)$$d)`e>E?{}i zD+1ibwuogynrf4jBSoB`V|ii5uTE!Q4L=}T8mv6#-j1(5xD>Ni>^eUeoR@(YhK#^m zT)vIAvWcPusj!xKWua0jm1%^$p9ZaNR_~k=5xaKDt2}!A=SN-K)mAE=4^Q4qkXPaD z=^pOkL-u&}GFJA{*l-97-l2X4%DQEs1e=!TPA;?Opho8lx}{nwY>x-8PlkJd{dDln zaEc@))6wCK!H;{x>1fEkzb|k_lR1LOcKipKRAinZS^5}EDHjc)23A4Yh_WXn{Dnbz zB0hpL9y1Sl7uPK?)tijj1yr>D6i@m{_EvV}`NcVU`v@@vKnMG>*vQ=bR3E;8QxXX2 zEIa7XM+pQFH6MAi*0?))q0_ust6dig2N3sigZ$tQ)3C<|7|v_mE{WIw1v zukYnbU$)*3#^d41GkR0Or*Ue&pG?0wKAF5nj;Jb3sm+%6Btt7Ix3?l?_ddNwX;Z_E z8Tjc1ZloQ3I|m=u;s<44PDen=IfWh1we~}6Nj>8D$ZS6Q*1zC|sk=kCj(F2*+a|OJ zR0`SfW)3wulOd*kljktb)(>az=5!d7|J0w6^3@nY*;1uM>s5))mzX2dU{1yJFS@00 zDARk6+96@s`VU_=?a~>C zpZA|Ve7eo1f&g6$0(8w0Vh!P;^I8q}>+L*y@p8W(ke{5Lub-Z*%lunEf_#cS>4!#^ z0=)OPd;8l@uL-$7`+%FAPUkeB_&#$1x}FqH_UeXQ`{4fU`RC*xf0L68Z*Ly8zuMk? zw*ADn(mDHZ{&q6{bPjsYU+$BhIeuOtS%l!;S356+1^0HIzI^hKHy{#8_;A|9Y=?^o zFDTJ_Yoa#3V5gq^&QGZSLX&kw0Dc?0ws)^}_1^#iXD_@)sB;pS$z4a-)sz=41C#c^ zJkFd0@uenY zHIWt`EdN%PTRy(iP~(C37Z?4!ksE_?<0;c%A}c?=olnDoHE-x67!a1~uR50$!4+9{ zwf^UPwexIezrVM&yYpiIs`INV(eE_-a8vvW&Sbf`OIz*D-u{XWVA%A?gkbTg3V^GC zX@}Fb*IT#$4bKmw6kWR*tp`E6UNl<~EtORqA?ec(d$4=Yhi^W>{DCSmI=wiR$GC!R zczT8-tguijRre7Uu$cxPl#KlIvqLQ3Vp_HI8CT@Mrv31EI=ML8k&w{?VRVF$%8ULR zzNu(@9PiHF#q04?JJZmbnv7k5c*rMyn ztJa<*L-!l*O41hgdo}m8bHM9yBR%0m&)dMH%}Xje<+;zuf6&3}(l}wuC+6lUa*;bD zRa$~3GIJ!(DbFYe_bUwf$tSkelm|_`%2FG<6+ZC$w-Qpo{aZTvEMK&5+d2=RzYmLs ziNwcG#%~a4@FucW^BvB4;X+0c7aSLCB%NV!rWa$m7c)o+x?YF4DEjT--3YPQ;R2DP z;Te{8qJpbvIV6>PLge|wk9a2*k<|T(;$RM~(GB1V$&G|XZzs6+WHOwM@A4Yx^9u+H zdWR)$N_#ZGRo8S>V^a({;&g<00%?R!(ejRg3F0`WKU+xT7^ZoT_=VZU;UV17$28e_ zdG_fD1U+)66?U@}brh;F>d%uLb!Hra_}~ON|Bra{7DmF^k31v9jo&WrHR!E2?k4or z<_kF>xe}eyyR|gE{>(-bPvV7<#m4=ZQVExUYs%m-9kH!xcYbk5;|mNu3Fs2v;ct3+ zB%-kuufEAM;X%b|_8xtuXF6tWhdK&}x2HJco+oEv?_gIC4|YR;pq6dQ^sio4t=+oTWAxa0$V6q za$*O&KJ;NYIXf5LUX(@QCsg7>-F9`3%)8K38Z(~@;(UR9L_w#F$v?0(xp8imFtxiEMMOsRky z6@@O+kPOC>EM1=>&w37vGq1v5nhKnE*JE*=ll>(OCAmf`{oZFvFUif$b-1v3=A$^D z4ta$gCg1Df;Q+21(O~?rH5fLU1(3}Y$hd!Q53F@0%}K~!l%E@_ zldLWE-V&*6q-Hm(5xKXupOFjM06)VMsGD^hzAMF5Hva#X;NTf2{T+vqKjI=im)}~( z0hWj;;9zQmsL2LOj3(+yd}YF>Smb|K?+B<5d#&Fyb3>l;r2eZKdZygiu(nL8nWvpw zxMds%-)d`ft_P4pn!8+PyR1(*hk0(cQq4jCF4q<#1+t~al!Snnm)`M&AWYi9@dQy= zpG>86#ug65Yn}k|K>*8~1oEU*JzdrN8ZA_VtCC@vgId91ZZEfs?30mG8}pQOS26b- z3W;!bA%&8kVl%qsGiQ#*YiXgZDKiMQkg~YyJDV`lCSJTukU4L}=<(}!19iWT4#caW zYaNJDp4aaH>V6*`z*xwAiIr;+tBg9QyzgV%to2n5yQFhg*s7SgtEnuA4*kHyaSpW1 zKsl^f8=z&TokzPuq1dqaTA6=yctqEotW!)3t6gfRF`_)^rPZ3=3c?A1&^G~)`XvE& zj1BLUcIhvb%!($8Uhi52nh8^idQvV z>oU(dO%N*-JY?;wx>Il3N$*cwH3qDQ|8e^ZgY+Hz8r~b6(CIoIPU3}b+U=xu_V?rV zl{mT}r<;##jAHVO>+fi9fha-)>1a>Ly5yjiG6?f;{^hiAO~mj4#5JFu;;Lg!A!F7= zOuR}lnslj6&*4|yEjggmd8A^<0*R`$nJ#FjypdK)(k84Rnow!kmR*!O{deNLYefKC znIFAz7m?oDeR$qKdYd@>(bicbc;g!I(Gf7M1PQLU*yRIYS@@?kIs{wZD4RJy?rBRxa zor`KiT<>P`LM?#>1hm0oIDQGQvEt)25(1(w zHxl!@E6r!j>s$fBje}<4n6O2Sbc-=`R6}-11l_^qfJi94`{{fM*vc6;r#LqR2N(7} zfCS_cVu29>oFL8?qK?L2To%&<=XtOEQS-7}jtr>Io<`Gkv6BM>N|UzQyS&`1z)@UfEy5O#93y4tLQ675m!2vE)ZVU)pKw z07h$x9t46VoO>u6`zhh;7$cH7vJuwEFrig5O1Cky#m949IA}wu1W0Uo&$?4b&g?~;#mO$1=2 zLmCZ{*J9cmX=#C|Rp*CGqGNxU8+x!{`MZgX1O*Q!<&%E3@ZXl~W+2zs5w@ry#>R(` z8_xRh*HCSe(}x&|(>@Lz=PHey%w$TL!5f4U^xUyzoO0&iVkwjH z{JEaoUiC+~m0LO4guVipQ?1)UfHHHR8P;Q|I)|BSVeN5dY_lq=JjWauwbau7jRPrd<}lqq=}BzTAWVwD+w)d);(T z2VY}N_MkqELV`6xp0q6}jw}v;!>6fmV`&{*9DlkP#*XuaMSv;oLi3DB!J688z^r@^ zl0MF9`hnCcJuW$_qp_kY(6g5edWi&t`{Y5olxG}}caOjQ$8}pm;6oSOmTJm?Damfm zRWH8!qd)$qxA^($pZxNd|N6gp_gDY%`mJ01{|=r-KlSYV;%GEk4+{MH#rf!D);s&) zrpMPagx<+W@;F!z$GFq`ktASc zF4EQJxrFWyPHx{0^S~8#+ou{VBMtc{9vCb#xf$iQBk8uk)LN;@vzNCOiM-=I#@_Z% zd5=7{T~#7{iTk&4ZVll*Ep@bb%qQn7D!WmU2r)S7L#v#<*B39Q6GZBr{tQIkX8r?x zx~uzX$rE)HKAW6>fzx3}=9ONiq!syHt|f9mWe<7v_DV}XWT-vz8c+PiWD1e{SS3}K!3odCxm;=6i{=rNZcae!J00&bzleiZyN(hsL(pMo-qA08$ z&nKi4r5z@s7@xs3*^{&_P7r3(Xa+E-^EpVoA~7763)(I5yFjOJTi`xM@Nj8B6G^au$I?VT+R(2 z=fUut@^+WX+gz0aJu9Wex4$#S#C-#|KLWGE_;USm6jgTZ?L6zh*nR$ZcYALyloIZ0 zgUdsCC%C0DPehi2-Fp7?#gpy*?HIy77pM!en1`sw9xjKYL@i)(ncH)TY6O2=1LT5E zyEsV$@LK%jDK1ezGmZC&jOE`NURi>}6inNFf@+mT=3@*Rg;+Xc^HMTzrJUuS>e#`e z4_s)-0=At4H1JLxWMsglAu8|G!R7Hi!l!ev^K4Ux7C3Kd+#J))0cXR#%CL{QB1-yE z=cl}j3z(@$!pXxkl8!T%NqVp#yvBMSzWbfN_0)M2k358uE6q>xa}PoHy%>tRgCLq0 zz(Evy9&-~Pv3D6k5(ijUE7q#wW8jowd2p}U5RYm09PyXU{kXNub}E(EP$Uev6NHzV z41fnT-SH;2j2rbdi{}O}ZymaL|N066rxk3h^FCE*%;Qt67nA<*Y;yRve>#GeJ?n-y za6CI*+f3a%NLb;IMNAs4qQ{1FToJq)Vf6yk?n?6sJ+=4d`fA)!7^6uK||=Bj;;gYg3-_TqW6?SHsHP7dtjgygUF47P!fI9&XsP1Y}GkHphD zs8wsbg#B}uO}FHW6l8XYE2Be-)Fa6@&7Rh9i2W~k)ih$}J{Go=eUe_d@oT;J&|nH- zm)&7#@q|6%1xqeb&F;FNZdP>n}3EXiMp z1m;myhu0PTmF~NqBt~{C@9B8LH0s+)GIAZiC(pMYJ~8KjzkI&8Prt=mc#1aG*CqY> z+sW*F<1g`19?~kv2e60p!C!7adii8~xBqhY392F2Qw`wN`qvjY|394K^yWJ30LJ{S z&wQGrb!hF**|7KU@%Gb)$Q;mrxrcwgeExKs$W-$}%(LZ>a78MUHj9M;nha-MHi8>a zPIO77B8k=5{lHGUtFY0$o=i^AruZ|>g5?Vkgm%;eyjs6hU{~v*kTm(%5$q-s4*Hi! z5y&y+C%6OkCkKh{BNdDX=BHK`Ztq-=s5?WvUvsOHdLT zm$P{U1qclgckr0zhMG0u_>aH3;-_IEuL0yv313>{Q?zxVm!A zz%>~Fa0nu7eR~jUyb9$Ahp4myad^@j-aEQDJ)3nsFsWv;U=x($-3lyp%foQxjbh;$ zD)P9+)dR>06Y0v1dl>obzzD5+s%$#y7!KpnnrZ_tAoUiva0WR@CRmk=(>6(-o3-|E zf9uO7nv*D{h3#4DdAdMF;K~Z!pXb$Z?*877^7iCVugQN1(uCT%=x~cpcu!uziSp1g zO$-<|dP^h)mJ=Cn1a#lr6%TEwn7{)Kkp%U}KVC2C=N4_DJ*H@Sx&2$8^Sal#MTDCg-HM98T${h-J6 z-Ofw0bpX=f2!U?%7&Dp1v0D<1lHta}1403NMQ@mHU{wz>Jkybv!)m5_MeV~L_L(oy z-2-Bue^7*9e=zqqIf_X$x-amc~*a{N2SOn;4?~EME~`B)AZR?IP%R9S?F*9Qxs*#ormshZq&Dqkhcc=-CA^vg{vnMAiP3<@87ui|NcILi9941IKVvsnp(_hZio`OriFIhk`0Xfv zc-s>Nd4ruOHmhZVBw8#1Y&Jj2S5vm+Ms2s2Mxt)0LmXvPxS~E}g;He{pssq#v=ka%PGExdWSswp92>E|bYj$D=S zf$y1EC3b5sl&MXzP<^dGgGem#u1rc;9F}aI^3{-Vv@Bnl_FECrw z;}pHg2@J}5cZD?QXUuXc@y3%0qL7Y8)7h#sf#LN6&%7U;eB&7=l?kjx$~yPhFmv{C zv@DC}VP~NN;zV3L1PJ39D7~U!{w70m}gpl)4xnGF5F@eC?cN)6V!(%C%uc z{A2(3xbq7nM8i6^(WHDGSegX64BflJ)jhC#M&k>veV7Aa3tZGRfdfQ|H|zBlM#ww1 zFkN573&e&>Jr0U=Ut>HGia(id-p6Gg&@<(JjLpvHHiXmXz+yl5-~~iBDhe86%$!rO zudrPr&$#>oY@iTQCZ&|T|KP`;{soQzY<||i53k#y$@HjVyY~C%HekaIfxpcak zxL;*!+Q>M%nxL)4K7+20N4U~Od~Xg=Gy7CFtD*TJ##DBSG2nF02~01fz|wJB<*%^-6-Q@E z6nN=4jfv*3Vg<{w*$6?pWlwrjf!D<@xp4*LRH1vMhh%3wezyMCqzc&^|7Qgah{%gs zi&vLq)0Fcj)%+gtnnFLs`6@Ac`GXGYwf?0Q^XW{r6@`=`_iisN<# z-}>yPV1{mnQo^_zm=PqVu36V)-x|w0&Q|TYgJB9jU4@%$!)3-)_HMpWy0tZK`ECe2jr7%IGQeaa%H0?83M|z zru>k1-&B?YMhM6dL_~JQfXLJY3Mo$vGJze3(E3N4Vma~)CR$cJswB{p5FWhAPmTcuZoVJ3*bkJ+m;a?z!2qtjQNg6#w=fn(yPeQFP3LCc1Co)B=Ui}Tr^ zqi5E`mD_1}{U6`{(|`Qm{^Zsz{@>KX>)(vd*ZZ0PxR2O+31Uy<;k}E&#i_rZoKFsM zdeUWs@j=?3<4A%YTGEj2P%Ie4A&Om#iMihv``(9AGiKtRH2(eZ@OJrr6qpOuF;JlA3yn_N8&2Pi4sm$JMaKiGd!(ucPXPOomZM?14zRR^D8Y@1h~}wu4yF?%|>W>#fCs@w zIhGq%6<>h*`s2o?4r$&Z$2ETz+DryFlE`RS@nNWhso`gVOLQYyV@}>7;!P%p+3uJk z)NnSUOoz`CV5LDWuBc+(m>R`!gpo$|*tFyY3$L)ZW1vMUlBQ0Whq9p`j>I})MW(e9 zISJkm00^BQBpJXC25wb>$Mwj0qR=YNrN5(Q8(J0>*|7;iON+?FE1G0FSj}ZIXw_S~ zezE7!_r6QyS&f=Ik&DE*21`j7Me4v)J24~6@iS5cX1EiKE~R-K-}IFkV3>~#aY)}s zlZrUIA_AkALUcjJumy0aGx1mTz{5!JxA1!)J!?1n+||8dSuK+z9u6p zLe`8s(DKQvV#cUsdRI#rE|8g=wBf?SvSLLDHLhwEsYw3$s8mnHB*rTV zjKQT6h`@rxy6f(c(ClP^m@~DdhS&;*+e&hA3^0w4hPy%dKBLAiTfsQogWE2S0~zil zh7gWx&ya54Yhs+z0}`G$YD8$be89qLgAf?I*L)5iplLGHwsV@dfk8q!ST-=8w7x5!*nRZUjsg(jSjHA%F6q;2M!=EB|Eq+cwWlUV1qqzwA zcryOu$#)>mQ>uMPLFU@@0?j{$1Q)f#|3)#%p=ferr3_H4U2VxoYx-oec*Nx?uy>UG zj+6#1VxLO3l1MMy%J;~n2iuMrzM4n4fdInc9D7mNS2QvXZBzw+*0#!BQ+U_sMufZV zzy!8A>1ayE^(3>0&;R7kzxe0>{;ga5zt?6DtC&6F*$ZR-)ve=jTHKh&pL$Di4}n3j z_cDuE^;=&iT3v0%up`S7_Ffc*x;*RX$#U#W{K#75jHu*!(t|rUnio2#&U%c6tje*` zM8r*rTmw;mVqiDlOyopUz{r|}Z5P>#{_KsGvq*+^1zs_cFg1&3X_XRR)F~fE(Ir|> zW>qFqE;>=uQ!{a*QKqMy=S7Gt?#ewz34;8U6ay$#Ruxeb5ilkWS6PH_8Cf1>ftyg5 z9kDv#Z9$m2Z$@WjtoU?zJ|N98ClN=hZ+$fe$97iS(K2B}rOyaUXGN5^jFO9;<3g73 zMP#CRX$(Jx%I-(p$Z9_({?+fQSU1ZGn2Hx$0rT|YppGenflgm?)$bIu1jT&E4NY|L zwJ;JdW;UciGEJG&bo0O=n<6(@YQP5XXAtynAYtbLK&gj^Vp+TU^(x@vnT`0(3T^eOz?1ZC`%Rn|2?XVm0QTQOeCYDVe^iglmG86>y zrPfz+DSM6 zh-z}SEIKpMVl)~bONl$zWw80VfLbvC`-Dg<8 zDs;91Y_YBW#fA8jJtT*dIc4t^p`aCVQdq6%SWeo_upg`w&39wg!>NDCa|T);+|>zo z_tjNzaLR+?m{*|v={hWpHAZ=^C#5mR=m^GiLyh!R0JMIY^#cW?QiiHm+0V6C`BWOy`UmhR6*VMhehtTc)W7(m^S%@8m@A zOOyyQ7JNM7rdlYH-*kxF^0F}&3OvYRC{e@vPxJS2JVKctlXiC1E_oxa@_$4@iZ2cPmVT_gjz7y z-Hs#`dU>R#>u`K=>R)Z+yFN{~iGv|*6Q&9L9HUxhvuI3iiEa{PFki6AF8^^B;!g!N zJqac=lcvSn!AzaM-NO?EN{S!KSd?xi55^z5BV7B~qZ5tJTq!4RJU*rnL3Q}C|G)O$ z1-RAiIuD~{>%~}(6~`|*bzmOJm*(gWUJay;XXYrB&+cCDrpO-J?A_IR4{yNS~#Ve z|M&sooO`cEibd(ahXnS&_TFo)yRPEN5NrJ z{lP&Rb+hP8<1Yg&+lVQ^0=9zPJxauJjeR_q%jD=~{ckawc5K$c~w35=lum0{I8;ex9t7NaikC5g)oTSN1tK(>IJ0 zqp=2p8T92p5iKd2>)4jrLcE<*m_LCDP2cn5amBG!W zuaF#3#SZ71B5f&0g~r8UAD0&3PUcNqF6jud%yon`$m~ygDk1@<7 z;}GCVEvYc3UFM7dknRuSzS?~)d*xdSa-duU4%;iBbG42ZBAH`PVR;dfRRiWMYY}B4 z7Ect!ibd$_5v%LU>l;z2B4bW3zudVgbcTQ?M)$eBc6 zYI}DsJhY^(j1C$x+9iz%IV=qg^lmO4fozCVmqT0xK3N5*Irg;58)Bl|Em-n`oTN(n zw?&=VT>tS0AAa}r>(|!kdB2^xE`W~b%yhH4ExXdTo!<1U%(^rMl%KG2R;8Sk%T(DH zrAlkGPrB$5Ic2(LO*>LN!XYz{@!d7pOkR9G=EgkbQQ=4k>2Y?_Q4WCp1uH)fPD{}( z#W*e0ZnR+t2QY{j6o#iXrOWM&tTFdhS2UO>5tGXH%4f0;?3!_zm?G`S;Z zM)z%rL3FrgK?ldvbbTK0GMY(pXei4bw>1_J}jod zO@J)fpUNU4RVxUf$gM3)i(H@Il(VcsBRzGYcwt@JRCUqEpX1qeKq{e7up!P>vGf%^ z;LkXU+8Ec!i`gv4v2`=lu_;$AOGy>ngOg1-|E%SX$%BYo3>n!Zgnx-eW8%*VbbjDK z!*tZQL|0JLi=FeM9X-m= zWA{CfRgO25F-(Y{A2~FQl}zs$sMEL;JK(z=W;c5x(xRQ2oYmfQjHVMffZe2N7uWYbp z8`#36?GAAxr{)|=wQq^d(?FI)dYR#Eq)ZG{Y^s3B)a=-IJ{RZT;H+BH)Gmf(=E=UH94ptF&P=I-g$IZJB(Sd^WkU~|OE zG$KO*7{3WYZHpR1RJX@=&J7$NmMU&cfX7GYhR@?x3T3e2kR}Arl-CN`GVCEE%EboG zyc`M)8EQ#4cXz3*1sry6bPLRyqyuHCo4p%ldXYITQ{CY-Q!7DI&EB{1F6TWTc3h5m z%dgwtSpk$9Br%HoQL|zQlt-%zm=oI!LXUzDT zJ=+;B@Rxn1s6^Ns=qoYe@Y-pV&Y~@sG0Rvo>M;Ew^s3Bp>tFup=f3`3Z&_QTXJcvH zT3*v$cdP5s2(U6+NG8rrkF2s)&>d#f)uvL%qHNGBVeL{)N)gsY=orf4_oK zvBU0Q)`N;=c?s}&g^f(R9ooJSvQQs)%e_jiOz%Bf@UkIYgnoTYVECujyv3gkeCGH6 zCUO?(u|*`q-(2*6E(K>jlE{flG4Z{`87#C7`AJDuk;#`z8|(ROWH(-lr%y^Jkz67Y zrFt@jOeu95iI_hH2%dShAp_bm5xqiE6GWB-pUqK+uf-yT$VDa{FU2yc2$EV7F%e)= zuV;DG9;x6<-U@>i1R@;9fhnQMLS4WXxnUi8N|vF^g_PAdXiDvVB$JEbl92BZUL`qM2|x znHzsU@pAEflotY+*Vc_9{;7B&LR2m#^BG*uhJJ|4wgcCWjQ{3~|wV_RlPIOQiU zR_s}A-dKwq>8V@<{s=b)ly)=ed@+TToc*IBSSreTqRoYE6#gl92hH)eNDGp0U^ww~ zgz@@*E>q01H^#H^Hj43}c!+2&mqMu!Pi0HUiOPXWtm(~Q)M<1FH{y4olaxrg%R?0kv@NW;|=rCiwf z`EcgGdjs}GWp<@p`IcHPGGVGnSKx9#k1~P8CZO1(XR?E|YN>=h!cvJRLcYw>8XPjg zLEB=4E<~;)ODPh7paV&98IB|wNR~Dzzrk{mOhZEIJF+GLN_9NvJe$E7UNbw?CY)iu z}> zWJuSR(@k9%hCT;&YDs;Gd&wzRN{no5@nq(9<18JZ%r))g^G@XK6l|0jWkaZM@}X+J zff~EPi3FN{DByt?DR`<7Mt`fW%+uvBiPyw=XL=KFi2WI33(fvbf?(j6zeGshV0&tE zR*Ytf=06W;+dY zi5p~6*4ZTmi2SiU4K2FlNW^FtTujs`bHfHKj2$^u`LFHXkYSn2W(GU38r$T%FD8Ke zrftX>@H$I;SV;s4j5Dbq2SERV8T5`d@be5b7d^1Wts*Wkr}mmG?vKln?V=XB%ww1# znM7ik5NlKI)<71G+RT0sXiE61Au*gvtPxOFABP5{)}wibbF;Ch5%z1nWfD0xR8 zAWo_XFvK6d>3D+D<>LVrDOH&nrYni&%h^zD&0$&=rm{=-@Z_9qS5i-NGD*-Ahs=xE z=hk3m|HrCWSkB(U&cwIR#jZtU0h)MK@Tq`hN4e+3CA;AXY10G|MAVdlK#u6jY9B}q z2}7k>f1}XLojMd);~8j=H^6N3`dgzh_vKjkl-Ep$Ci%gsIb)@E2b+X9e=Z6rf6-WZ zpn(R>LIWPW(!N(K@qr^IYI2}(a26ADNZ6{0K)G>-O-|K?qhvI>*Kk2(+l9kwdUm_M zQ6n-R7a2BE5CF;>QdMG^MMDBg_D9Lv(oN8-{~6jqwj>d?tnK_Fo-3{umatfg($e4hLz$-T|HSoCw<#%YJ=JAq&Eu%tYgDmS=>wwM*u#?3$dnk~C@>{F@ zyfOAgr`1kj(SWb^1Xmhd7sJu7m$ zeT-~IcQgP{+XB+8_o&SRvX~~Z8eR0lo3<8Uo)_cij-zm*UNU=8FEKu6g2C~UQFrsT zmu$QhOID}Vu9GwG^mr8voPRbJGvU<`9GrX2ER!>(7y)8zN|KFOevs8s*e{{n~*Q4Y!k7qUrH1Z0@hwpzJQoj z{r$(K``#cOBlz8Mn94h_>-+`MHN7rvft9eSRP7+#QleTJI0?8!<>=dYQ+iul?uu&Wt|hgro75iFY+q!{UU!VGfvK+i>~?W}!8FpbbU$fA9xb!de0)li8Q=!Y|u zU2I=@rP`MZ=xh*yKH0D{s*|6(msR^Gta*&k6op)TyA%IU( zj><*h;FF&GJhwPjKuF1mWazSy$g3~K*K-8Pkgc3rpqI)He!RjE+oM6BWCO)gL%kXesDXFi_PjN^)whMZhAn1 zjDS$a67&Yn_L5j*7u(W(P`Kg^cV!JaO#YX#YXk@;k#t=iwW;0?KQxZp@v1n3N>gMx z;>O~6!1lF-)I^7)I^6&Vz|$dxN6HRLud|2zMCQ@yX?nOr3Z1<6M9l=C<&{(XTHa0T zYUD@hUCYw7EDLK+y3uMAR=#b#M(dI=g=?gF%2$aJyl|r@hHRD~D@bqZQ{?%$=s1)S z+MsXbkKHxZH%RMpG>Cm@W00sUu*O+vj&C><5Z~bFA@1fw&niAJbcG5dG zV@?f2BO0%0z*3i7E2n{~E(lGO1@d|UTBl2JP3TfRTKIJyajGT3pr1EmYzAS(0EAq# z>`5|&^Br()6gKO`Dk$fr;@rYyB`fF-G&7Bt%@}EoDI`+nO7mHpD0nO~5gE?#pNAx* zmX6xY!j_IrlZ2!vap39>%GmgZbf#;SMV}&2f-INeZjzNWPUYKJNDdHB4joB`Ynh&XqMN_ah zacCwR^Fx7=^O4u)2EvaV@~+gELS`}?lG=))UT>|w=;XGIvR9BKRyVlzBRC{Jc$Q5a zRm==|pbsQTvFy$~34rE{24vCtb zc?B-qdQuw%i-Uv=B-6I$tY%@h%Ryjek(on|g8YcVR3jo>b9$W6HZc>;n;RJvd@^zr zvBpVx=m2$(fv`C*Y03H{mh_$J>80wj-6UZB4MjMWCtBfn)dv)xI zlM#l5pdMUXEEOCD;kFkqwuYQNN{0gr)u!x%Tj?jW9CBcG)ULn@0R~`oLJ+k3(D#)Y zZaU!C;W|8kKN?J%EyoToeg)^JHmFW1W@R1MU^F){9PXNp+RfI)F}Ud?uE&D3s0xk* z*Xg7+7@=?)^(U}RQ?b4=X;A_Bv7 zD$kKBrBMK7z@+FOx65IS?5j4bJ%+A<(8*}frBduPIQB=E4VqcK^y##ZqE7g(*TaQU zoWVpx9;;we;2pXgdq4qAVK^P(f*~Ei&ua^g(^rFU40>{DxtMPQ$ZF zZ?-WKM$mDqJtRntb_3YNMhBL`#IYH0zn>ZGJ=}dF5HC?YozRIEX8nSRVKPdH09mQ` zfrKgw>Y1Ty<1|QqKA3JeHi69z{5C>BOIs6I76<{hA=;+|Yvef6_(O~Yg*ivnHnX!a z?p~W+Z6WxKF9H?`n`5;+zhQymR6V^GyHfns0MaZ;Vw~dRd@jB=@9yBH>e2N5W)**;e1NPoUJ zqBuKIW}qy?oUo0#p`-LV{|w|nMOYdT3;p%#)mFKWQOgB_FnxbaQ{&)?mFbhN__G05 zk)wx!+X4}^35wB@GS{YwWiy0R0~O5%C#Km1Ctwcv*fe2@I5AV~6p-{rmB0b7*MNmm zYr|bd;c-oBp5i#+oKT=MhQyj&4iO(4O8_>On1)&a9Ccz^y)qo#@^!i0WdTXP{)zsA zSwIRziNJuMH>Q9URTh&sq#Muxoq_et#T&;I8dLZMw`ERH<-dhLF*5>8qZJ@FDG%zl z+#6ERRovtW3x-~#mXRT16Sej&785pB9vZ}tVHffmgu1Rf2q9w=Mu-Eb4|^Oq`0T|1 zi2jf?V&D~=S^)9-Y$-wx0zSAOfnzSKs4K>pv=(k!Z5Cjbq6x&p=^ZIvaGcV1O-jL0hL?HbXPb=jE}0CZ)2X zs17_?-4qOn5i+@SF7s6J>IRNo~PB6Peh#m)H8maISo^`{Uh7971}8V9kD zi6)GPMHFZ(Az!EI)Fvo#mK;{Ik6O2 zM?fkK)mV5;Z%HbT*y3EKEp$VLq%!NC_`Onx4Th}%c?YgdFZ0~RF=y8Hjtw;@83-rC zj_f%hmVs_mzOTX-fH1}d8ud}742y(T)QE6_05yycm^oa(z)KEt90Ss3L(Zb05HfF(zoaHr-3WYOe#Drm`?JX2dvf?wStcNj@eK4xNkgs>a?g zZ^5~QG@mH92^z7<>PROhkzzzmj<|rxAZ#l_HoS-G6sjF#V?Fkm$A`bD9We;1H%%q7 z5Iz(7*gRJ$>oAq^uw9)FreiE#<23njhK$NTW3aF zW>`JqRpn1<5~*nRyG$E`V`}S;E2_BKU+=BW7?j7YN!f zoIpN}K*;$f8(yIJOPD&FA{q{!hRZ=3gXsmZ4=%nVt@02Dh1py+>d_9#7Qg(QtUO63 z=0^`2Fz$)O2!ufV^8fOx1e`ER4sf%WwU%N=@*OcKr;+TnJREk(-5m7625b$$FO)+= zz3?_%d)`)KJ@7aqv?d%3xrqzga8n=l%h~E|j39k5d#(xFa!X#l2~2FFs1ho9P}q!V zM2J6FB+9CXcx#W0WyW8S6T()I5~ehKZseHj(B3%g+l@=pSoIJKEjAFj83X2B(gd#2iipi+t zi)@i3V;dzbn9CP}!CJj~om06n=)xx=!h>oeO!i3X+0F7pK2tip+$1-NhR6L4khP5| zB85|8QcO<_lY%~T6D^~cAs`S|42pe_kf-{rXno3CjHD?Ix-YAX z=H8=Z6Y8EsoMLHW7INKb*%Ny+IOd+KTF=;p#R4NEkhRuacp5#S!8$o@-i-UGL&Y=@ zpcI`{+7XmtybpFCL8g-3#7L(#JQw4%C#B^R=7zwpq;^y+EC=s1wE|H zVz&}V#sK@2bD{wvq!^j#b2+z#3rNE>y zWS|3KXV{^nGo-y~=U<7r6Yb}>jL4c&3k))g7APaAX*A@bYhXykG7QcUlL#cEb7IVb zL8xm1LV8hTr*pk;9f2gE;eCS!h>DUWLVP3uQ8Po^TRj2EtV|&Xn6o2x0%(%ESTs^C zja|5o2=&><%t%0P4A9vo_m}w=#vtSbX#V>9P_DE9F&(xxl^MJ^bR{ML(Lih>_?QnE z1mUJ07*8673w8mOhSQA@Zf?QM0t>MPDtVmq2EZFAlU3={g9)Kk?cNY#5uD{NGk`-9 zl4yc_=0jt($PgQ5J_TO}8c9S)+`8ZaQkbTaMaxZi+>G&OLWs1=Fv$2_YHEqmaE#~# z>SB~fd|!#SwRGHzy?`J@p)^21&Vpu@LCS+|Xel$3n`{Ni2S7adlF18ZzKBUsq!y7b zWzkU7iIx%G%*O>l-8 zRv?WASVoYk3g#4|MU09^YNZBcMhd+wSCf=Ope}QK=T!g~O(E<*BXCB(Co~OOox=V^ z0B5Eaff_2 z*n&TI9468+m^XrjVHg^v&%1AVElqj4t7TQY`((yb`ABYGT*+>q? zX7MPJb7YITY$hM)P8#1W?9$Ex#!q*0w%M)&&{w0PA#fhd>;lS-2DsIU%yTy32Dpow z;0^Gh@&fURA`;OEcbFjqfTk-(G-{7g$sQjMuzO3P7PdB-k`Vi>Y#-QIR%0c%4A+SB zUf2Z|L5QEb{@}eMr2QkhOw5<)V~sjs{y?44IJoS?NATxis9=nP(M*zFZfJw~u*-y9 zX+=C-)Yj~_VSQEW4^bbHq&#-Jd5oDDfNgY(nN7LSU&8O3+)$t${BFC#wk_GVR!)~6g5U-LQyw*3T;C*FWXzA=mMH-g6{fHR zx0K=q}MkJd(aXBioQ@X$|0dEcl2;?FlC&1j$jw58{kPbHz zb$dfZm9RyGEs7~(Z+I2vabw!&`7n$Sqy&krEtw#+3qVN%IzD*E^)VQS_>c^AMt>!e zl+aMY^l}ZGn;^8n1kygRE*VGDN9=7eF}?zJT#iV!S|2ihUP@jXXT-4Vv_)~+B5%{Y zTm>%FqQ%Q|b{KIw0x?_6ydVRz+8U7W48pKTr$i`WhDXF9dBCcv!$7t;vkO@~nS z*Z}~K3F(J8Hu$dILk5#tj~D}wrVtB@=_9bsV|-+^*S67wWebgIQObLqnJ6LaMNEq8 zPwX2UAP)wf5OpPnL!yh}b6@~A=EpKx;KB$v&>BoYky|1*^JuE_<1x064Kd2bOPd4a ztcvCm4qqaCZW7zUQ}l%<}C-7*n5hD=7>1KcNqs1O4t^9azO!nv_wObBKddQnVB{jt|1dD*Hl zxKWLTGcbx~JD^wX(%_h(y{q;&PEBLZTG@0Fx7c zao2*eyWmI7n*$6YFRh_Lg~gck*q>?$4^jsH9QULVid07@@)FrA!u439g@`Nc^@+$M zqM0g<4t_BF27yA#Cea%#vZ`LENk#RP$(Uk(MIPdWC?bbI%uRobqLEb?l>O!uf*fKV zOP!f7x)Ff|OY<^pFvG4;KwazR}`RgaK6>RC_2 z8+hcPG*+idV?{x5BzFzgRYR7~x}N9N)lhYBhL~C(W3PjL@s z(v&w#NwMoFLjr|bL+}knT(|g;w$zai<2TFTw(_yV^(^wjK+qoD4$+_9YJaE7RYxZ8 zIMY5lg-k@n_x0T_B$l{bDLWd#9qYktZ90x5BRrCrdyb|KyySb{_O6}he#7H_{#QKD z|BBc2id;LGVwCBr!PV0eJIA}w107oVnCJlyCB{v@ugtqdjupJVewk3BA* z-{o-!AKJB`>#~OhL_ztf z3pj3Auyi^SzrpOq<~=Py{6W?zn6FGJmh>k~AXp-_OV2h$_&~|0hd+ZiYcPo&>+265 zI0`Ik1m8j|;_>=AP87V7pj!#L5Xu1m>gEI5QkQ=|Tt|-1D@9Tm_-0D~vQts?T3!?Z zFAg2M@G>ZfiQ3L=bo`(cdO^-H-m4m4JFyW@8>Zj^`cfXTB6vmSKU!X8VF&S!_6m(E z#!B}AJja&=}l$yjIr49mY{BQY_f zog)U;Gqoj2Sk~GTTpSd^?lIvVNj3DF{GR5ui}rLs3_%gU%CBj_)B)pd#!HN883E;KvTk1n}uH z2laxQ2u8%X0}&DRhIoOZBQI&-WwnsZ)#7dLRvFEf8A4eLKkCL{D=CxXY!`@ zD^B0^&PoWNH%NMVu*t89#`X0AWV@X{sZ85lB$l9t_bi*>;+m-e@>nO7rOT3$Mbt-X z8`2BdwGqOX{4gdC=|yA1n*vW@e&nV+dGZ9z-C7^woQ-(LI0i303^c-(P7m;dTuK&* z0bJo;2=8M&uMtJeW-MEZ0goY)cG!xH?RjFaLTv?XA0m}Ek#p9jm5O5>36!<*hvhAz07LLkPjvECI~ zMwl7#s(}Mb<$lVz&a7ZPox&~9ZwMNE90cq6K*S-a74=zG$$mB zQSsL+Gj>3qro&p$gxa{gW6Gw+&We`1?K`z?Vx|(eiycpNv+IdGb49`!Vpy&LdXrFN z>Yk@n=!jMYnKp6Rj?3``yJob_f;USz;7T{1J>KZe=yoB(0lQ3f;|Vh~6LheZ21|1& zJ6_>l;gdYJprD4I7*t?ih=>LegMu2@o^4Y~&Nj5RqzOBIN838vRY`&OXBa1f?LSTAB75XPTy z)AtEaAY+aQTlQv3U;-47#ta-@#;FiO9EwL zreh~1VmUpeaMst)Dg66HTYzFjW29yxIL$WWiA%H=wB-WxpY2HLW4>nuplXTN5-Gtp z#!>ypk;6nJk;(66V(D}!eilh(kK*gpj2oC*>&G|Aa(8rAob>nNsl@hSC>4vR_qQwA z+gzi)doJERjGv3w88e{PNT=R^oH!mNE579L!rPsmd0*hKlX&j@D3ji&liS$972{;s z+oQu~U2K7n{3CroL`aKVH+@ada~*wayFMY!0T1)4be zYf^)-ky!`WDL}H=oP>t_YfMMzV5FHMLRNEdh?uY~D=4lfJcIy!2dM@TO;La+nxe)D zAX0YNb(0qZ5f5PDl1wIl8^$em8DV$fGj*>OX<-_jSlH${xp4d61i{gSR;!cOuEQB_ zc&v1(pwS(IQ`m$PMgcFRN1{~bDav|EteO|o4K4(FUO*;nk%D4{xNP}@)9LX>ed@e{ znd$VPDhlv&3EmR#ZE{uenEnyGLu=Q;5sWcOOe;4>s8vh{gy0^|_&G)|0oRbS`B-$b zDSFmST)uTDd2UX73!BgQ+}>!#CIgIdlG-L#1PUlj%h;LUen*Ur5tTuD*4nU~O-tM~ zXsEUgkJsl91c6niC)ldv6D0hKaMk*HL}OTfGLBLS#~+?~C#cVefVF zj#fpLSZE|%0)CDfw4_C8Z^AL9qS4RbK=GQ1eDs;NT!~at&0lg8oN7oA=aQ{u$B+Vf zR*n=OE1%&FVM#Fq&cTa$l9~}yvVR%(vES4@w)i&!T8T5C_)s(w{A+26H<)iCVZ-$u z5tpmw`M{CTBE8HcQQj-jM0Cko5%W{b*0B3bO`jl0%oYgQ(kRdB;t8k-^6?Bv>PUi+ zsX|gC(035IB4*11|6KH_vQ~3U;F8^mRY$_+0lUILM5Jv(1Z8!_fe@G=iRxj|w6wc$ z}V^buejM*l^ z5w+HQ0d6$70A9i>Nm!*OV3leWOP>*}r9KV?AaxH}lPJ{uI=aHf2Vj*HEK67PIq?y4 z2d5Kc2HJLYsv6l&OTs8|5G6I*g?*v&!H{{#w1ugfYj|9>M*;)^htu}Wx}`T7vOVEe>a0o|c&tJaGE&SO zDc`4wy#YPZv=kU6jz~IYz&ayT5xbUE`DtCyo*G7^7ARe7D^@9K0Bx<|3S4#AMnf!_ z_E?56A<1ro2cdtLh|NoGEF7%~F20zwHuVokapUh2S(DP1+`KPDXwU0!}rX&fg`NEIF*KYva9;HwOr7>l*}ty(Z*QkCu^69WO8&kL+7gO-dX~(a)Uv=Ry>%;~n7Uj-$yD?QJmCeQq0#bx)Ia#iT zj5kCen)$cL`s7Iq2vb8B2-Qf@4A?59y^Pml?0fESBLZywg4sF94Vez+d$r7tNU1ETqAhx~-%UQ4`EhZTPz~Kc-aizDUdbAG4 zFki&tg*#6%ZLC?AZ-Ep%m*c)6yt2W2;se@v6+_a@1U2$U4l^bM2U{pkqeTR^R$?+8 zQX0(^2$$rg0t9{xMH^6Frw*B48qfMwQ$z7Z9-pg5mxBt-STxh$dSyfWl^j%XmGrAz z^chwT%7TwN%T^q3z%)3G)4b+bcLoUJa*|QjkIiyyT>-;bwU-(B)puG)>!f=U8gp3SoJ|T+@i-(x^$q|aW<8Va|Wwv5>$y^P#qcw(J2ZsIiz6apUz9wHl;ZmG-CWAb19@i<^2K$CPw_igRdhWkix<4TDV)Yoc*p%nK=EwjJfj3Df=1Y^kvw8R5)Ms?3{31L zjO+TSnAau5HXqa*C9^p+6DAE5a6zs84c68EqGE#j--1m!NTzZ0Z)KJj-P5Kql}M98 zR-M@TBnILe8jel!I!Rd|5eypz;BXuS;F~)J3L*7q-x0f@qN4so7K0@)S|cf0!K6ai z&rFjZ_Xjr(!o8-Kbzy~NMI2*GI`uB-D@KkrWdqQ~zh$%M^Hv%_6Sg#LN|h%uuEmed z%Rm(h)~M!*4Iz@Ha2qfIT4qxR}w`Grg>!Y z>@cpTF1sK%!Ok86PML0kJLo$n=#XC{+)b>-MyHlits;dDg;V%#YaLs8EsTZ$5=Zeol!GrSp;5*RuNe< zj9Z@XCB!Qod4pHsU>{1`05*(5$^0Zr9DpE8f%4A;O)x9|9SxuT_Q=7$=d_StGa9h3 z&17Ir-yj+=@Yb>O51HL52dMZ*Nh;n*@*k%T|4b5yG%?V(bkh{2%p zDq)LRg7gIDLAM(g2?ZVSaCSGDnQ)*S-$aZEBTC6*%_t;;8G-6h~0X8?f zB{vB+)*)L@tbv38)0(&849l9kn4o7mhsOMqM@nua{k1|yke`7t+7 zhQ-Nr#)U!9_ONy9a6LOXDPOM9X)Yvs2>ul)Bw%Cc0?NX{A%CPSu@j4sdp!3J7-i=f zfgmRG>{1lhi*$;QB^^_WBX!RPwN3ec+c4r$t{i@#3fn9CQRmd}OW19oo<%1J51G;# zl`kx&YD`Ok)F-%jW+p1z?s~ec+n^<6d&sR&6_V%sewgd??vA&cSh=SCaY{2E(K++S zA2CuCksh<5rbZ*!z@-ePuPK#rgXM+ds{+b^$itKLg~MUoH}e{lr)6iCO$ocV_&5dC zJW{g}n{CKSgjIoTA&k}TU6(PmD$BWcF}fJrGW@;~qZJ7V+7vMIIK@rq?LGoxWEvo2 z`|(FMB)5uBOq1T=Z7DW^&o{=S>NYm_YW0zKn=;f~?cuCn*?8?Wjt8S}T4ax@SW-Ni z$sCG)MHp?hjzwd>!!<_duV~;L8wZ8d5qukl_1D%Z6p7q^#48Db+P>QZhn{n)I9ka$ zoR`OWVfcq^`wUW#r2?yYXg=%{9ncfXto&4YPU!1HC@dQ7a6)&i- z%<%M*q7CXk%Kb=+l$FP|hSOKs*$G$bUZ>kzt2zDNa>E%8yS>i9j<4nq*WCVExy<|) zVitV}CYB*PEiQqN71Kau!WlGu$M}E*FO#$sd?DGY1}5V9D5)W{2P|UO@c6zs#Nw9@ z{}93rUKl?=FIfO=LYQJJ`|-wZhBDC#@tEQhOH0+2iD!^|YUJIUS;q90;uuoW7V`mn zKTyfqor6+QD>eOPeu0vGA=OIgR+L*=;IOyUa(>+s$217&duD}l1JCv-#`9Zvl6e*x zlCRUo16V3S$WDz23l+S{d@sZ-M23{vibQjELi0;PTfPu$eSxet#fBwY)uB#ew-FB&_w=g)#I^4jqNyO8Ip@)WMi~fP~@q~kh<82hVpt!;& zf0gWLmYu`@6rp78Xp_+kHKnmA``xK3EzrTUdar`f4eB)~UDZhjv^G#}u%Zisgfq?7 zHe!VIEl)J#|8?Qmf(zfdl=0^(vl;<1qdq~1NMnSL_|XOpE_YnsI6IoIE|JIY7K)@V zedGFt#D#8luB?c@L@Zw!?=Z-(nZR~B>5Jc>c_A7vG8tE-)T(@?eBQBcxwTI5>dn8JljGFYNN8A_vlxoC#DtK^-_8 zg+y5sMC#TH<>n*DaOQL37(g9o&S&cu41UM#z5mC1FgSXAD-V+V3YNX#n%qv5-bd~h zD+**r!}q@Zv);D=GCix8B)V%4QEjMEw+#2UKNX#Q_qVOB(X%?ibMf6wE@mC)b_u2z zGQUf%;cN?)3B7^fV`p2BnDoNZpEx|KvRlQ}L13&BEo z%OCX4#XGkt=3hcZSe!!D!0vcU+1^F*w&`sS3)#cMslV3m<=oDz)4OOYd042YX5H#l zHgQ*uZ+YAyJGd;bSp(UMmk+(eqJMun_1s(zFQ(nS>}|c{DSIl(^PcajGVmX@_FM77 zS#itf-U-YPRcugcFt4(M%jRL;cQ8r>&V7wpzJGl_O^-Y`@#g+rXSd;x7W{}1_xla^ zmd6tgh3A1NcyO8sROXs2USt~t@bPjbDpu(MORIEZGlJG;}9PCi#I9=1Kl?Q8|b zch9%{VfXy#6>wf04d$y(#oNMOBzN7doLt=Q-kkWoh4NW@uX1#hx=DMBXOUVmQrtVJ z1+%5y@K(U>w?Vmr&p4z+m3Qn`6yHy1TU{{k$5*MR=TIr zSRg&v@&$I5Ac;)^r&0N)jj@PE@m9}SN9ESa(XsP3K8gmCf!4TncfI3pT{s7K4Nq); zFV@dFot-U@FYI4N2;K)0+2Ki*Dzr1%)G>A&DY!eA<=9=R-Z&4A8>#d9teT5E$AxRp z!EJmmG-{_)dppAj<5+L#evFaPS*7b@=u`)SC)|%WCO2s1&%23at1|o3(7_0@}2i?~(Q;s795xb_TOaJbImK-3_x- z&(K{8>;@XqbRc@}DI`aM;$dLs?su;$$JbM!)w2`u-%C2`S?o$H*M+6=m$a+}8yw`a zhw15QX)m-l%+0dpZt%hx9v+{xhMnu_@x<5OubkZ+^)8E-m(4AY*H)g{;9%vE*x=?Q zah|}j)M>hvI=j8=w@Tx7_n*QWCn=3`L z-cBYv?kBIZXQ!R>e)^#4AJj4j-teFjxCpo}sUx>{nO@)$!{STWFmW#oHPDPCy@f+> z$?X}nuHvI&v{&)pg__P_(o?w3`67ek{`4lY8@ivUOZ!H~7YeNy@-uL8-McDQ zvgJzkz#B{sE}hkKaesK_4b{Qe(TuyhSISHqqvH#3uh$a@y)fGO=7!dFG*_LTrjBxL zcmAx<7+xNEtEdH7IgaNCNC*h_&b^VV&i+mR%6Cre9KN5+EW5~BUz6lCy%Vb)O#0Ka z*-4}nDTh7DjJw}DiA4%G(XR7&R1ElgfwSEk>dSZkG)=Kdt*5h-i$KqJoTz0kF0v^5 zS80UmN0)cWN-vYB2E03!lf3V^-`veas3(*qyceNB9GGTK6ls0-Bl*zXUA|PC+~kA1 z+1qlmR~TJacN6Yv>+&L0PhZv`_)e1k>oC?1jJ+4_(`M~NOPy-XEew(ru0)aQre;AwcrIoTfuZ++MC+9-463XX(~K z`R3&EZkllSj!!d9X7PmX7n8Q}c#W|K0e}6Vv)76hXXiCv{BBk}tVLS+M7i%N-khcK zqf#h!u~$is4^lMQ;Jv2n*vK$`P+Tp$?Q5;95!O-2h*cYqLXS) z(=}&dZ=BllhJ1E5IK|QJK>I_n`0?;Ed=Sl-ouxvecj^ozck9#Rdalz8q*KG>>BYXU zm7nevx9kSb;L?9e_jq#INcwD?9$Y1&BTv3KyX;;ZjXH-n-Lqt_c6)ws)3_S@^1f6( zTZAz6c>@bO8{;nUUinR%ivX_~v|q@s7$&v8OMEyQ$K{d7W!FLPsa= zz3Sk+ad_7C6yn}y%iRi}9*!<<6I(l8JO71|OiWV=?KgXpMn`Ol>d*NJHq!@t&U|Jk zlpi~fi@7teH_-_1*J_8mu}XGu7O&TCc50o5H#AFa?fBhx5{u1{PC376vtqzGvDjTS zJcOgpD?u!xWIn5`sF7~x`r4N`-$9Mi>YlUOIBw^v`B*MG3r_cEea{6>w8qBn?q%0m zz1a%cx}L_wSl`?O(t2nGhT}@`YX6`!joe*!OSx<^6)pB+XMx;B$lXj|H!I;tcIJm(nQ84_MN7Nqql|x=J#+exx~Iuu@MgSQjW&Xz*xo^S z%Nu|}VWZ29POKq~%AgV78~FOsxUWuMwzMVmJMpQ(vuo>rOb6gY@9KcYCwt z^Dl=Dmsp;+dvh5o_6D~TkzM?;drU%4V7+^ zC!usC8A>&`d^_II>d54CRDJ3JmXNbv@a0Zp33qsWb9+9CwGT$;iL2>dz8Z3ReEa@r zE!Is}E)OcjEx+H^G1KOWgI}V=?wd?Nts_1;;{$BAv!XW|W=s8xgFq-Zxk((~G=l+W z+<#U*@f=KVDtoh3pjq>t3<~*NVNi57x59|&EL{Og6u!ArG`e9EWI3Fg%`UQK4ZmwN zDDKysBhP+4mgJyU6vl3y%o@9$TG)3{%O4bG$=lRTBN)6vOg?4;ShJjvvC^YQlGLsQANXV!cAK9T*n_<^6H)Ds-MMm7I;*{&_eZ zJ1s;DrQ~fknUD9~<;YcaD;T^-cr%XYT*IonqbA?nW`e(S=$j6XkA~H~>u|)K9kp(I z7qL_!(Dd)7&T41Taw@zV?j&xG$6H=^Fl=KyunKNsH;e6TQDv`fuiF!Lx&uy+8$~FY zD8*GSm$=VQZld|3SKUbJuo)j^Vm<$*|FWCz9puK7RPiJ{F5cv$=hbU(tQt-i5#4gT z{X2F(qp5E?E=&D}oNk}fhZC8${Z3AIa*^63IVk2vk^NrqHXUmvTkYeW{H^b(pG#d0 zQp0@c!W|8}w*mooFkrJvbX9D#KNxJxf=zFF)c0Qmay#`wwV&Ec^o#Liwi!A}okmUy zht=~)w0CsS+46_%)S=$Nyjf8@bl>f?CjL$!cTkN4YUl1o(i=YBpPgm$v5L{%-ulwR_~3MKvQs-gJ*iyxE>b1mk^62K4J0au(P44V zIY?~z!fqR%MxMg6gZ?@_Tm@SGqM;_#Ob$KCcs*PT<%Xe@AIZ&UJJsf1GM~OW+MgUZ zBOZ6O=}vS#*!>NAZLlwaZu2u+hWb4?N&6y&N%=IMjb~=9M1O>h$bQ6AZkBFi@v}g$ zGV8~7qV;LKxV3|;R;=Flwy`5=i?i7$G(b9K>9 zHuu7*gPXgH#8$}8$1+r^4cC`F{psFaqPnvi7)6rDjq35}__#c6U7ts5jq_A(5bd1Z zc!M|lJ^1=|rh@_fUOT1Hyztx&aq#?lu#=1X&ONbor*pD5i?xn-56=tr@vJ$BctYNC zaIod|`205PY4mo#VNz%ehMAj8(|>$&a5HL!4tDmVfo|O6IZ65UDm%HOyUcKO9L)I3 zV;I%`<=t5g5%*zq(&(IZ_A6;mDRS6~Wj)PtxOjZAJ8>72d-cQO@i4R-OrEqU;Ow@` zCm?lcLy^4-9L(cdc67VfK0~?TisJHbpfIJv51Lam*fy+%3TzPj1Hn*}_H`d%gw0{ru7mqHz*~Tp4$#tgjZZJ@F!;IVV z?s#mpt*{+zCvclNDIOIn{idgV7(dD!MBD9n>Lg#i9bd%rI}jyzf_FPPNcdD&+wY7iRj$NF&^OH{Jq8N)E9XEW(XXjhqppCHR z#)u6{c0wWVZr@ouLmc`dkvq){^6~v@=~UtdE=Vw=kzib45s_Xv4g{0Cl*M~c5aR?_s>Fy!O0GUQYoED9@mG% zz03stgx%N>Tx~i$)lK%|kGo5=v%u*=Ion9NPkSS0zkJ;|z0M5NmzkC`mOIKz<^X)2zFS_-U{ji;TBCp%r_Q zS!c47NM(4iUu_;$oSob_x!=Fpi+3iS(DZJ2kwIAOJmhym1&$6+_R-0Teeh(otu17> zz2&Wc{44%A(&EF?IB++Vr2 zM$ex#L3-y~Z6J}+V&tq@fkl7+J3sIZU$wSI&wEY4rf;_cCKJ`Ha6F&?*3UPP07%a_ zo8bKHAG3iYzxtjZ`_{EJdNxgfsu3GNR>X;nG%M8TcmGrWue@b#jh^?L zpysPKP*wiQ5;C;^^MCvKPk!y%8a*$WKwj6Efiz4#o7w-F&%gW8;RoNcMvr;+!`U*R zOou5a(K`Fg=)?cMiJ8+wxvKK#+0(at@+~&JCzJ4avc(b{{EJ`urvLG4f@^E^yey&O z-)B!h@sI8YY~+?%2mE_m-}sAv1R0?8cua8L^*i^&oy#Y)f`8Qdl=FZ0uC37%Hi55x z(_8Pwhiyie4K3q8{msAq53wBR`LL;%zjE|~y=c3r);ax)$*{e-jWvTOYwGP|A6c!p zl{2(#=K7z0yz61xm?|63dHNZAKX1XRnx7sL_5vXmITQU9a zzwq#1|6}w(kD0Fj;9Xy_68FsYvSdz<)8xbVx!2a{!T;6Iv#0+ge1C7&+%M}~zUgbf z<^TM5mjcplekZY?$IVzwUqj=UGt+`oN=>M?tGaqa1 ztgX>w=JUV(FYkxGAUDVcOMfTy9cg<$fAWF1-OC3H`dPx~Pe1YK_U%|x^duF|X#M`R zix=0%J|;*H=%;?3J^jm{T%|Ld zm6;RgHnjVn{;wbW>7PRv^q3da%fJ4j-7F#9zk18>d|v@w(PP$x>92kJy{xh*kIIU> zZ{PmG;ZLlut z^}e+=dOoc6_Ux(m&#&GAn~>^nwdt50!J{8v*qb%q$%>=TeeUZ%^A1pi9y3+G=N_P( z4)^CdS$q8aPyaWc`PW~+wnmTHm-~aizkC|3N0r@Vh5Kvn+4iTaYisnFozLLUuK;&( zq~Oy(cJS4&!lR`JgjPS#o`zq3hmDM*VQw?L%OI(Bs0svrF-wWheqcF7eP3>gzx+?5 z-}DPvjFp~{*4wkEn_H`Qz$uKd4yy6msG4{Ff8X|9#xW4b> z%R8`a>sd!$*!tb~{m|Ri*61-W&|h8wFlRHnY$9tvUzPdqKK>e_xb&FW`k(#i{S#pQ zXnTk@n|sy{KmCc=yTdTo=rNPz6Mz3XIyCZztQ}};(-N+D^qJ)y2sN^7)r^LFfA<@( zV(2l;vyZL_oS{tgv}E;vGTZr;U(8}F0FT)?|2Mz2d=`AijCCV-%@ziIU;EYXbANB~ zkFL@4VGVK5o__P=cg@QfQ$`N$87$8RvQp+p{+E-@w>ICoM$exz_4ZZY`;GVXwmkpG z+SB=W|G8hf#hwB^<`8-74;=G7t*DuQXE*2^2uUvo6Z~bpr2J|>g0Kfe+HURI@%#*Kv@XP33N*VO(9g1~s38uVvRKm2=(0UB(v1oV$T`0%@@a5U*L3x?nO0~^pnr!EZ{{qjdY z_x10BD@c!7F#PCy9?WyE0=bB@elqZx-~XGS6+LEn|IZ(@fyY(zk}1Faz3=~2-i>NT zc+9N-^WU%-o>cQTl5oHLLm%=&tYybeA) zS{1ZRg0aH3R&|n$_3Y`-e|lBeJn_W}*;cFoXdwLWpJ7RS&#w_5{|9zl^SJ;3 literal 0 HcmV?d00001 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt new file mode 100644 index 00000000..1ce36173 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt @@ -0,0 +1,5 @@ +--find-links /usr/local/airflow/plugins +--no-index + +amzn_sagemaker_studio +amzn_SagemakerWorkflowsOperator diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sample_dag.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sample_dag.py new file mode 100644 index 00000000..aa3fc2f1 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sample_dag.py @@ -0,0 +1,18 @@ +from airflow.decorators import dag +from airflow.operators.bash import BashOperator + +default_args = { + "owner": "airflow", +} + + +@dag(default_args=default_args, tags=["sample"]) +def sample_dag(): + def sample_task(): + _task = BashOperator(task_id="hello_world", bash_command="echo 'hello world!'") + return _task + + task = sample_task() + + +sample_dag = sample_dag() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh new file mode 100755 index 00000000..6a0d50e3 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# install sm-spark-cli +sudo curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.9.1/amazon-sagemaker-spark-ui.tar.gz && \ +sudo tar -xvzf amazon-sagemaker-spark-ui.tar.gz && \ +sudo chmod +x amazon-sagemaker-spark-ui/install-scripts/studio/install-history-server.sh && \ +sudo amazon-sagemaker-spark-ui/install-scripts/studio/install-history-server.sh && \ +rm -rf ~/.m2 && \ +sudo rm -rf amazon-sagemaker-spark-ui* \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh new file mode 100755 index 00000000..57a4616f --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Create a default aws profile in SM training container +aws configure set credential_source EcsContainer + +# Create a default ipython profile and load extensions in SM processing container +NB_USER=sagemaker-user +config_path=/home/${NB_USER}/.ipython/profile_default/ipython_config.py +# SparkMonitor Widget and Connection Magic - create entrypoint +if [ ! -f "$config_path" ] || ! grep -q "sagemaker_studio_dataengineering_sessions" "$config_path"; then + ipython profile create && echo "c.InteractiveShellApp.extensions.extend(['sagemaker_sparkmonitor.kernelextension','sagemaker_studio_dataengineering_sessions.sagemaker_connection_magic'])" >> $config_path + cat << EOT >> "$config_path" +c.Application.logging_config = { + "loggers": { + "": { + "level": "INFO", + # console handler is required to keep the default behavior of jupyter logging. + # https://jupyter-server.readthedocs.io/en/latest/operators/configuring-logging.html + "handlers": ["console"], + }, + }, +} +EOT +fi \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh new file mode 100755 index 00000000..deb7d001 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh @@ -0,0 +1,190 @@ +#!/bin/bash +set -eu + +handle_workflows_startup_error() { + local step=$1 + local detailed_status="" + case $step in + 0) + detailed_status="Workflows blueprint not enabled" + ;; + 1) + detailed_status="Not enough memory" + ;; + 2) + detailed_status="Error creating directories" + ;; + 3) + detailed_status="Error installing docker" + ;; + 4) + detailed_status="Error copying prerequisite files" + ;; + 5) + detailed_status="Error starting workflows image" + # Kill any orphans that may have started + python /etc/sagemaker-ui/workflows/workflow_client.py stop-local-runner + ;; + *) + detailed_status="Unknown error" + ;; + esac + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status "$detailed_status" + exit 1 +} + +RESOURCE_METADATA_FILE=/opt/ml/metadata/resource-metadata.json +SM_DOMAIN_ID=$(jq -r ".DomainId" < $RESOURCE_METADATA_FILE) +HOME_FOLDER_NAME=src +AWS_ACCOUNT_ID=$(jq -r '.ExecutionRoleArn | split(":")[4]' < $RESOURCE_METADATA_FILE) +ECR_ACCOUNT_ID=058264401727 +DZ_DOMAIN_ID=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $RESOURCE_METADATA_FILE) +DZ_PROJECT_ID=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $RESOURCE_METADATA_FILE) +DZ_ENV_ID=$(jq -r '.AdditionalMetadata.DataZoneEnvironmentId' < $RESOURCE_METADATA_FILE) +DZ_DOMAIN_REGION=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $RESOURCE_METADATA_FILE) +DZ_ENDPOINT=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $RESOURCE_METADATA_FILE) +DZ_PROJECT_S3PATH=$(jq -r '.AdditionalMetadata.ProjectS3Path' < $RESOURCE_METADATA_FILE) +WORKFLOW_DAG_PATH="/home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/dags" +WORKFLOW_CONFIG_PATH="/home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/config" +WORKFLOW_DB_DATA_PATH="/home/sagemaker-user/.workflows_setup/db-data" +WORKFLOW_REQUIREMENTS_PATH="/home/sagemaker-user/.workflows_setup/requirements/" +WORKFLOW_PLUGINS_PATH="/home/sagemaker-user/.workflows_setup/plugins" +WORKFLOW_STARTUP_PATH="/home/sagemaker-user/.workflows_setup/startup/" +WORKFLOW_ARTIFACTS_SOURCE_DIR="/etc/sagemaker-ui/workflows" +WORKFLOW_PLUGINS_SOURCE_PATH="${WORKFLOW_ARTIFACTS_SOURCE_DIR}/plugins/*.whl" +WORKFLOW_REQUIREMENTS_SOURCE_PATH="${WORKFLOW_ARTIFACTS_SOURCE_DIR}/requirements/requirements.txt" +WORKFLOW_AIRFLOW_REQUIREMENTS_SOURCE_PATH="/etc/sagemaker-ui/workflows/requirements/requirements.txt" +WORKFLOW_OUTPUT_PATH="/home/sagemaker-user/jobs" +USER_REQUIREMENTS_FILE="${WORKFLOW_CONFIG_PATH}/requirements.txt" +USER_PLUGINS_FOLDER="${WORKFLOW_CONFIG_PATH}/plugins" +USER_STARTUP_FILE="${WORKFLOW_CONFIG_PATH}/startup.sh" + +# Create status log file if it doesn't exist +WORKFLOW_HEALTH_PATH="/home/sagemaker-user/.workflows_setup/health" +mkdir -p $WORKFLOW_HEALTH_PATH +if [ ! -f "${WORKFLOW_HEALTH_PATH}/status.json" ]; then + echo "Creating status file" + echo "[]" > "${WORKFLOW_HEALTH_PATH}/status.json" +fi + +# Only start local runner if Workflows blueprint is enabled +if [ "$(python /etc/sagemaker-ui/workflows/workflow_client.py check-blueprint --region "$DZ_DOMAIN_REGION" --domain-id "$DZ_DOMAIN_ID" --endpoint "$DZ_ENDPOINT")" = "False" ]; then + echo "Workflows blueprint is not enabled. Workflows will not start." + handle_workflows_startup_error 0 +fi + +# Do minimum system requirements check: 4GB RAM and more than 2 CPU cores +free_mem=$(free -m | awk '/^Mem:/ {print $7}') +cpu_cores=$(nproc) +if [[ $free_mem -lt 4096 ]] || [[ $cpu_cores -le 2 ]]; then + echo "There is less than 4GB of available RAM or <=2 CPU cores. Workflows will not start. Free mem: $free_mem MB, CPU cores: $cpu_cores" + handle_workflows_startup_error 1 +fi + +( +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Creating directories' + +# Create necessary directories +mkdir -p $WORKFLOW_DAG_PATH +mkdir -p $WORKFLOW_CONFIG_PATH +mkdir -p $WORKFLOW_DB_DATA_PATH +mkdir -p $WORKFLOW_REQUIREMENTS_PATH +mkdir -p $WORKFLOW_PLUGINS_PATH +mkdir -p $WORKFLOW_STARTUP_PATH +mkdir -p $WORKFLOW_OUTPUT_PATH +) || handle_workflows_startup_error 2 + +( +# Set the status of the status file to 'starting' +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Installing prerequisites' + +# Workflows execution environment install +sudo apt-get update +sudo install -m 0755 -d /etc/apt/keyrings +sudo rm -f /etc/apt/keyrings/docker.gpg +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +sudo chmod a+r /etc/apt/keyrings/docker.gpg +echo \ +"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ +"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ +sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +VERSION_ID=$(cat /etc/os-release | grep -oP 'VERSION_ID=".*"' | cut -d'"' -f2) +VERSION_STRING=$(sudo apt-cache madison docker-ce | awk '{ print $3 }' | grep -i $VERSION_ID | head -n 1) +sudo apt-get install docker-ce-cli=$VERSION_STRING docker-compose-plugin=2.29.2-1~ubuntu.22.04~jammy -y --allow-downgrades +) || handle_workflows_startup_error 3 + +( +# Set status to copying files +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Copying files' + +# Create .airflowignore file +cat >>"$WORKFLOW_DAG_PATH/.airflowignore" <<'END' +.ipynb_checkpoints +END + +#copy plugins from conda +cp $WORKFLOW_PLUGINS_SOURCE_PATH $WORKFLOW_PLUGINS_PATH +#copy requirements from conda +cp $WORKFLOW_REQUIREMENTS_SOURCE_PATH $WORKFLOW_REQUIREMENTS_PATH + +# Copy system startup +cp /etc/sagemaker-ui/workflows/startup/startup.sh $WORKFLOW_STARTUP_PATH + +# Append user's custom startup script, if exists +if [ -f $USER_STARTUP_FILE ]; then + tail -n +2 $USER_STARTUP_FILE >> "${WORKFLOW_STARTUP_PATH}startup.sh" +else + # Give the user a template startup script + echo "#!/bin/bash" > "${USER_STARTUP_FILE}" + echo "# Place any special instructions you'd like run during your workflows environment startup here" >> "${USER_STARTUP_FILE}" + echo "# Note that you will need to restart your space for changes to take effect." >> "${USER_STARTUP_FILE}" + echo "# For example:" >> "${USER_STARTUP_FILE}" + echo "# pip install dbt-core" >> "${USER_STARTUP_FILE}" +fi + +# Append user's custom requirements, if exists +if [ -f $USER_REQUIREMENTS_FILE ]; then + cat $USER_REQUIREMENTS_FILE >> "${WORKFLOW_REQUIREMENTS_PATH}requirements.txt" +else + # Give the user a template requirements.txt file + echo "# Place any requirements you'd like included in your workflows environment here" > "${USER_REQUIREMENTS_FILE}" + echo "# Note that you will need to restart your space for changes to take effect." >> "${USER_REQUIREMENTS_FILE}" + echo "# For example:" >> "${USER_REQUIREMENTS_FILE}" + echo "# numpy==1.26.4" >> "${USER_REQUIREMENTS_FILE}" +fi + +# Copy over any user-specified plugins, if they exist +if [ -d $USER_PLUGINS_FOLDER ]; then + cp -r $USER_PLUGINS_FOLDER/* $WORKFLOW_PLUGINS_PATH +fi + +) || handle_workflows_startup_error 4 + +( +# Set status to installing workflows image +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Installing workflows image' + +# Copy sample dag if it does not exist +cp -n "/etc/sagemaker-ui/workflows/sample_dag.py" "${WORKFLOW_DAG_PATH}/" + +# Log into ECR repository +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com + +HOME_FOLDER_NAME=$HOME_FOLDER_NAME \ +ECR_ACCOUNT_ID=$ECR_ACCOUNT_ID \ +ACCOUNT_ID=$AWS_ACCOUNT_ID \ +DZ_DOMAIN_ID=$DZ_DOMAIN_ID \ +DZ_PROJECT_ID=$DZ_PROJECT_ID \ +DZ_ENV_ID=$DZ_ENV_ID \ +DZ_DOMAIN_REGION=$DZ_DOMAIN_REGION \ +DZ_PROJECT_S3PATH=$DZ_PROJECT_S3PATH \ + docker compose -f /etc/sagemaker-ui/workflows/docker-compose.yaml up -d --quiet-pull +) || handle_workflows_startup_error 5 + +# Set status to waiting for image to start +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Waiting for workflows image to start' + +# Start healthchecker +sleep 30 # give the container some time to start +supervisorctl -s unix:///var/run/supervisord/supervisor.sock start workflows_healthcheck diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/startup/startup.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/startup/startup.sh new file mode 100755 index 00000000..1a248525 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/startup/startup.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh new file mode 100755 index 00000000..0ce31e2d --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +DOCKER_EXECUTABLE=$(which docker) + +# Stop healthchecker +supervisorctl -s unix:///var/run/supervisord/supervisor.sock stop workflows_healthcheck + +# Stop the containers +$DOCKER_EXECUTABLE compose -f /etc/sagemaker-ui/workflows/docker-compose.yaml down + +# Update status to stopped +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'stopped' --detailed-status 'Shutdown completed' diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/workflow_client.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/workflow_client.py new file mode 100644 index 00000000..4ccec387 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker-ui/workflows/workflow_client.py @@ -0,0 +1,114 @@ +import argparse +from datetime import datetime, timezone +from typing import Optional + +import boto3 +import requests + +JUPYTERLAB_URL = "http://default:8888/jupyterlab/default/" +WORKFLOWS_API_ENDPOINT = "api/sagemaker/workflows" +TIMESTAMP_FORMAT = "%Y-%m-%d %H:%M:%S.%f%z" + + +def _validate_response(function_name: str, response: requests.Response): + if response.status_code == 200: + return response + else: + raise RuntimeError(f"{function_name} returned {response.status_code}: {str(response.content)}") + + +def update_local_runner_status(session: requests.Session, status: str, detailed_status: Optional[str] = None, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/update-local-runner-status", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={ + "timestamp": datetime.now(timezone.utc).strftime(TIMESTAMP_FORMAT), + "status": status, + "detailed_status": detailed_status, + }, + ) + return _validate_response("UpdateLocalRunner", response) + + +def start_local_runner(session: requests.Session, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/start-local-runner", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={}, + ) + return _validate_response("StartLocalRunner", response) + + +def stop_local_runner(session: requests.Session, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/stop-local-runner", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={}, + ) + return _validate_response("StopLocalRunner", response) + + +def check_blueprint(region: str, domain_id: str, endpoint: str, **kwargs): + DZ_CLIENT = boto3.client("datazone") + # add correct endpoint for gamma env + if endpoint != "": + DZ_CLIENT = boto3.client("datazone", endpoint_url=endpoint) + try: + blueprint_id = DZ_CLIENT.list_environment_blueprints( + managed=True, domainIdentifier=domain_id, name="Workflows" + )["items"][0]["id"] + blueprint_config = DZ_CLIENT.get_environment_blueprint_configuration( + domainIdentifier=domain_id, environmentBlueprintIdentifier=blueprint_id + ) + enabled_regions = blueprint_config["enabledRegions"] + print(str(region in enabled_regions)) + except: + print("False") + + +COMMAND_REGISTRY = { + "update-local-runner-status": update_local_runner_status, + "start-local-runner": start_local_runner, + "stop-local-runner": stop_local_runner, + "check-blueprint": check_blueprint, +} + + +def main(): + parser = argparse.ArgumentParser(description="Workflow local runner client") + subparsers = parser.add_subparsers(dest="command", help="Available commands") + + update_status_parser = subparsers.add_parser("update-local-runner-status", help="Update status of local runner") + update_status_parser.add_argument("--status", type=str, required=True, help="Status to update") + update_status_parser.add_argument("--detailed-status", type=str, required=False, help="Detailed status text") + + start_parser = subparsers.add_parser("start-local-runner", help="Start local runner") + + stop_parser = subparsers.add_parser("stop-local-runner", help="Stop local runner") + + check_blueprint_parser = subparsers.add_parser("check-blueprint", help="Check Workflows blueprint") + check_blueprint_parser.add_argument( + "--domain-id", type=str, required=True, help="Datazone Domain ID for blueprint check" + ) + check_blueprint_parser.add_argument("--region", type=str, required=True, help="Datazone Domain region") + check_blueprint_parser.add_argument( + "--endpoint", type=str, required=True, help="Datazone endpoint for blueprint check" + ) + + args = parser.parse_args() + + # create the request session + session = requests.Session() + # populate XSRF cookie + session.get(JUPYTERLAB_URL) + + kwargs = vars(args) | {"session": session} + + if args.command in COMMAND_REGISTRY: + COMMAND_REGISTRY[args.command](**kwargs) + else: + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker/sm_pysdk_default_config.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker/sm_pysdk_default_config.py new file mode 100644 index 00000000..1a8457b4 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/sagemaker/sm_pysdk_default_config.py @@ -0,0 +1,122 @@ +import json +import os +import re + +import yaml + + +def generate_intelligent_default_config(metadata: str) -> dict: + config = { + "SchemaVersion": "1.0", + "SageMaker": { + "PythonSDK": { + "Modules": { + "Session": { + "DefaultS3Bucket": metadata["S3Bucket"], + "DefaultS3ObjectKeyPrefix": metadata["S3ObjectKeyPrefix"], + }, + "RemoteFunction": { + "IncludeLocalWorkDir": True, + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + "NotebookJob": { + "RoleArn": metadata["UserRoleArn"], + "S3RootUri": f"s3://{metadata['S3Bucket']}/{metadata['S3ObjectKeyPrefix']}", + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + "Serve": {"S3ModelDataUri": f"s3://{metadata['S3Bucket']}/{metadata['S3ObjectKeyPrefix']}"}, + } + }, + "MonitoringSchedule": { + "MonitoringScheduleConfig": { + "MonitoringJobDefinition": { + "NetworkConfig": { + "VpcConfig": { + "SecurityGroupIds": metadata["SecurityGroupIds"], + "Subnets": metadata["Subnets"], + } + } + } + } + }, + "AutoMLJob": { + "AutoMLJobConfig": { + "SecurityConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + } + } + }, + "AutoMLJobV2": { + "SecurityConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + } + }, + "CompilationJob": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + }, + "Pipeline": {"RoleArn": metadata["UserRoleArn"]}, + "Model": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + "ExecutionRoleArn": metadata["UserRoleArn"], + }, + "ModelPackage": {"ValidationSpecification": {"ValidationRole": metadata["UserRoleArn"]}}, + "ProcessingJob": { + "NetworkConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + }, + "RoleArn": metadata["UserRoleArn"], + }, + "TrainingJob": { + "RoleArn": metadata["UserRoleArn"], + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + }, + } + return config + + +if __name__ == "__main__": + try: + config = {} + resource_metadata = "/opt/ml/metadata/resource-metadata.json" + + PROJECT_S3_PATH = "ProjectS3Path" + SECURITY_GROUP = "SecurityGroup" + PRIVATE_SUBNETS = "PrivateSubnets" + META_DATA = "AdditionalMetadata" + EXECUTION_ROLE_ARN = "ExecutionRoleArn" + CONFIG_FILE_NAME = "config.yaml" + CONFIG_DIR = "/etc/xdg/sagemaker/" + + if os.path.exists(resource_metadata): + with open(resource_metadata, "r") as file: + data = json.load(file) + + s3_path = data[META_DATA].get(PROJECT_S3_PATH, "") + metadata = { + # user provided bucket + "S3Bucket": re.search(r"s3://([^/]+)/", s3_path).group(1), + # ${datazoneEnvironmentDomainId}/${datazoneEnvironmentProjectId}/${datazoneScopeName}/ + "S3ObjectKeyPrefix": s3_path.split("//")[1].split("/", 1)[1], + # TODO: Is this a billing concern if set default + # 'InstanceType': 'ml.m5.xlarge', + "SecurityGroupIds": data[META_DATA].get(SECURITY_GROUP, "").split(","), + "Subnets": data[META_DATA].get(PRIVATE_SUBNETS, "").split(","), + "UserRoleArn": data[EXECUTION_ROLE_ARN], + } + + # Not create config file when invalid value exists in metadata + empty_values = [key for key, value in metadata.items() if value == "" or value == [""]] + if empty_values: + raise AttributeError(f"There are empty values in the metadata: {empty_values}") + + config = generate_intelligent_default_config(metadata) + else: + raise FileNotFoundError("No resource-metadata.json exists on host!") + + # Write the config YAML file to default location of the admin config file + with open(os.path.join(CONFIG_DIR, CONFIG_FILE_NAME), "w") as f: + yaml.dump(config, f, default_flow_style=False, sort_keys=False) + + except Exception as e: + print(f"Error: {e}, SageMaker PySDK intelligent config file is not valid!") diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..58e187d0 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,12 @@ +[include] +files = supervisord-common.conf + +[program:codeeditorserver] +directory=%(ENV_HOME)s +command=start-code-editor +autostart=true +autorestart=true +stdout_logfile=/dev/fd/1 ; Redirect web server logs to stdout +stderr_logfile=/dev/fd/1 +stdout_logfile_maxbytes = 0 ; Fix: https://github.com/Supervisor/supervisor/issues/935 +stderr_logfile_maxbytes = 0 ; Fix: https://github.com/Supervisor/supervisor/issues/935 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-common.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-common.conf @@ -0,0 +1,18 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf @@ -0,0 +1,11 @@ +[include] +files = supervisord-common.conf + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf new file mode 100644 index 00000000..41dec7fe --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf @@ -0,0 +1,28 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:codeeditorserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-code-editor +autostart=true +autorestart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf new file mode 100644 index 00000000..13ffc89f --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf @@ -0,0 +1,27 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-default-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf new file mode 100644 index 00000000..ed00f4d5 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf @@ -0,0 +1,35 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + +[program:workflows_healthcheck] +command=bash -c "/etc/sagemaker-ui/workflows/healthcheck.sh" +autostart=false +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord.conf b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord.conf new file mode 100644 index 00000000..686f4a5c --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/etc/supervisor/conf.d/supervisord.conf @@ -0,0 +1,27 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-code-editor b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..bf55a371 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-code-editor @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +# Set up SAGEMAKER_APP_TYPE_LOWERCASE based on SAGEMAKER_APP_TYPE +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-code-editor.conf -n diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-jupyter-server new file mode 100755 index 00000000..f71e97f7 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-jupyter-server @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +if [ -n "$SAGEMAKER_RECOVERY_MODE" ]; then + export HOME=$SAGEMAKER_RECOVERY_MODE_HOME + # Activate conda environment `sagemaker-recovery-mode` + micromamba activate /opt/conda/envs/sagemaker-recovery-mode +else + # Activate conda environment 'base' + micromamba activate base +fi + +# Set up SAGEMAKER_APP_TYPE_LOWERCASE based on SAGEMAKER_APP_TYPE +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') + +# Start supervisord with supervisord configuration +# Since program 'jupyterlabserver' autostarts by default, it will be started +# automatically along with supervisord +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord.conf -n diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor new file mode 100755 index 00000000..82ed47ff --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') +export SERVICE_NAME='SageMakerUnifiedStudio' + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf -n \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..df5e052f --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# apply patches for SMUS +/etc/patches/apply_patches.sh smus && sudo rm -rf /etc/patches + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') +export SERVICE_NAME='SageMakerUnifiedStudio' + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-sagemaker-ui.conf -n diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/merge-settings-util.py b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/merge-settings-util.py new file mode 100644 index 00000000..8b93cae1 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/merge-settings-util.py @@ -0,0 +1,22 @@ +import json +from sys import argv + + +# merges json files file1 and file2, keys in file2 overwriting any keys that already exist in file1 +def main(): + file1, file2 = argv[1], argv[2] + # Read JSON data from files + with open(file1, "r") as f1, open(file2, "r") as f2: + data1 = json.load(f1) + data2 = json.load(f2) + + # Merge the data (simple update) + merged_data = {**data1, **data2} + + # Write the merged data to a new file + with open(file1, "w") as f: + json.dump(merged_data, f) + + +if __name__ == "__main__": + main() diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-jupyter-server new file mode 100755 index 00000000..6f2af98d --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-jupyter-server @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +echo "Restarting the Jupyter server. This page should refresh in a few seconds. Note that any terminals will be closed." +echo "If this page doesn't refresh after a few seconds, try reloading your browser window." +echo "Restarting now..." +nohup supervisorctl -c /etc/supervisor/conf.d/supervisord.conf restart jupyterlabserver > /dev/null 2>&1 & diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..8f5207b8 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +echo "Restarting the Jupyter server. This page should refresh in a few seconds. Note that any terminals will be closed." +echo "If this page doesn't refresh after a few seconds, try reloading your browser window." +echo "Restarting now..." +nohup supervisorctl -c /etc/supervisor/conf.d/supervisord-sagemaker-ui.conf restart jupyterlabserver > /dev/null 2>&1 & diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-code-editor b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bdd97c16 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,84 @@ +#!/bin/bash +set -e + +EFS_MOUNT_POINT="/opt/amazon/sagemaker" +EBS_MOUNT_POINT="/home/sagemaker-user" + +persistent_settings_folder="${EBS_MOUNT_POINT}/sagemaker-code-editor-server-data" +default_settings_folder="${EFS_MOUNT_POINT}/sagemaker-code-editor-server-data" + +override_machine_settings() { + # create a new settings file with preset defaults or merge the defaults into the existing settings file + local settings_relative_path="data/Machine" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_machine_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_machine_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + + if [ ! -f "$persistent_machine_settings_file" ]; then + # copy settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_machine_settings_file" "$persistent_machine_settings_file" + echo "Created persistent settings file with default settings at $persistent_machine_settings_file" + else + # if it does exist then merge settings + echo "File already exists: ${persistent_machine_settings_file}. Merging default settings with existing settings." + python3 /usr/local/bin/merge-settings-util.py "$persistent_machine_settings_file" "$default_machine_settings_file" + fi +} + +copy_user_settings() { + local settings_relative_path="data/User" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_user_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_user_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + if [ ! -f "$persistent_user_settings_file" ]; then + # copy user settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_user_settings_file" "$persistent_user_settings_file" + echo "Created persistent settings file with default settings at $persistent_user_settings_file" + fi +} + +install_prepackaged_extensions() { + local prepackaged_extensions_dir="${default_settings_folder}/extensions" + local persistent_extensions_dir="${persistent_settings_folder}/extensions" + + # if extensions directory doesn't exist then this is the first time opening the app + if [ ! -d "${persistent_extensions_dir}" ]; then + mkdir -p $persistent_extensions_dir + + # find all pre-packaged extensions folders, symlink them to the persistent volume + find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do + dir_name=$(basename "$dir") + + ln -s "$dir" "${persistent_extensions_dir}/${dir_name}" + echo "Added extension: $dir" + done + fi +} + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for sagemaker-distribution +micromamba activate base + +# Start code-editor server +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app. + override_machine_settings + copy_user_settings + install_prepackaged_extensions + # Configure the base url to be `//default`. + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --server-data-dir $persistent_settings_folder \ + --extensions-dir ${persistent_settings_folder}/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +else + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extension-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +fi diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-jupyter-server new file mode 100755 index 00000000..a0242ffb --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-jupyter-server @@ -0,0 +1,43 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +if [ -n "$SAGEMAKER_RECOVERY_MODE" ]; then + export HOME=$SAGEMAKER_RECOVERY_MODE_HOME + # Activate conda environment `sagemaker-recovery-mode` + micromamba activate /opt/conda/envs/sagemaker-recovery-mode +else + # Activate conda environment 'base' + micromamba activate base + jupyter labextension disable @amzn/sagemaker-data-explorer-jl-plugin sagemaker-data-explorer:plugin amzn/sagemaker-ui-theme-jlplugin @amzn/sagemaker-ui-doc-manager-jl-plugin @amzn/sagemaker-connection-magics-jlextension +fi + +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + jupyter labextension enable @jupyter/collaboration-extension + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker + # app. Configure the base url to be `//default`. + # SAGEMAKER_SPACE_TYPE_LOWERCASE flag is used to determine if the server should start + # in real-time-collaboration mode for a given space. + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' \ + --collaborative \ + --ServerApp.identity_provider_class=sagemaker_jupyterlab_extension_common.identity.SagemakerIdentityProvider \ + --YDocExtension.ystore_class=sagemaker_jupyterlab_extension_common.ydoc_override.ydoc.MySQLiteYStore + +# Start Jupyter server +elif [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker + # app. Configure the base url to be `//default`. + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' +else + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' +fi diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-code-editor b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-code-editor new file mode 100755 index 00000000..9183f485 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-code-editor @@ -0,0 +1,107 @@ +#!/bin/bash +set -e + +EFS_MOUNT_POINT="/opt/amazon/sagemaker" +EBS_MOUNT_POINT="/home/sagemaker-user" + +persistent_settings_folder="${EBS_MOUNT_POINT}/sagemaker-code-editor-server-data" +default_settings_folder="${EFS_MOUNT_POINT}/sagemaker-code-editor-server-data" + +override_machine_settings() { + # create a new settings file with preset defaults or merge the defaults into the existing settings file + local settings_relative_path="data/Machine" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_machine_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_machine_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + + if [ ! -f "$persistent_machine_settings_file" ]; then + # copy settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_machine_settings_file" "$persistent_machine_settings_file" + echo "Created persistent settings file with default settings at $persistent_machine_settings_file" + else + # if it does exist then merge settings + echo "File already exists: ${persistent_machine_settings_file}. Merging default settings with existing settings." + python3 /usr/local/bin/merge-settings-util.py "$persistent_machine_settings_file" "$default_machine_settings_file" + fi +} + +copy_user_settings() { + local settings_relative_path="data/User" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_user_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_user_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + if [ ! -f "$persistent_user_settings_file" ]; then + # copy user settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_user_settings_file" "$persistent_user_settings_file" + echo "Created persistent settings file with default settings at $persistent_user_settings_file" + fi +} + +install_prepackaged_extensions() { + local prepackaged_extensions_dir="${default_settings_folder}/extensions" + local persistent_extensions_dir="${persistent_settings_folder}/extensions" + + # if extensions directory doesn't exist then this is the first time opening the app + if [ ! -d "${persistent_extensions_dir}" ]; then + mkdir -p $persistent_extensions_dir + + # find all pre-packaged extensions folders, symlink them to the persistent volume + find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do + dir_name=$(basename "$dir") + + ln -s "$dir" "${persistent_extensions_dir}/${dir_name}" + echo "Added extension: $dir" + done + fi +} + +set_code_editor_theme() { + echo "Setting code editor theme" + bash /etc/sagemaker-ui/set_code_editor_theme.sh +} + +disableJupyterKernels() { + local kernel_list + kernel_list=$(jupyter kernelspec list) + + for kernel in "$@"; do + if echo "$kernel_list" | grep -q "$kernel"; then + echo "Removing kernel: $kernel" + jupyter kernelspec remove -f -y "$kernel" + else + echo "Kernel not found: $kernel" + fi + done +} + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for sagemaker-distribution +micromamba activate base + +# Disable Jupyter Kernels +disableJupyterKernels pysparkkernel sparkkernel glue_spark glue_pyspark + +# Start code-editor server +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app. + override_machine_settings + copy_user_settings + install_prepackaged_extensions + set_code_editor_theme + # Configure the base url to be `//default`. + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --server-data-dir $persistent_settings_folder \ + --extensions-dir ${persistent_settings_folder}/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +else + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extension-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +fi \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..b9748bfe --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for Cosmos +micromamba activate base + +sudo cp -r /etc/sagemaker-ui/kernels/. /opt/conda/share/jupyter/kernels/ +sudo cp /etc/sagemaker-ui/jupyter/server/jupyter_server_config.py /opt/conda/etc/jupyter/ + +mkdir -p /opt/conda/share/jupyter/lab/settings +cp -r /etc/sagemaker-ui/jupyter/lab/settings/. /opt/conda/share/jupyter/lab/settings + +if [[ $(jupyter kernelspec list | grep pysparkkernel) ]]; then + jupyter-kernelspec remove -f -y pysparkkernel +fi + +if [[ $(jupyter kernelspec list | grep sparkkernel) ]]; then + jupyter-kernelspec remove -f -y sparkkernel +fi + +if [[ $(jupyter kernelspec list | grep glue_spark) ]]; then + jupyter-kernelspec remove -f -y glue_spark +fi + +if [[ $(jupyter kernelspec list | grep glue_pyspark) ]]; then + jupyter-kernelspec remove -f -y glue_pyspark +fi + +jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' \ + --SchedulerApp.db_url='sqlite:////tmp/.jupyter_scheduler_do_not_delete.sqlite' \ + --collaborative \ + --ServerApp.identity_provider_class='sagemaker_jupyter_server_extension.identity.SageMakerIdentityProvider' diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in new file mode 100644 index 00000000..577d9abb --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in @@ -0,0 +1,6 @@ +conda-forge::cuda-compiler=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-libraries=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-libraries-dev=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-nvml-dev=12.6.77.* +conda-forge::cuda-command-line-tools=$CUDA_MAJOR_MINOR_VERSION +conda-forge::gds-tools=1.11.1.6.* \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in new file mode 100644 index 00000000..e9b813d3 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in @@ -0,0 +1,64 @@ +# This file is auto-generated. +conda-forge::s3fs[version='>=2024.10.0,<2024.11.0'] +conda-forge::seaborn[version='>=0.13.2,<0.14.0'] +conda-forge::jupyter-activity-monitor-extension[version='>=0.3.2,<0.4.0'] +conda-forge::mlflow[version='>=2.22.0,<2.23.0'] +conda-forge::sagemaker-mlflow[version='>=0.1.0,<0.2.0'] +conda-forge::langchain-aws[version='>=0.2.19,<0.3.0'] +conda-forge::jupyter-collaboration[version='>=3.1.0,<3.2.0'] +conda-forge::sagemaker-code-editor[version='>=1.5.0,<1.6.0'] +conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.7,<1.3.0'] +conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<3.5.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.18,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<0.2.0'] +conda-forge::langchain[version='>=0.3.26,<0.4.0'] +conda-forge::fastapi[version='>=0.115.13,<0.116.0'] +conda-forge::uvicorn[version='>=0.34.3,<0.35.0'] +conda-forge::pytorch[version='>=2.6.0,<2.7.0'] +conda-forge::tensorflow[version='>=2.18.0,<2.19.0'] +conda-forge::python[version='>=3.12.9,<3.13.0'] +conda-forge::pip[version='>=25.1.1,<25.2.0'] +conda-forge::torchvision[version='>=0.21.0,<0.22.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.2.3,<2.3.0'] +conda-forge::scikit-learn[version='>=1.6.1,<1.7.0'] +conda-forge::jinja2[version='>=3.1.6,<3.2.0'] +conda-forge::matplotlib-base[version='>=3.10.3,<3.11.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<0.1.0'] +conda-forge::ipython[version='>=8.36.0,<8.37.0'] +conda-forge::scipy[version='>=1.15.2,<1.16.0'] +conda-forge::keras[version='>=3.9.2,<3.10.0'] +conda-forge::py-xgboost-gpu[version='>=2.1.4,<2.2.0'] +conda-forge::jupyterlab[version='>=4.4.3,<4.5.0'] +conda-forge::ipywidgets[version='>=8.1.7,<8.2.0'] +conda-forge::conda[version='>=25.3.1,<25.4.0'] +conda-forge::boto3[version='>=1.37.1,<1.38.0'] +conda-forge::sagemaker-python-sdk[version='>=2.244.2,<2.245.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=1.3.1,<1.4.0'] +conda-forge::aws-glue-sessions[version='>=1.0.9,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.31.5,<2.32.0'] +conda-forge::jupyter-scheduler[version='>=2.10.0,<2.11.0'] +conda-forge::jupyter-lsp[version='>=2.2.5,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::jupyterlab-git[version='>=0.51.2,<0.52.0'] +conda-forge::python-lsp-server[version='>=1.12.2,<1.13.0'] +conda-forge::notebook[version='>=7.4.3,<7.5.0'] +conda-forge::altair[version='>=5.5.0,<5.6.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.7,<0.2.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.10,<0.4.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.14,<3.2.0'] +conda-forge::jupyter-server-proxy[version='>=4.4.0,<4.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.9.0,<1.10.0'] +conda-forge::tf-keras[version='>=2.18.0,<2.19.0'] +conda-forge::git-remote-codecommit[version='>=1.16,<1.17.0'] +conda-forge::docker-cli[version='>=27.5.1,<27.6.0'] +conda-forge::aioboto3[version='>=14.1.0,<14.2.0'] +conda-forge::sagemaker-studio-cli[version='>=1.0.6,<1.1.0'] +conda-forge::sagemaker-studio[version='>=1.0.16,<1.1.0'] +conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.13,<1.1.0'] +conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.11,<1.1.0'] diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in new file mode 100644 index 00000000..f066ccf6 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in @@ -0,0 +1,6 @@ +conda-forge::dash[version='<=2.18.1'] +conda-forge::evaluate[version='<0.4.2'] +conda-forge::libsqlite[version='<3.49.0'] +conda-forge::urllib3[version='<2'] +conda-forge::papermill[version='>=2.6.0'] +conda-forge::plotly[version='<6.1.0'] diff --git a/build_artifacts/v3/v3.1/v3.1.2/patch_glue_pyspark.json b/build_artifacts/v3/v3.1/v3.1.2/patch_glue_pyspark.json new file mode 100644 index 00000000..f92eee89 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/patch_glue_pyspark.json @@ -0,0 +1,15 @@ +{ + "argv": [ + "/opt/conda/bin/python", + "-m", + "sagemaker_kernel_wrapper.sm_gis_wrapper", + "-m", + "aws_glue_interactive_sessions_kernel.glue_pyspark.GlueKernel", + "-f", + "{connection_file}" + ], + "display_name": "Glue PySpark", + "env": {"request_origin": "SageMakerStudioPySparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v3/v3.1/v3.1.2/patch_glue_spark.json b/build_artifacts/v3/v3.1/v3.1.2/patch_glue_spark.json new file mode 100644 index 00000000..1bd168e7 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/patch_glue_spark.json @@ -0,0 +1,15 @@ +{ + "argv": [ + "/opt/conda/bin/python", + "-m", + "sagemaker_kernel_wrapper.sm_gis_wrapper", + "-m", + "aws_glue_interactive_sessions_kernel.glue_spark.GlueKernel", + "-f", + "{connection_file}" + ], + "display_name": "Glue Spark", + "env": {"request_origin": "SageMakerStudioSparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v3/v3.1/v3.1.2/source-version.txt b/build_artifacts/v3/v3.1/v3.1.2/source-version.txt new file mode 100644 index 00000000..50e47c89 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/source-version.txt @@ -0,0 +1 @@ +3.1.1 \ No newline at end of file From 29db478f2062cc683129d8b6bb5bb4010e2e083f Mon Sep 17 00:00:00 2001 From: Clayton Parnell Date: Tue, 15 Jul 2025 00:30:54 +0000 Subject: [PATCH 2/7] Patch env.in files --- build_artifacts/v3/v3.1/v3.1.2/cpu.env.in | 844 +++++++++++++++++-- build_artifacts/v3/v3.1/v3.1.2/gpu.env.in | 936 ++++++++++++++++++++-- 2 files changed, 1652 insertions(+), 128 deletions(-) diff --git a/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in index 93710c44..04b57763 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in +++ b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.in @@ -1,64 +1,780 @@ -# This file is auto-generated. -conda-forge::s3fs[version='>=2024.10.0,<2024.11.0'] -conda-forge::seaborn[version='>=0.13.2,<0.14.0'] -conda-forge::jupyter-activity-monitor-extension[version='>=0.3.2,<0.4.0'] -conda-forge::mlflow[version='>=2.22.0,<2.23.0'] -conda-forge::sagemaker-mlflow[version='>=0.1.0,<0.2.0'] -conda-forge::langchain-aws[version='>=0.2.19,<0.3.0'] -conda-forge::jupyter-collaboration[version='>=3.1.0,<3.2.0'] -conda-forge::sagemaker-code-editor[version='>=1.5.0,<1.6.0'] -conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.18,<0.2.0'] -conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<0.2.0'] -conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.7,<1.3.0'] -conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<3.5.0'] -conda-forge::langchain[version='>=0.3.26,<0.4.0'] -conda-forge::fastapi[version='>=0.115.13,<0.116.0'] -conda-forge::uvicorn[version='>=0.34.3,<0.35.0'] -conda-forge::pytorch[version='>=2.6.0,<2.7.0'] -conda-forge::tensorflow[version='>=2.18.0,<2.19.0'] -conda-forge::python[version='>=3.12.9,<3.13.0'] -conda-forge::pip[version='>=25.1.1,<25.2.0'] -conda-forge::torchvision[version='>=0.21.0,<0.22.0'] -conda-forge::numpy[version='>=1.26.4,<1.27.0'] -conda-forge::pandas[version='>=2.2.3,<2.3.0'] -conda-forge::scikit-learn[version='>=1.6.1,<1.7.0'] -conda-forge::jinja2[version='>=3.1.6,<3.2.0'] -conda-forge::matplotlib-base[version='>=3.10.3,<3.11.0'] -conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<0.1.0'] -conda-forge::ipython[version='>=8.36.0,<8.37.0'] -conda-forge::scipy[version='>=1.15.2,<1.16.0'] -conda-forge::keras[version='>=3.9.2,<3.10.0'] -conda-forge::py-xgboost-cpu[version='>=2.1.4,<2.2.0'] -conda-forge::jupyterlab[version='>=4.4.3,<4.5.0'] -conda-forge::ipywidgets[version='>=8.1.7,<8.2.0'] -conda-forge::conda[version='>=25.3.1,<25.4.0'] -conda-forge::boto3[version='>=1.37.1,<1.38.0'] -conda-forge::sagemaker-python-sdk[version='>=2.244.2,<2.245.0'] -conda-forge::supervisor[version='>=4.2.5,<4.3.0'] -conda-forge::autogluon[version='>=1.3.1,<1.4.0'] -conda-forge::aws-glue-sessions[version='>=1.0.9,<1.1.0'] -conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<0.1.0'] -conda-forge::jupyter-ai[version='>=2.31.5,<2.32.0'] -conda-forge::jupyter-scheduler[version='>=2.10.0,<2.11.0'] -conda-forge::jupyter-lsp[version='>=2.2.5,<2.3.0'] -conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] -conda-forge::python-lsp-server[version='>=1.12.2,<1.13.0'] -conda-forge::jupyterlab-git[version='>=0.51.2,<0.52.0'] -conda-forge::notebook[version='>=7.4.3,<7.5.0'] -conda-forge::altair[version='>=5.5.0,<5.6.0'] -conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.7,<0.2.0'] -conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] -conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<0.5.0'] -conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.10,<0.4.0'] -conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.14,<3.2.0'] -conda-forge::jupyter-server-proxy[version='>=4.4.0,<4.5.0'] -conda-forge::pyhive[version='>=0.7.0,<0.8.0'] -conda-forge::python-gssapi[version='>=1.9.0,<1.10.0'] -conda-forge::tf-keras[version='>=2.18.0,<2.19.0'] -conda-forge::git-remote-codecommit[version='>=1.16,<1.17.0'] -conda-forge::docker-cli[version='>=27.5.1,<27.6.0'] -conda-forge::aioboto3[version='>=14.1.0,<14.2.0'] -conda-forge::sagemaker-studio-cli[version='>=1.0.6,<1.1.0'] -conda-forge::sagemaker-studio[version='>=1.0.16,<1.1.0'] -conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.13,<1.1.0'] -conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.11,<1.1.0'] +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.7-h024ca30_0.conda#b9c9b2f494533250a9eb7ece830f4422 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-cpu_0.tar.bz2#23b8f98a355030331f40d0245492f715 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda#9e60c55e725c20d23125a5f0dd69af5d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda#e66f2b8ad787e7beb0f846e4bd7e8493 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda#6dc9e1305e7d3129af4ad0dabda30e56 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda#1a580f7796c7bf6393fddb8bbbde58dc +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda#72525f07d72806e3b639ad4504c30ce5 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda#a0116df4f4ed05c303811a837d5b39d8 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda#5665f0079432f8848079c811cdb537d5 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda#0dfcdc155cf23812a0c9deada86fb723 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda#e5279009e7a7f7edd3cd2880c502b3cc +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda#859c6bec94cd74119f12b961aba965a8 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.3.0-pyhd8ed1ab_0.conda#6ec4201043eb00aefffeef8fbb46444a +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/linux-64/hf-xet-1.1.5-py39h260a9e5_3.conda#7b6007f4ad18a970ca3a977148cf47de +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda#cf2485f39740de96e2a7f2bb18ed2fee +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda#781d068df0cc2407d4db0ecfbb29225b +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda#6d11a5edae89fe413c0569f16d308f5a +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda#a32e0c069f6c3dcac635f7b0b0dac67e +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda#f6082eae112814f1447b56a5e1f6ed05 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda#2adcd9bb86f656d3d43bf84af59a1faf +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda#a1cdd40fc962e2f7944bc19e01c7e584 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.33.1-pyhd8ed1ab_0.conda#4a634f9e9ad0e28ecd4da031a4616d03 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda#57541755b5a51691955012b8e197c06c +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_hfdb39a5_mkl.conda#eceb19ae9105bc4d0e8d5a321d66c426 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_h372d94f_mkl.conda#68b55daaf083682f58d9b7f5d52aeb37 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_hc41d3b0_mkl.conda#6dc827963c12f90c79f5b2be4eaea072 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda#3facaca6cc0f7988df3250efccd32da3 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda#eb227c3e0bf58f5bd69c0532b157975b +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda#1349c022c92c5efd3fd705a79a5804d8 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cpu_mkl_hc5f969b_101.conda#284859a044d1c9b9e1c0a29cee771305 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda#16bff3d37a4f99e3aa089c36c2b8d650 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.16.0-py312h68727a3_0.conda#0d981a6b5671f1013ff2e682fee925c2 +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda#730a5284e26d6bdb73332dafb26aec82 +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda#1594696beebf1ecb6d29a1136f859a74 +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py312h7201bc8_0.conda#c539cba0be444c6cefcb853987187d9e +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py312_h446997d_101.conda#47d470ce7ceb3775d3f1a4c00ecef44d +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda#fd1fc1f1e6ceee16d9a58d3ff5a57c7f +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.8.0-pyhe01879c_0.conda#7c252bceacb8e65e8a34dff228036899 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda#2979458c23c7755683a0598fb33e7666 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda#45f6713cb00f124af300342512219182 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda#cb98af5db26e3f482bebb80ce9d947d3 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda#1c6eecffad553bde44c5238770cfb7da +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda#3facafe58f3858eb95527c7d3a3fc578 +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda#e46f7ac4917215b49df2ea09a694a3fa +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h202a827_0.conda#0f98f3e95272d118f7931b6bef69bfe5 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hc7b3859_3_cpu.conda#9ed3ded6da29dec8417f2e1db68798f2 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_3_cpu.conda#8f8dc214d89e06933f1bc1dcd2310b9c +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_3_cpu.conda#1d04307cdb1d8aeb5f55b047d5d403ea +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_3_cpu.conda#a28f04b6e68a1c76de76783108ad729d +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_3_cpu.conda#a58e4763af8293deaac77b63bc7804d8 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda#227543d1eef90da786f0c63bd0787839 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda#972f2a7f04b117accc08a11469c2cb6e +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda#37511c874cf3b8d0034c8d24e73c0884 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda#072ab14a02164b7c0c089055368ff776 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda#39b4228a867772d610c02e06f939a5b8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda#64f0c503da58ec25ebd359e4d990afa8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda#e79a094918988bb1807462cd42c83962 +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda#951ff8d9e5536896408e89d63230b8d5 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda#0e6e192d4b3d95708ad192d957cf3163 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda#eeb18017386c92765ad8ffa986c3f4ce +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py312hb9e946c_0.conda#13290e5d9cb327b1b61c1bd8089ac920 +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.5.1-py312h178313f_0.conda#291622f79db2b176d2c142b40e4b6640 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda#0cf580c1b73146bb9ff1bbdb4d4c8cf9 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.1-py312h178313f_0.conda#3b3fa80c71d6a8d0380e9e790f5a4a8a +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.12.13-py312h178313f_0.conda#a91df3f6eaf0d0afd155274a1833ab3c +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.1-pyge310_1234567_0.conda#8c3c37279f889ee8507d43ab70558b6a +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda#669e63af87710f8d52fdec9d4d63b404 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.21.1-pyhd8ed1ab_0.conda#843cfdc4c1222b19d6fd18c4a51c660e +https://conda.anaconda.org/conda-forge/noarch/aiofiles-24.1.0-pyhd8ed1ab_1.conda#7e8045a75e921648c082ba7cd7edd114 +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.1-pyhd8ed1ab_0.conda#eb2c073da600ba16cd6a4714c5c73966 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda#a861504bbea4161a9170b85d4d2be840 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda#f56a043ace4885f37c8856a24447cd19 +https://conda.anaconda.org/conda-forge/noarch/aioboto3-14.1.0-pyhd8ed1ab_0.conda#f12c3d54c5c52200165bf908b121bab7 +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.3-py312h2ec8cdc_0.conda#78380a74e2375eb8244290e181b2738b +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.41-py312h66e93f0_0.conda#4e2266c17e82847dfced222aef58d3fa +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.16.2-pyhd8ed1ab_0.conda#61051bb1e2762c4b9ef892d2e0e808e2 +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda#ea8f79edf890d1f9b2f1bd6fbb11be1e +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.44.0-pyhe01879c_0.conda#e4d62696245e39222c5df7f903c7bf3a +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda#089cf3a3becf0e2f403feaf16e921678 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda#fa0ab7d5bee9efbc370e71bcb5da9856 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda#c532a6ee766bed75c4fa0c39e959d132 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda#1505fc57c305c0a3174ea7aae0a0db25 +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda#e3465397ca4b5b60ba9fbc92ef0672f9 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda#6b51f7459ea4073eeb5057207e2e1e3d +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda#c64b77ccab10b822722904d889fa83b5 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda#f062e04d7cd585c937acbf194dceec36 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda#7ed6505c703f3c4e1a58864bf84505e2 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda#4861a0c2a5a5d0481a450a9dfaf9febe +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py312hf23773a_0_cpu.conda#491cf749a5f0afd80e9ee55eeced9029 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda#94b550b8d3a614dbd326af798c7dfb40 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda#8f0ef561cd615a17df3256742a3457c4 +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py312h66e93f0_0.conda#6198b134b1c08173f33653896974d477 +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py312h68727a3_0.conda#6998b34027ecc577efe4e42f4b022a98 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.5.1-pyhd8ed1ab_0.conda#d2949f56a1479507e36e847681903376 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py312h680f630_1.conda#eedc1c23e7c2506fa9cfe783dd6ab343 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py312h680f630_0.conda#cfbd96e5a0182dfb4110fc42dda63e57 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.1-pyhd8ed1ab_0.conda#e0c3cd765dc15751ee2f0b03cd015712 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.7-pyh3cfb1c2_0.conda#1b337e3d378cde62889bb735c024b7a2 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda#630db208bc7bbb96725ce9832c7423bb +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.3.45-pyhd8ed1ab_0.conda#1f21529048d043beeb921309f1ca0ac0 +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.66-pyhd8ed1ab_0.conda#6897a9ddf32e72bae472e36eccf9b5ee +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.26-pymin312_hff2d567_0.conda#654dc5198c521803a71483de1eb89870 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.1-pyhd8ed1ab_0.conda#11186f5dd073e7d06e711eb3abdb6252 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.1-pyhe01879c_0.conda#a245b3c04afa11e2e52a0db91550da7c +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.10.1-pyh3cfb1c2_0.conda#a5f9c3e867917c62d796c20dba792cbd +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.26-pymin312_hff2d567_0.conda#fea0544b6915ebe0704430dedfad6c4a +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.5-pyhd8ed1ab_0.conda#41b4b77f68735141bc9ce0dfa086f964 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.5-pyhd8ed1ab_0.conda#3c6add0cd4be58fd46be166ce746b903 +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda#9d7e427d159c1b2d516cc047ff177c48 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.22.0-py312h2a9cbd2_0_cpu.conda#286d77f94e44b63ede4da4421c18f469 +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py312h12e396e_1.conda#740678aaa7e636cb16e3c20d0bc25bae +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.5-pyhd8ed1ab_0.conda#021b91df1d4eb889f8aeb3a31e566fed +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py312h66e93f0_0.conda#24bb4c00c7131d687ca2497ae1c3d369 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda#cc3f6c452697c1cf7e4e6e5f21861f96 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda#647770db979b43f9c9ca25dcfa7dc4e4 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.2-py312h8360d73_0.conda#f311d7f63df2ab7069a98f5a89f9d358 +https://conda.anaconda.org/conda-forge/noarch/transformers-4.52.4-pyhd8ed1ab_0.conda#9fa4ceae2fb9e7ec0732f5a756f89957 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.7-pyhd8ed1ab_0.conda#54bc7622f2b937354e612e2c37b316a9 +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda#db0c1632047d38997559ce2c4741dd91 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.14-pyhd8ed1ab_0.conda#17e598c07100b87139b6a5553fba69f0 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.14.1-pyhd8ed1ab_0.conda#e924ef9dbb417744c403278dd8935beb +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py312h68d7fa5_0.conda#9143d654930fa7d0ad1e351705419cb5 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.1.0-pyhd8ed1ab_0.conda#63d6393b45f33dc0782d73f6d8ae36a0 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py312h6792212_0.conda#caf61e949e00e4d9c042e063ac6ba66d +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.8-pyhd8ed1ab_0.conda#42b5f37b10ba04142cda8b050e9c2cb9 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.18-pyhd8ed1ab_0.conda#7bc4fab0346049ac13c84d23eb0f4e3b +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py312h7900ff3_2.conda#801dc9d60ee0cf91a038c0a2e8d4f9ff +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.10-py312h7900ff3_0.conda#60b9f877a7d36f146c30eb6683e4611b +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda#679616eb5ad4e521c83da4650860aba7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.1-pyhd8ed1ab_0.conda#a369bc6bfe475eefe1d9944c3ad572f1 +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda#530566b68c3b8ce7eec4cd047eae19fe +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda#bfbca721fd33188ef923dfe9ba172f29 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4 +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py312h68727a3_0.conda#e688276449452cdfe9f8f5d3e74c23f6 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda#58178ef8ba927229fba6d84abf62c108 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda#5d08a0ac29e6a5a984817584775d4131 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h66e93f0_0.conda#617f5d608ff8c28ad546e5d9671cbb95 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.58.4-py312h178313f_0.conda#223a4616e3db7336569eafefac04ebbf +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.8-py312h84d6215_0.conda#6713467dc95509683bfa3aca08524e8a +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda#ca438bf57e4f2423d261987fe423a0dd +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.3-py312hd3ec401_0.conda#2d69618b52d70970c81cc598e4b51118 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py312hacea422_2.conda#f15344009e4ae0f5e325e7027f8b5f00 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.3-pyhd8ed1ab_0.conda#86fca051b6bf09b7a3a3669bb95f46fa +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.25.1-pyhd8ed1ab_0.conda#bfd74c9dddb221548d9c3f1f583693b2 +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py312h7900ff3_3.conda#74fb2303c60877f472df935713ee8906 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py312h66e93f0_0.conda#0c9df8f9c424f4d3dea521dff3a6cfd6 +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py312h1d27fe0_0.conda#e678f6ce596716b09beee53b3f56523c +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda#c0600c1b374efa7a1ff444befee108ca +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py312hd4369dc_0.conda#67b2b0b9fa797381c62c45341be4a759 +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py312h7900ff3_0.conda#9c98a8ccc4ccdc9240c8d0f8f065fe50 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda#fb1c14694de51a476ce8636d92b6f42c +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py312h7a48858_0.conda#102727f71df02a51e9e173f2e6f87d57 +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.1-pyha770c72_0.conda#2f03e5650c2613bbd308795357ca468c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.1-pyhd8ed1ab_0.conda#4227e5a9081a3767b3c9065be7668da7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda#7aed65d4ff222bfb7335997aa40b7da5 +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.3-pyhd8ed1ab_0.conda#8c31b5c412e6bd9068f41c112bc5a046 +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.2-pyh2a12c56_0.conda#519624ba6f01f782378cd6c40f724e1f +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.2-pyhd8ed1ab_0.conda#c94b0d7de40f2b827a75e5226759cbb4 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda#7908b7b977e2e123a5f6a29906f2ce44 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda#480e915dfc6c592615ef6f217e615aa6 +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda#32d0781ace05105cc99af55d36cbec7c +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.19.0-h3122c55_0.conda#c5b981f3e3d8dff6d6c949a28e068c59 +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda#01ba04e414e47f95c03d6ddd81fd37be +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.7.1-h8fae777_3.conda#2c42649888aac645608191ffdc80d13a +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h766b0b6_0.conda#f17f2d0e5c9ad6b958547fd67b155771 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_2.conda#7b7baf93533744be2c0228bfa7149e2d +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2025.3.30-py312h6cec22d_2.conda#20e0ec9dff3aa9627c83908695c36c6b +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.6.11-pyhd8ed1ab_0.conda#9363f389b9fe136488fef8664acb77c6 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py312hf9745cd_1.conda#7c03f16bb8578b48352ee006adf6a5b3 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312hda17c39_2.conda#8f4e72393be23b3eaa7bbc3cd4a71c40 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py312h4387730_2.conda#65bf2daf3fe8f93bdaa4faba8b1ba525 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cpu_py312_h11dcf35_1.conda#64c4f7042c362b18432f39687d7d00ea +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.1-pyha770c72_1.conda#1f5c932b308c8ff392687e9b0fc868e3 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda#f2ec1facec64147850b7674633978050 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda#d4a250da4737ee127fb1fa6452a9002e +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda#397a013c2dc5145a70737871aaa87e98 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda#fedf6bfe5d21d21d2b1785ec00a8889a +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.0.1-hcae58fd_0.conda#99f9aae829a0e18b9c2e21ece0f24155 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda#606d94da4566aa177df7615d68b29176 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.7-cpu_py312he8b0ff3_1.conda#97835b2659eabf5e4af04509b8c549bc +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.8.4-pyhe01879c_0.conda#f3e5d266553598db489b104dd9eddf6f +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/noarch/beartype-0.21.0-pyhd8ed1ab_0.conda#526bf12efa59226d9f76cd6742debc41 +https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.7-pyhd8ed1ab_0.conda#3b1f2b1d68f8ce1485483d0fab7946e1 +https://conda.anaconda.org/conda-forge/noarch/fasttransform-0.0.2-pyhd8ed1ab_0.conda#f89014a6a84308689546b345046af5a0 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py312h7900ff3_1.conda#f5199236b25aaea51cbd9aa739c8b5ee +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py312h2ec8cdc_0.conda#410e982d8d3b88e765af9a1b1d69fb0a +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py312h2ec8cdc_0.conda#94f1c9e6aab5b54f044e2497f411f841 +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py312h2ec8cdc_2.conda#b4a314e8506480d1beec34d6cb80af0c +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py312h2ec8cdc_2.conda#c2aa6644b548004f0ec02f6e856ac97f +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda#96226f62dddc63226472b7477d783967 +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py312h2ec8cdc_1.conda#701c0fbfe87aaef3ec8ea61f1e6f883e +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py312hc0a28a1_0.conda#7b44c443a3bf8d3c802915c351481802 +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py312hc39e661_1.conda#cf356df8a75d126e7df31f1a16916c0c +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.16.0-pyhe01879c_0.conda#0d0a6c08daccb968c8c8fa93070658e2 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.16.0-hf964461_0.conda#c8fb6ddb4f5eb567d049f85b3f0c8019 +https://conda.anaconda.org/conda-forge/noarch/typer-0.16.0-pyh167b9f4_0.conda#985cc086b73bda52b2f8d66dcda460a1 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.1-pyhd8ed1ab_0.conda#d401b7d72e2cf55444b12110ed953c9d +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.6-py312hc39e661_0.conda#61b6e10d922f0c57ebf33f943835513e +https://conda.anaconda.org/conda-forge/noarch/fastai-2.8.2-pyhd8ed1ab_0.conda#cf834c6151a41eec121f1a06993e0847 +https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda#eead4e74198698d1c74f06572af753bc +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda#45c3d2c224002d6d0d7769142b29f986 +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cpu_h2211129_2.conda#84afdcf3c6357d1b805d6fb6d6cb1829 +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cpu_py_2.conda#f005f183126727bb9a65e9df10e9591d +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cpu_h97e353d_2.conda#35c3f410cf4a9f010b47ed4382d7ee3c +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cpu_pyhf5c67e3_2.conda#d1ff3691bce31b0ae64840e22549b555 +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cpu_pyhc1a9e11_2.conda#7e87579f3c6d0ff91ab9709c5734f9b9 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.1-pyha770c72_0.conda#b9da6982f845888dedc7b43d4afffa84 +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.15-py312h68727a3_1.conda#f90e4aac7ca01df9a415d9dfaea61c24 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py312h374181b_1.conda#146d3cc72c65fdac198c09effb6ad133 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py312h7bcfee6_1.conda#4444225bda83e059d679990431962b86 +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/optuna-4.4.0-pyhd8ed1ab_0.conda#9681872830205de109933b1627565b98 +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py312hc0a28a1_0.conda#97dc960f3d9911964d73c2cf240baea5 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py312h68727a3_0.conda#baf8f16b09f827b0d45debaee01777a8 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.1-pyhd8ed1ab_0.conda#c9c953d18ce38e878289d19edc43b962 +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.1-pyhd8ed1ab_0.conda#a7b48730720e6d96c0228719bfa9a945 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.3-pyhd8ed1ab_0.conda#f0b767b717cab652712d29f5e4699b2a +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py312h680f630_1.conda#acb276847c5bb9eaa38ab8a205fa5ff8 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.3-pyhd8ed1ab_0.conda#708d2f99b8a2c833ff164a225a265e76 +https://conda.anaconda.org/conda-forge/noarch/boltons-25.0.0-pyhd8ed1ab_0.conda#c7eb87af73750d6fd97eff8bbee8cb9c +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hff21bea_1.conda#54e8e1a8144fd678c5d43905e3ba684d +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.1-gpl_h98cc613_100.conda#9de6247361e1ee216b09cfb8b856e2ee +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.33-h7955e40_0.conda#9400594fb2639595bb20a7e723d347f0 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.13.0-h84d6215_0.conda#f2d511bfca0cc4acca4bb40cd1905dff +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.3.0-h44402ff_1.conda#6826be8fbb2b2105ef738dfb5d8db373 +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.3.0-py312hd15d01f_1.conda#4622266e83387a3cdd0459cdd3e92771 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-25.4.0-pyhd8ed1ab_0.conda#d62b8f745ff471d5594ad73605cb9b59 +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda#9fa8408745a0621314b7751d11fecc18 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.3.0-py312h7900ff3_0.conda#3de345c0744dae205b36d53b1671d210 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda#7da7ccd349dbf6487a7778579d2bb971 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda#08223e6a73e0bca5ade16ec4cebebf23 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda#532c3e5d0280be4fea52396ec1fa7d5d +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda#ebef257605116235f5feac68640b44ca +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/linux-64/conda-25.3.1-py312h7900ff3_1.conda#360a82a866a7acad48aff85b21e0dc39 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda#4c18b79fa2a3371557ed3663876e5dcc +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.1-pyhd8ed1ab_0.conda#ffad1a6161226d41e3735b73bae5c71c +https://conda.anaconda.org/conda-forge/noarch/retrying-1.4.0-pyhd8ed1ab_0.conda#51546f424879ee8e4078a68440f0adf5 +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.56.0-pyhd8ed1ab_0.conda#966c48567dbfc595d36d84ca9c645391 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda#c47ede9450b5347c1933ccb552fca707 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda#8b1160b32557290b64d5be68db3d996d +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.3-pyh31011fe_0.conda#1520c1396715d45d02f5aa045854a65c +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda#998e481e17c1b6a74572e73b06f2df08 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.0-py312h12e396e_0.conda#34ded0fc4def76a526a6f0dccb95d7f3 +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py312h66e93f0_0.conda#b986da7551224417af6b7da4021d8050 +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.3-h31011fe_0.conda#6d80b382cafd45723e75dccef6496c67 +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.13-pyhe01879c_0.conda#0e61e817af37098262b5ae1f4e04988b +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py312h7900ff3_1.conda#0b3cda7592a578100a59e6249f3dd409 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.14.0-nompi_py312h3faca00_100.conda#2e1c2a9e706c74c4dd6f990a680f3f90 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.2-pyhd8ed1ab_1.conda#37a94508cbdcd62f070611d58a34d7ea +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-ui-1.1.0-pyhd8ed1ab_0.conda#bd119067187f4433a1b6198641cc7455 +https://conda.anaconda.org/conda-forge/noarch/jupyter-docprovider-1.1.0-pyhd8ed1ab_1.conda#ad55ecaaaad84425e8d43999f292861a +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.22-py312h12e396e_0.conda#0811638ed5ae09844c1937cdac9744f1 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-3.0.5-pyhe01879c_0.conda#4c6ccefebe5a565fe11d6cd27ad440ff +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-1.1.0-pyhd8ed1ab_0.conda#7c62cd204b2d73669660d470395bcf84 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-3.1.0-pyhd8ed1ab_1.conda#0b0e68cfbf29cfad511a3d26f5e41279 +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.2-pyhd8ed1ab_0.conda#154beb643d4c3eb9061330273a259d1b +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda#c070bbf2a3c9e2e6d2c64b219e2e78da +https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda#3eb854547a0183b994431957fa0e05d2 +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda#8504a291085c9fb809b66cabd5834307 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.1-hb9d3cd8_0.conda#0ca6814d958b87c6a1cfd45595bab974 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.1-hb9d3cd8_0.conda#5430a506fc720a733645681173c1ef4c +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.1-ha770c72_0.conda#6ae6fce1fc70ffc08191b124ece985e2 +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.34.1-pyhd8ed1ab_0.conda#5f8298becc7e960d6fdf6b2f4a1da9d6 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.55b1-pyh3cfb1c2_0.conda#83f5d3b75f94f89c838ddaa815d517ff +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.34.1-pyhd8ed1ab_0.conda#78f31192e8556616e2f26df38a4ad2a0 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h7900ff3_0.conda#5e516c19e74ae73336c2347ae2865f29 +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py312h7900ff3_0.conda#7d596694edb90e5b6da4fd2044e684bb +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h7900ff3_0.conda#6383d12a3d7895d4fbf8455861d75dc1 +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/noarch/param-2.2.1-pyhd8ed1ab_0.conda#b6f8a6ac73c7d5fdc5efc206ac8c98c4 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/noarch/panel-1.7.1-pyhd8ed1ab_0.conda#ce7149f1fc36e23ae60ba5a70a249c67 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_2.conda#34cd253bb51e7e4383b2e1154e44a17c +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-cpu-2.1.4-pyhc1a9e11_2.conda#828e95e1dea0ddc2e2dcc3b1078ca5dd +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda#755cf22df8693aa0d1aec1c123fa5863 +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py312h2ec8cdc_1.conda#0492f04061eb5d62e3abbdc98d96f187 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py312h3770eae_0.conda#a6ce17f7df2ac544a6fe44c613ade87f +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py312h7900ff3_1.conda#3431d27257f5c9cfd5e21ef71599d234 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda#a49c2283f24696a7b30367b7346a0144 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda#ce978e1b9ed8b8d49164e90a5cdc94cd +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py312h3770eae_1.conda#c6a5fb58b00dfcb11ac95db2f253e8db +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_1.conda#845d9730024ab628f55d384631ceb499 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.1-h4085919_0.conda#47c5ac0b1181281d598b08995c0f392c +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.32-pyhd8ed1ab_0.conda#35484e383f15fadfffbaea841e776fab +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.10-pyhd8ed1ab_0.conda#149b23dd93713f2066324b770b0c1cb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.2-pyhff2d567_0.conda#e87f696235e55e29041904c04681fe86 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.16-pyhd8ed1ab_0.conda#c0f618aa313465cbf4641c20b90e839e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.2.0-pyhd8ed1ab_0.conda#5eab568b6c7ad23036978f5a01bf5fa9 +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.11-pyhbbac1ac_0.conda#97aeb43d04c648de7c1a9c3021554e31 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.13-pyhd8ed1ab_0.conda#a1758cb32e13858ce4a810dd5ef9abb1 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py312h7900ff3_3.conda#49365e846c0247fc2fdfa9494c91e192 +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cpu_py312h099d1c6_0.conda#90302f6d1d41808be7c73f0fd3eb4303 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cpu_py312hc0a35a6_0.conda#a5167a1ef11ed952f96bf0a60af898f5 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cpu_py312h69ecde4_0.conda#a2192deb0165a2e7569a59c64b5be05b +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in index e9b813d3..47ec8aea 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.in @@ -1,64 +1,872 @@ -# This file is auto-generated. -conda-forge::s3fs[version='>=2024.10.0,<2024.11.0'] -conda-forge::seaborn[version='>=0.13.2,<0.14.0'] -conda-forge::jupyter-activity-monitor-extension[version='>=0.3.2,<0.4.0'] -conda-forge::mlflow[version='>=2.22.0,<2.23.0'] -conda-forge::sagemaker-mlflow[version='>=0.1.0,<0.2.0'] -conda-forge::langchain-aws[version='>=0.2.19,<0.3.0'] -conda-forge::jupyter-collaboration[version='>=3.1.0,<3.2.0'] -conda-forge::sagemaker-code-editor[version='>=1.5.0,<1.6.0'] -conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.7,<1.3.0'] -conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<3.5.0'] -conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.18,<0.2.0'] -conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<0.2.0'] -conda-forge::langchain[version='>=0.3.26,<0.4.0'] -conda-forge::fastapi[version='>=0.115.13,<0.116.0'] -conda-forge::uvicorn[version='>=0.34.3,<0.35.0'] -conda-forge::pytorch[version='>=2.6.0,<2.7.0'] -conda-forge::tensorflow[version='>=2.18.0,<2.19.0'] -conda-forge::python[version='>=3.12.9,<3.13.0'] -conda-forge::pip[version='>=25.1.1,<25.2.0'] -conda-forge::torchvision[version='>=0.21.0,<0.22.0'] -conda-forge::numpy[version='>=1.26.4,<1.27.0'] -conda-forge::pandas[version='>=2.2.3,<2.3.0'] -conda-forge::scikit-learn[version='>=1.6.1,<1.7.0'] -conda-forge::jinja2[version='>=3.1.6,<3.2.0'] -conda-forge::matplotlib-base[version='>=3.10.3,<3.11.0'] -conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<0.1.0'] -conda-forge::ipython[version='>=8.36.0,<8.37.0'] -conda-forge::scipy[version='>=1.15.2,<1.16.0'] -conda-forge::keras[version='>=3.9.2,<3.10.0'] -conda-forge::py-xgboost-gpu[version='>=2.1.4,<2.2.0'] -conda-forge::jupyterlab[version='>=4.4.3,<4.5.0'] -conda-forge::ipywidgets[version='>=8.1.7,<8.2.0'] -conda-forge::conda[version='>=25.3.1,<25.4.0'] -conda-forge::boto3[version='>=1.37.1,<1.38.0'] -conda-forge::sagemaker-python-sdk[version='>=2.244.2,<2.245.0'] -conda-forge::supervisor[version='>=4.2.5,<4.3.0'] -conda-forge::autogluon[version='>=1.3.1,<1.4.0'] -conda-forge::aws-glue-sessions[version='>=1.0.9,<1.1.0'] -conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<0.1.0'] -conda-forge::jupyter-ai[version='>=2.31.5,<2.32.0'] -conda-forge::jupyter-scheduler[version='>=2.10.0,<2.11.0'] -conda-forge::jupyter-lsp[version='>=2.2.5,<2.3.0'] -conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] -conda-forge::jupyterlab-git[version='>=0.51.2,<0.52.0'] -conda-forge::python-lsp-server[version='>=1.12.2,<1.13.0'] -conda-forge::notebook[version='>=7.4.3,<7.5.0'] -conda-forge::altair[version='>=5.5.0,<5.6.0'] -conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.7,<0.2.0'] -conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] -conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<0.5.0'] -conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.10,<0.4.0'] -conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.14,<3.2.0'] -conda-forge::jupyter-server-proxy[version='>=4.4.0,<4.5.0'] -conda-forge::pyhive[version='>=0.7.0,<0.8.0'] -conda-forge::python-gssapi[version='>=1.9.0,<1.10.0'] -conda-forge::tf-keras[version='>=2.18.0,<2.19.0'] -conda-forge::git-remote-codecommit[version='>=1.16,<1.17.0'] -conda-forge::docker-cli[version='>=27.5.1,<27.6.0'] -conda-forge::aioboto3[version='>=14.1.0,<14.2.0'] -conda-forge::sagemaker-studio-cli[version='>=1.0.6,<1.1.0'] -conda-forge::sagemaker-studio[version='>=1.0.16,<1.1.0'] -conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.13,<1.1.0'] -conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.11,<1.1.0'] +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.7-h024ca30_0.conda#b9c9b2f494533250a9eb7ece830f4422 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-gpu_0.tar.bz2#7702188077361f43a4d61e64c694f850 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda#9e60c55e725c20d23125a5f0dd69af5d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda#e66f2b8ad787e7beb0f846e4bd7e8493 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda#acd9213a63cb62521290e581ef82de80 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda#1a580f7796c7bf6393fddb8bbbde58dc +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda#72525f07d72806e3b639ad4504c30ce5 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda#a0116df4f4ed05c303811a837d5b39d8 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda#5665f0079432f8848079c811cdb537d5 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda#0dfcdc155cf23812a0c9deada86fb723 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda#e5279009e7a7f7edd3cd2880c502b3cc +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda#859c6bec94cd74119f12b961aba965a8 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.3.0-pyhd8ed1ab_0.conda#6ec4201043eb00aefffeef8fbb46444a +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/linux-64/hf-xet-1.1.5-py39h260a9e5_3.conda#7b6007f4ad18a970ca3a977148cf47de +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda#cf2485f39740de96e2a7f2bb18ed2fee +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda#781d068df0cc2407d4db0ecfbb29225b +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda#6d11a5edae89fe413c0569f16d308f5a +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda#a32e0c069f6c3dcac635f7b0b0dac67e +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda#f6082eae112814f1447b56a5e1f6ed05 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda#2adcd9bb86f656d3d43bf84af59a1faf +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda#a1cdd40fc962e2f7944bc19e01c7e584 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.33.1-pyhd8ed1ab_0.conda#4a634f9e9ad0e28ecd4da031a4616d03 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda#57541755b5a51691955012b8e197c06c +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_hfdb39a5_mkl.conda#eceb19ae9105bc4d0e8d5a321d66c426 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_h372d94f_mkl.conda#68b55daaf083682f58d9b7f5d52aeb37 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_hc41d3b0_mkl.conda#6dc827963c12f90c79f5b2be4eaea072 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda#3facaca6cc0f7988df3250efccd32da3 +https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda#1c8b99e65a4423b1e4ac2e4c76fb0978 +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.6.77-h3f2d84a_0.conda#314908ad05e2c4833475a7d93f4149ca +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.6.77-h5888daf_0.conda#feb533cb1e5f7ffbbb82d8465e0adaad +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.6.80-hbd13f7d_0.conda#85e9354a9e32f7526d2451ed2bb93347 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.6.85-hbd13f7d_0.conda#9d9909844a0133153d54b6f07283da8c +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.6.77-hbd13f7d_0.conda#3fe3afe309918465f82f984b3a1a85e9 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.6.4.1-h5888daf_1.conda#7718c5dd31ed259736a30b8a1422de70 +https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda#c19f7281266ca77da5458d2ccf17ba82 +https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda#bce8ec010b35f2c1e5db441f3f396754 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda#5aa5b04b995ebe10fe44de6fe93b1850 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda#eb227c3e0bf58f5bd69c0532b157975b +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda#290a26e7caf9bcbdde629db6612e212e +https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.3.0.4-hbd13f7d_0.conda#a296940fa2e0448d066d03bf6b586772 +https://conda.anaconda.org/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda#db63358239cbe1ff86242406d440e44a +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda#c44c16d6976d2aebbd65894d7741e67e +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda#8504a291085c9fb809b66cabd5834307 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.6-h4e0b6ca_0.conda#071409970083d0f99ab7b569352771c9 +https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.6-hbe16f8c_0.conda#2ddf4d040b58018f8ba3dfd464837827 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda#e5be997517f19a365b8b111b888be426 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.11.1.6-h12f29b5_4.conda#44fd967c18c41e4e5822f339621a47b4 +https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.7.77-hbd13f7d_0.conda#d8b8a1e6e6205447289cd09212c914ac +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.6.85-hbd13f7d_0.conda#dca2d62b3812922e6976f76c0a401918 +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.4.2-hbd13f7d_0.conda#8186e9de34f321aa34965c1cb72c0c26 +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.1.2-h5888daf_1.conda#200e029abc85b27af8935f8348bee84f +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.8.0-h566cb83_2.conda#b6818d8ad575df8faace47ee560e0630 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda#1349c022c92c5efd3fd705a79a5804d8 +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda#cac7e04909de453bca7ef38beb28e3c5 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cuda126_mkl_h9e9ac90_301.conda#86b93b838cc834b5b2bb096331392c55 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda#16bff3d37a4f99e3aa089c36c2b8d650 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.16.0-py312h68727a3_0.conda#0d981a6b5671f1013ff2e682fee925c2 +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda#730a5284e26d6bdb73332dafb26aec82 +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda#1594696beebf1ecb6d29a1136f859a74 +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py312h7201bc8_0.conda#c539cba0be444c6cefcb853987187d9e +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.6.77-hbd13f7d_1.conda#86be0f804995240f973a48f291d371de +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.6.77-hbd13f7d_1.conda#881d6e2cdb12db52e0c3d9dff6f7f14d +https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.6.85-ha770c72_0.conda#4ab193b5fcdcf8d7b094221e3977a112 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.6.85-he02047a_0.conda#0919bdf9454da5eb974e98dd79bf38fe +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.6.85-he02047a_0.conda#30b272fa555944cb44f8d4dc9244abb5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.7-he9d0ab4_0.conda#63f1accca4913e6b66a2d546c30ff4db +https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_1.conda#f4e3c6065bb655c235051a41ccf40a99 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py312_hea45ecb_301.conda#f2c1ec14fc4236f475dd4a5cec4525b5 +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda#fd1fc1f1e6ceee16d9a58d3ff5a57c7f +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.8.0-pyhe01879c_0.conda#7c252bceacb8e65e8a34dff228036899 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda#2979458c23c7755683a0598fb33e7666 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda#45f6713cb00f124af300342512219182 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda#cb98af5db26e3f482bebb80ce9d947d3 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda#1c6eecffad553bde44c5238770cfb7da +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda#3facafe58f3858eb95527c7d3a3fc578 +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda#e46f7ac4917215b49df2ea09a694a3fa +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h202a827_0.conda#0f98f3e95272d118f7931b6bef69bfe5 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-h1938f28_3_cuda.conda#9ef724782cd5b90dd807425effcae27c +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hb826db4_3_cuda.conda#8ad8c6fb0d492bd1866a67015ef3ffc5 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h3f30f2e_3_cuda.conda#bb9f38db50bd715eb0b90468fec41c9f +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hb826db4_3_cuda.conda#9f7735737257d636b439324485fe0299 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-hbf482d9_3_cuda.conda#fd775b79193481c0a669aa97770376ec +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h09cf70e_0_cuda.conda#9d78af3e5a343c7e1a40e1dc236a3970 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda#972f2a7f04b117accc08a11469c2cb6e +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda#37511c874cf3b8d0034c8d24e73c0884 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda#072ab14a02164b7c0c089055368ff776 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda#39b4228a867772d610c02e06f939a5b8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda#64f0c503da58ec25ebd359e4d990afa8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda#e79a094918988bb1807462cd42c83962 +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda#951ff8d9e5536896408e89d63230b8d5 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda#0e6e192d4b3d95708ad192d957cf3163 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda#eeb18017386c92765ad8ffa986c3f4ce +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py312hb9e946c_0.conda#13290e5d9cb327b1b61c1bd8089ac920 +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.5.1-py312h178313f_0.conda#291622f79db2b176d2c142b40e4b6640 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda#0cf580c1b73146bb9ff1bbdb4d4c8cf9 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.1-py312h178313f_0.conda#3b3fa80c71d6a8d0380e9e790f5a4a8a +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.12.13-py312h178313f_0.conda#a91df3f6eaf0d0afd155274a1833ab3c +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.1-pyge310_1234567_0.conda#8c3c37279f889ee8507d43ab70558b6a +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda#669e63af87710f8d52fdec9d4d63b404 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.21.1-pyhd8ed1ab_0.conda#843cfdc4c1222b19d6fd18c4a51c660e +https://conda.anaconda.org/conda-forge/noarch/aiofiles-24.1.0-pyhd8ed1ab_1.conda#7e8045a75e921648c082ba7cd7edd114 +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.1-pyhd8ed1ab_0.conda#eb2c073da600ba16cd6a4714c5c73966 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda#a861504bbea4161a9170b85d4d2be840 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda#f56a043ace4885f37c8856a24447cd19 +https://conda.anaconda.org/conda-forge/noarch/aioboto3-14.1.0-pyhd8ed1ab_0.conda#f12c3d54c5c52200165bf908b121bab7 +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.3-py312h2ec8cdc_0.conda#78380a74e2375eb8244290e181b2738b +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.41-py312h66e93f0_0.conda#4e2266c17e82847dfced222aef58d3fa +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.16.2-pyhd8ed1ab_0.conda#61051bb1e2762c4b9ef892d2e0e808e2 +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda#ea8f79edf890d1f9b2f1bd6fbb11be1e +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.44.0-pyhe01879c_0.conda#e4d62696245e39222c5df7f903c7bf3a +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda#089cf3a3becf0e2f403feaf16e921678 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda#fa0ab7d5bee9efbc370e71bcb5da9856 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda#c532a6ee766bed75c4fa0c39e959d132 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda#1505fc57c305c0a3174ea7aae0a0db25 +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda#e3465397ca4b5b60ba9fbc92ef0672f9 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda#6b51f7459ea4073eeb5057207e2e1e3d +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda#c64b77ccab10b822722904d889fa83b5 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda#f062e04d7cd585c937acbf194dceec36 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda#7ed6505c703f3c4e1a58864bf84505e2 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda#4861a0c2a5a5d0481a450a9dfaf9febe +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py312hf23773a_0_cpu.conda#491cf749a5f0afd80e9ee55eeced9029 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda#94b550b8d3a614dbd326af798c7dfb40 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda#8f0ef561cd615a17df3256742a3457c4 +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py312h66e93f0_0.conda#6198b134b1c08173f33653896974d477 +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py312h68727a3_0.conda#6998b34027ecc577efe4e42f4b022a98 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.5.1-pyhd8ed1ab_0.conda#d2949f56a1479507e36e847681903376 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py312h680f630_1.conda#eedc1c23e7c2506fa9cfe783dd6ab343 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py312h680f630_0.conda#cfbd96e5a0182dfb4110fc42dda63e57 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.1-pyhd8ed1ab_0.conda#e0c3cd765dc15751ee2f0b03cd015712 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.7-pyh3cfb1c2_0.conda#1b337e3d378cde62889bb735c024b7a2 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda#630db208bc7bbb96725ce9832c7423bb +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.3.45-pyhd8ed1ab_0.conda#1f21529048d043beeb921309f1ca0ac0 +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.66-pyhd8ed1ab_0.conda#6897a9ddf32e72bae472e36eccf9b5ee +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.26-pymin312_hff2d567_0.conda#654dc5198c521803a71483de1eb89870 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.1-pyhd8ed1ab_0.conda#11186f5dd073e7d06e711eb3abdb6252 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.1-pyhe01879c_0.conda#a245b3c04afa11e2e52a0db91550da7c +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.10.1-pyh3cfb1c2_0.conda#a5f9c3e867917c62d796c20dba792cbd +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.26-pymin312_hff2d567_0.conda#fea0544b6915ebe0704430dedfad6c4a +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.5-pyhd8ed1ab_0.conda#41b4b77f68735141bc9ce0dfa086f964 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.5-pyhd8ed1ab_0.conda#3c6add0cd4be58fd46be166ce746b903 +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda#9d7e427d159c1b2d516cc047ff177c48 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.22.0-py312hadc37f1_200_cuda.conda#caf20a72733f1df79a48dec4ab9359d0 +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py312h12e396e_1.conda#740678aaa7e636cb16e3c20d0bc25bae +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.5-pyhd8ed1ab_0.conda#021b91df1d4eb889f8aeb3a31e566fed +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py312h66e93f0_0.conda#24bb4c00c7131d687ca2497ae1c3d369 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda#cc3f6c452697c1cf7e4e6e5f21861f96 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda#647770db979b43f9c9ca25dcfa7dc4e4 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.2-py312h8360d73_0.conda#f311d7f63df2ab7069a98f5a89f9d358 +https://conda.anaconda.org/conda-forge/noarch/transformers-4.52.4-pyhd8ed1ab_0.conda#9fa4ceae2fb9e7ec0732f5a756f89957 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.7-pyhd8ed1ab_0.conda#54bc7622f2b937354e612e2c37b316a9 +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda#db0c1632047d38997559ce2c4741dd91 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.14-pyhd8ed1ab_0.conda#17e598c07100b87139b6a5553fba69f0 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.14.1-pyhd8ed1ab_0.conda#e924ef9dbb417744c403278dd8935beb +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py312h68d7fa5_0.conda#9143d654930fa7d0ad1e351705419cb5 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.1.0-pyhd8ed1ab_0.conda#63d6393b45f33dc0782d73f6d8ae36a0 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py312h6792212_0.conda#caf61e949e00e4d9c042e063ac6ba66d +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.8-pyhd8ed1ab_0.conda#42b5f37b10ba04142cda8b050e9c2cb9 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.18-pyhd8ed1ab_0.conda#7bc4fab0346049ac13c84d23eb0f4e3b +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py312h7900ff3_2.conda#801dc9d60ee0cf91a038c0a2e8d4f9ff +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.10-py312h7900ff3_0.conda#60b9f877a7d36f146c30eb6683e4611b +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda#679616eb5ad4e521c83da4650860aba7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.1-pyhd8ed1ab_0.conda#a369bc6bfe475eefe1d9944c3ad572f1 +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda#530566b68c3b8ce7eec4cd047eae19fe +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda#bfbca721fd33188ef923dfe9ba172f29 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4 +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py312h68727a3_0.conda#e688276449452cdfe9f8f5d3e74c23f6 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda#58178ef8ba927229fba6d84abf62c108 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda#5d08a0ac29e6a5a984817584775d4131 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h66e93f0_0.conda#617f5d608ff8c28ad546e5d9671cbb95 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.58.4-py312h178313f_0.conda#223a4616e3db7336569eafefac04ebbf +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.8-py312h84d6215_0.conda#6713467dc95509683bfa3aca08524e8a +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda#ca438bf57e4f2423d261987fe423a0dd +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.3-py312hd3ec401_0.conda#2d69618b52d70970c81cc598e4b51118 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py312hacea422_2.conda#f15344009e4ae0f5e325e7027f8b5f00 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.3-pyhd8ed1ab_0.conda#86fca051b6bf09b7a3a3669bb95f46fa +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.25.1-pyhd8ed1ab_0.conda#bfd74c9dddb221548d9c3f1f583693b2 +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py312h7900ff3_3.conda#74fb2303c60877f472df935713ee8906 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py312h66e93f0_0.conda#0c9df8f9c424f4d3dea521dff3a6cfd6 +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py312h1d27fe0_0.conda#e678f6ce596716b09beee53b3f56523c +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda#c0600c1b374efa7a1ff444befee108ca +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py312hd4369dc_0.conda#67b2b0b9fa797381c62c45341be4a759 +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py312h7900ff3_0.conda#9c98a8ccc4ccdc9240c8d0f8f065fe50 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda#fb1c14694de51a476ce8636d92b6f42c +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py312h7a48858_0.conda#102727f71df02a51e9e173f2e6f87d57 +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.1-pyha770c72_0.conda#2f03e5650c2613bbd308795357ca468c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.1-pyhd8ed1ab_0.conda#4227e5a9081a3767b3c9065be7668da7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda#7aed65d4ff222bfb7335997aa40b7da5 +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.3-pyhd8ed1ab_0.conda#8c31b5c412e6bd9068f41c112bc5a046 +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.2-pyh2a12c56_0.conda#519624ba6f01f782378cd6c40f724e1f +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.2-pyhd8ed1ab_0.conda#c94b0d7de40f2b827a75e5226759cbb4 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda#7908b7b977e2e123a5f6a29906f2ce44 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda#480e915dfc6c592615ef6f217e615aa6 +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda#32d0781ace05105cc99af55d36cbec7c +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.19.0-h3122c55_0.conda#c5b981f3e3d8dff6d6c949a28e068c59 +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda#01ba04e414e47f95c03d6ddd81fd37be +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.7.1-h8fae777_3.conda#2c42649888aac645608191ffdc80d13a +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h766b0b6_0.conda#f17f2d0e5c9ad6b958547fd67b155771 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_2.conda#7b7baf93533744be2c0228bfa7149e2d +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2025.3.30-py312h6cec22d_2.conda#20e0ec9dff3aa9627c83908695c36c6b +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.6.11-pyhd8ed1ab_0.conda#9363f389b9fe136488fef8664acb77c6 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py312hf9745cd_1.conda#7c03f16bb8578b48352ee006adf6a5b3 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312hda17c39_2.conda#8f4e72393be23b3eaa7bbc3cd4a71c40 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.3.54-h5888daf_0.conda#56a2750239be4499dd6c9a27cebfb4b4 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py312h4387730_2.conda#65bf2daf3fe8f93bdaa4faba8b1ba525 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cuda126_py312_h3e02b30_1.conda#4b9c1ebf22c79715cfbb27030ca4f6d3 +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.1-pyha770c72_1.conda#1f5c932b308c8ff392687e9b0fc868e3 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda#f2ec1facec64147850b7674633978050 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda#d4a250da4737ee127fb1fa6452a9002e +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda#397a013c2dc5145a70737871aaa87e98 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda#fedf6bfe5d21d21d2b1785ec00a8889a +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.0.1-hcae58fd_0.conda#99f9aae829a0e18b9c2e21ece0f24155 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda#606d94da4566aa177df7615d68b29176 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.8-cuda120_py312ha968d31_104.conda#ea87817807209f55c3936ff85e386e54 +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.8.4-pyhe01879c_0.conda#f3e5d266553598db489b104dd9eddf6f +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/noarch/beartype-0.21.0-pyhd8ed1ab_0.conda#526bf12efa59226d9f76cd6742debc41 +https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.7-pyhd8ed1ab_0.conda#3b1f2b1d68f8ce1485483d0fab7946e1 +https://conda.anaconda.org/conda-forge/noarch/fasttransform-0.0.2-pyhd8ed1ab_0.conda#f89014a6a84308689546b345046af5a0 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py312h7900ff3_1.conda#f5199236b25aaea51cbd9aa739c8b5ee +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py312h2ec8cdc_0.conda#410e982d8d3b88e765af9a1b1d69fb0a +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py312h2ec8cdc_0.conda#94f1c9e6aab5b54f044e2497f411f841 +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py312h2ec8cdc_2.conda#b4a314e8506480d1beec34d6cb80af0c +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py312h2ec8cdc_2.conda#c2aa6644b548004f0ec02f6e856ac97f +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda#96226f62dddc63226472b7477d783967 +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py312h2ec8cdc_1.conda#701c0fbfe87aaef3ec8ea61f1e6f883e +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py312hc0a28a1_0.conda#7b44c443a3bf8d3c802915c351481802 +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py312hc39e661_1.conda#cf356df8a75d126e7df31f1a16916c0c +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.16.0-pyhe01879c_0.conda#0d0a6c08daccb968c8c8fa93070658e2 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.16.0-hf964461_0.conda#c8fb6ddb4f5eb567d049f85b3f0c8019 +https://conda.anaconda.org/conda-forge/noarch/typer-0.16.0-pyh167b9f4_0.conda#985cc086b73bda52b2f8d66dcda460a1 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.1-pyhd8ed1ab_0.conda#d401b7d72e2cf55444b12110ed953c9d +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.6-py312hc39e661_0.conda#61b6e10d922f0c57ebf33f943835513e +https://conda.anaconda.org/conda-forge/noarch/fastai-2.8.2-pyhd8ed1ab_0.conda#cf834c6151a41eec121f1a06993e0847 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cuda_h3896ea8_2.conda#7576219e02463ae7218c07368d9b5c57 +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cuda_py_2.conda#580f1b7ee6c4c3ed28b400b2999156ad +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cuda128_hacb7753_2.conda#f96e41475bf6430c92f347e36d5c41af +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cuda128_pyh71c493a_2.conda#396ec177bfe4129f28a6bd980c60fe79 +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cuda128_pyh68bd8d9_2.conda#2a70764754ac5fe070e97e86ae428710 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.1-pyha770c72_0.conda#b9da6982f845888dedc7b43d4afffa84 +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.15-py312h68727a3_1.conda#f90e4aac7ca01df9a415d9dfaea61c24 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py312h374181b_1.conda#146d3cc72c65fdac198c09effb6ad133 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py312h7bcfee6_1.conda#4444225bda83e059d679990431962b86 +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/optuna-4.4.0-pyhd8ed1ab_0.conda#9681872830205de109933b1627565b98 +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py312hc0a28a1_0.conda#97dc960f3d9911964d73c2cf240baea5 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py312h68727a3_0.conda#baf8f16b09f827b0d45debaee01777a8 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.1-pyhd8ed1ab_0.conda#c9c953d18ce38e878289d19edc43b962 +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.1-pyhd8ed1ab_0.conda#a7b48730720e6d96c0228719bfa9a945 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.3-pyhd8ed1ab_0.conda#f0b767b717cab652712d29f5e4699b2a +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py312h680f630_1.conda#acb276847c5bb9eaa38ab8a205fa5ff8 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda#ad8527bf134a90e1c9ed35fa0b64318c +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda#460eba7851277ec1fd80a1a24080787a +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda#18852d82df8e5737e320a8731ace51b9 +https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_5.conda#4846404183ea94fd6652e9fb6ac5e16f +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda#327ef163ac88b57833c1c1a20a9e7e0d +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.3-pyhd8ed1ab_0.conda#708d2f99b8a2c833ff164a225a265e76 +https://conda.anaconda.org/conda-forge/noarch/boltons-25.0.0-pyhd8ed1ab_0.conda#c7eb87af73750d6fd97eff8bbee8cb9c +https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-hc03c837_102.conda#4c1d6961a6a54f602ae510d9bf31fa60 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda#3cd1a7238a0dd3d0860fdefc496cc854 +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-he8ea267_2.conda#2b6cdf7bb95d3d10ef4e38ce0bc95dba +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-h1e990d8_2.conda#f46cf0acdcb6019397d37df1e407ab91 +https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_2.conda#d92e51bf4b6bdbfe45e5884fb0755afe +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-h6f18a23_11.conda#639ef869618e311eee4888fcb40747e2 +https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda#3cb814f83f1f71ac1985013697f80cc1 +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hff21bea_1.conda#54e8e1a8144fd678c5d43905e3ba684d +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.1-gpl_h98cc613_100.conda#9de6247361e1ee216b09cfb8b856e2ee +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.33-h7955e40_0.conda#9400594fb2639595bb20a7e723d347f0 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.13.0-h84d6215_0.conda#f2d511bfca0cc4acca4bb40cd1905dff +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.3.0-h44402ff_1.conda#6826be8fbb2b2105ef738dfb5d8db373 +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.3.0-py312hd15d01f_1.conda#4622266e83387a3cdd0459cdd3e92771 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-25.4.0-pyhd8ed1ab_0.conda#d62b8f745ff471d5594ad73605cb9b59 +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda#9fa8408745a0621314b7751d11fecc18 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.3.0-py312h7900ff3_0.conda#3de345c0744dae205b36d53b1671d210 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda#7da7ccd349dbf6487a7778579d2bb971 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda#08223e6a73e0bca5ade16ec4cebebf23 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda#532c3e5d0280be4fea52396ec1fa7d5d +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda#ebef257605116235f5feac68640b44ca +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/linux-64/conda-25.3.1-py312h7900ff3_1.conda#360a82a866a7acad48aff85b21e0dc39 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda#4c18b79fa2a3371557ed3663876e5dcc +https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.6.77-ha770c72_0.conda#365a924cf93535157d61debac807e9e4 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.6.80-h5888daf_0.conda#ed37a8cad974fed39334d096f3b18d81 +https://conda.anaconda.org/conda-forge/linux-64/cuda-gdb-12.6.77-h50b4baa_1.conda#9238f590fcc613c86ebff4a421db85e0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprof-12.6.80-hbd13f7d_0.conda#b5ccb8e53c9ec037d14e3e8b14a2740d +https://conda.anaconda.org/conda-forge/linux-64/cuda-sanitizer-api-12.6.77-hbd13f7d_1.conda#ba073c8009d7166892a4260179b07582 +https://conda.anaconda.org/conda-forge/linux-64/cuda-command-line-tools-12.6.3-ha770c72_0.conda#3d338828e4b5fa7768a7a59cbeadaa32 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuxxfilt-12.6.77-hbd13f7d_1.conda#faefe1c43db4641223a1dfa23ee21e0f +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.6.77-h3f2d84a_0.conda#3ad8eacbf716ddbca1b5292a3668c821 +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.6.77-h3f2d84a_0.conda#f967e2449b6c066f6d09497fff12d803 +https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.6.77-h3f2d84a_0.conda#f2b7f45acf027c7de8c383b1d2f6a298 +https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.6.85-ha770c72_0.conda#4b14e78e12daa061dcdbe3ceed95cb57 +https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.6.85-ha770c72_0.conda#9c1f1ecfd9990b549312b3206d9c003b +https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.6.85-he91c749_0.conda#8d4bca6397374ecbd3001ab4ece3b23d +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.6.77-h5888daf_0.conda#ae37b405ef74e57ef9685fcf820a2dde +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.6.77-h5888daf_0.conda#86e47562bfe92a529ae1c75bbcff814b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.6.85-he02047a_0.conda#5b72e12459f5deab812cb30b67b64d48 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.6.85-h85509e4_0.conda#e5b96d2e34abaa90c0c1c968d02bbc9b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.6.85-h04802cd_0.conda#4e1376cbc6d66b6744557cabeff02ca2 +https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-hc03c837_102.conda#aa38de2738c5f4a72a880e3d31ffe8b4 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hae580e1_2.conda#b55f02540605c322a47719029f8404cc +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-hb14504d_11.conda#2ca7575e4f2da39c5ee260e022ab1a6f +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.6.85-hcdd1206_0.conda#fe294b5f78236b26d0b388652212e581 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprune-12.6.77-hbd13f7d_1.conda#533cf43c4201ae6387f156ff7cbd8c89 +https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_2.conda#07e8df00b7cd3084ad3ef598ce32a71c +https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda#1ce8b218d359d9ed0ab481f2a3f3c512 +https://conda.anaconda.org/conda-forge/noarch/cuda-compiler-12.6.3-hbad6d8a_0.conda#ec211b132a6554400de751021e2b695c +https://conda.anaconda.org/conda-forge/linux-64/cuda-driver-dev-12.6.77-h5888daf_0.conda#42f029040bcf7a8fd0fc4cf82db91a99 +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda#45c3d2c224002d6d0d7769142b29f986 +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.6.77-hbd13f7d_0.conda#ae042b206c97ec79af1a1fb2f91f6eb0 +https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.3.1.54-h5888daf_0.conda#f1c723a97c4c8f82429df5a7b9b96382 +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.6.77-hbd13f7d_0.conda#3131e00022d739313baa5b4498e6edd0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.6.3-ha770c72_0.conda#d88e326c1d34c1f4258625e7b34de45d +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-dev-12.6.85-h5888daf_0.conda#a526356b18499e3dbe2b4ae8f7e77213 +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-dev-12.6.77-h5888daf_0.conda#0c0167532e40574e9cf67b6270704dad +https://conda.anaconda.org/conda-forge/linux-64/cuda-profiler-api-12.6.77-h7938cbb_0.conda#b051a6584fa2f5d8815f9823d6ffa257 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.6.4.1-h5888daf_1.conda#d7c84bdc63481995050f42e37c55f341 +https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.3.0.4-h5888daf_0.conda#e51d70f74e9e5241a0bf33fb866e2476 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-dev-1.11.1.6-h5888daf_4.conda#e97a43d752c8a438a9f339a11cf29cb0 +https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.7.77-h5888daf_0.conda#83a87ce38925eb22b509a8aba3ba3aaf +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.1.2-h5888daf_1.conda#2a9339395d087361dc346d0b4826d70b +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.4.2-h5888daf_0.conda#48de133da2c0d116b3e7053b8c8dff89 +https://conda.anaconda.org/conda-forge/linux-64/libnpp-dev-12.3.1.54-h5888daf_0.conda#37c3d406ec286cfae716868c2915026c +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-dev-12.6.77-h5888daf_0.conda#4affbc6122feb5ed25ee3c812b4b3b32 +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-dev-12.6.85-h5888daf_0.conda#581771c7078e1c9e23af358c122bdcf4 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-dev-12.3.3.54-ha770c72_0.conda#38ab71f4fadbd66e9421a6b62342ad69 +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-dev-12.6.3-ha770c72_0.conda#baf00d9d33fcb6ffb6d12ca1002e5e86 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvml-dev-12.6.77-hbd13f7d_1.conda#5b45001c3b1b10762ff95565d8d3b3a0 +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.1-pyhd8ed1ab_0.conda#ffad1a6161226d41e3735b73bae5c71c +https://conda.anaconda.org/conda-forge/noarch/retrying-1.4.0-pyhd8ed1ab_0.conda#51546f424879ee8e4078a68440f0adf5 +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.56.0-pyhd8ed1ab_0.conda#966c48567dbfc595d36d84ca9c645391 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda#c47ede9450b5347c1933ccb552fca707 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda#8b1160b32557290b64d5be68db3d996d +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.3-pyh31011fe_0.conda#1520c1396715d45d02f5aa045854a65c +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda#998e481e17c1b6a74572e73b06f2df08 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.0-py312h12e396e_0.conda#34ded0fc4def76a526a6f0dccb95d7f3 +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py312h66e93f0_0.conda#b986da7551224417af6b7da4021d8050 +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.3-h31011fe_0.conda#6d80b382cafd45723e75dccef6496c67 +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.13-pyhe01879c_0.conda#0e61e817af37098262b5ae1f4e04988b +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda#20ab6b90150325f1af7ca96bffafde63 +https://conda.anaconda.org/conda-forge/linux-64/gds-tools-1.11.1.6-h5888daf_4.conda#25f08271d608ad863c326888b1769b74 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py312h7900ff3_1.conda#0b3cda7592a578100a59e6249f3dd409 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.14.0-nompi_py312h3faca00_100.conda#2e1c2a9e706c74c4dd6f990a680f3f90 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.2-pyhd8ed1ab_1.conda#37a94508cbdcd62f070611d58a34d7ea +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-ui-1.1.0-pyhd8ed1ab_0.conda#bd119067187f4433a1b6198641cc7455 +https://conda.anaconda.org/conda-forge/noarch/jupyter-docprovider-1.1.0-pyhd8ed1ab_1.conda#ad55ecaaaad84425e8d43999f292861a +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.22-py312h12e396e_0.conda#0811638ed5ae09844c1937cdac9744f1 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-3.0.5-pyhe01879c_0.conda#4c6ccefebe5a565fe11d6cd27ad440ff +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-1.1.0-pyhd8ed1ab_0.conda#7c62cd204b2d73669660d470395bcf84 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-3.1.0-pyhd8ed1ab_1.conda#0b0e68cfbf29cfad511a3d26f5e41279 +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.2-pyhd8ed1ab_0.conda#154beb643d4c3eb9061330273a259d1b +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda#c070bbf2a3c9e2e6d2c64b219e2e78da +https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda#3eb854547a0183b994431957fa0e05d2 +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.1-hb9d3cd8_0.conda#0ca6814d958b87c6a1cfd45595bab974 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.1-hb9d3cd8_0.conda#5430a506fc720a733645681173c1ef4c +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.1-ha770c72_0.conda#6ae6fce1fc70ffc08191b124ece985e2 +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.34.1-pyhd8ed1ab_0.conda#5f8298becc7e960d6fdf6b2f4a1da9d6 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.55b1-pyh3cfb1c2_0.conda#83f5d3b75f94f89c838ddaa815d517ff +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.34.1-pyhd8ed1ab_0.conda#78f31192e8556616e2f26df38a4ad2a0 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h7900ff3_0.conda#5e516c19e74ae73336c2347ae2865f29 +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py312h7900ff3_0.conda#7d596694edb90e5b6da4fd2044e684bb +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h7900ff3_0.conda#6383d12a3d7895d4fbf8455861d75dc1 +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/noarch/param-2.2.1-pyhd8ed1ab_0.conda#b6f8a6ac73c7d5fdc5efc206ac8c98c4 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/noarch/panel-1.7.1-pyhd8ed1ab_0.conda#ce7149f1fc36e23ae60ba5a70a249c67 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_2.conda#34cd253bb51e7e4383b2e1154e44a17c +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-gpu-2.1.4-pyh68bd8d9_2.conda#19ddac5f970c3febcc7aeef66af8d7a4 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda#755cf22df8693aa0d1aec1c123fa5863 +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py312h2ec8cdc_1.conda#0492f04061eb5d62e3abbdc98d96f187 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py312h3770eae_0.conda#a6ce17f7df2ac544a6fe44c613ade87f +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py312h7900ff3_1.conda#3431d27257f5c9cfd5e21ef71599d234 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda#a49c2283f24696a7b30367b7346a0144 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda#ce978e1b9ed8b8d49164e90a5cdc94cd +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py312h3770eae_1.conda#c6a5fb58b00dfcb11ac95db2f253e8db +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_1.conda#845d9730024ab628f55d384631ceb499 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.1-h4085919_0.conda#47c5ac0b1181281d598b08995c0f392c +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.32-pyhd8ed1ab_0.conda#35484e383f15fadfffbaea841e776fab +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.10-pyhd8ed1ab_0.conda#149b23dd93713f2066324b770b0c1cb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.2-pyhff2d567_0.conda#e87f696235e55e29041904c04681fe86 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.16-pyhd8ed1ab_0.conda#c0f618aa313465cbf4641c20b90e839e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.2.0-pyhd8ed1ab_0.conda#5eab568b6c7ad23036978f5a01bf5fa9 +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.11-pyhbbac1ac_0.conda#97aeb43d04c648de7c1a9c3021554e31 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.13-pyhd8ed1ab_0.conda#a1758cb32e13858ce4a810dd5ef9abb1 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py312h7900ff3_3.conda#49365e846c0247fc2fdfa9494c91e192 +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cuda126py312hfb0ba9c_200.conda#c2462b199a73d4db2f2085933997bb0f +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cuda126py312hd49ae37_200.conda#faa2c41083d15a651700a3e34eb745fd +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cuda126py312h5379a72_200.conda#9920650e1d02211974cf52191e804b38 +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b From 480ef7b1c94b010dece4266b7a88c4ac80620810 Mon Sep 17 00:00:00 2001 From: Clayton Parnell Date: Tue, 15 Jul 2025 00:31:11 +0000 Subject: [PATCH 3/7] Empty additional env.in files --- build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in | 7 ------- build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in | 6 ------ build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in | 6 ------ 3 files changed, 19 deletions(-) diff --git a/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in b/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in index 2c088f01..e69de29b 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in +++ b/build_artifacts/v3/v3.1/v3.1.2/cpu.pinned_env.in @@ -1,7 +0,0 @@ -conda-forge::dash[version='<=2.18.1'] -conda-forge::evaluate[version='<0.4.2'] -conda-forge::catboost[version='>=1.1.1,<1.3.0',build='*cpu*'] -conda-forge::libsqlite[version='<3.49.0'] -conda-forge::urllib3[version='<2'] -conda-forge::papermill[version='>=2.6.0'] -conda-forge::plotly[version='<6.1.0'] diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in index 577d9abb..e69de29b 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.arg_based_env.in @@ -1,6 +0,0 @@ -conda-forge::cuda-compiler=$CUDA_MAJOR_MINOR_VERSION -conda-forge::cuda-libraries=$CUDA_MAJOR_MINOR_VERSION -conda-forge::cuda-libraries-dev=$CUDA_MAJOR_MINOR_VERSION -conda-forge::cuda-nvml-dev=12.6.77.* -conda-forge::cuda-command-line-tools=$CUDA_MAJOR_MINOR_VERSION -conda-forge::gds-tools=1.11.1.6.* \ No newline at end of file diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in b/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in index f066ccf6..e69de29b 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.pinned_env.in @@ -1,6 +0,0 @@ -conda-forge::dash[version='<=2.18.1'] -conda-forge::evaluate[version='<0.4.2'] -conda-forge::libsqlite[version='<3.49.0'] -conda-forge::urllib3[version='<2'] -conda-forge::papermill[version='>=2.6.0'] -conda-forge::plotly[version='<6.1.0'] From 6b6d650b278ec9ea23b0b86fb28bb1c088a82bfa Mon Sep 17 00:00:00 2001 From: Clayton Parnell Date: Tue, 15 Jul 2025 00:31:35 +0000 Subject: [PATCH 4/7] Update Dockerfile to unblock build --- build_artifacts/v3/v3.1/v3.1.2/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build_artifacts/v3/v3.1/v3.1.2/Dockerfile b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile index 92754a04..240cd21f 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/Dockerfile +++ b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile @@ -98,9 +98,9 @@ RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \ micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME --file /tmp/$PINNED_ENV_IN_FILENAME && \ mkdir -p $SAGEMAKER_RECOVERY_MODE_HOME && \ chown $MAMBA_USER:$MAMBA_USER $SAGEMAKER_RECOVERY_MODE_HOME && \ - SUPERVISOR_VERSION=$(grep "^conda-forge::supervisor\[" /tmp/$ENV_IN_FILENAME) && \ - JUPYTERLAB_VERSION=$(grep "^conda-forge::jupyterlab\[" /tmp/$ENV_IN_FILENAME) && \ - SAGEMAKER_JUPYTERLAB_VERSION=$(grep "^conda-forge::sagemaker-jupyterlab-extension" /tmp/$ENV_IN_FILENAME) && \ + SUPERVISOR_VERSION="supervisor==4.2.5" && \ + JUPYTERLAB_VERSION="jupyterlab==4.4.3" && \ + SAGEMAKER_JUPYTERLAB_VERSION="sagemaker-jupyterlab-extension==0.4.2" && \ echo "Installing in sagemaker-recovery-mode micromamba environment: $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION" && \ micromamba create --prefix /opt/conda/envs/sagemaker-recovery-mode && \ micromamba install --prefix /opt/conda/envs/sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \ From 9f381f1102b587cad27eb5544cdf353c7ba68343 Mon Sep 17 00:00:00 2001 From: Clayton Parnell Date: Tue, 15 Jul 2025 00:36:56 +0000 Subject: [PATCH 5/7] Update Dockerfile to unblock build --- build_artifacts/v3/v3.1/v3.1.2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_artifacts/v3/v3.1/v3.1.2/Dockerfile b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile index 240cd21f..66349557 100644 --- a/build_artifacts/v3/v3.1/v3.1.2/Dockerfile +++ b/build_artifacts/v3/v3.1/v3.1.2/Dockerfile @@ -103,7 +103,7 @@ RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \ SAGEMAKER_JUPYTERLAB_VERSION="sagemaker-jupyterlab-extension==0.4.2" && \ echo "Installing in sagemaker-recovery-mode micromamba environment: $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION" && \ micromamba create --prefix /opt/conda/envs/sagemaker-recovery-mode && \ - micromamba install --prefix /opt/conda/envs/sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \ + micromamba install -c conda-forge --prefix /opt/conda/envs/sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \ micromamba clean --all --yes --force-pkgs-dirs && \ rm -rf /tmp/*.in && \ sudo ln -s $(which python3) /usr/bin/python && \ From 338e45b1666d412613bbc129e352fb89d407fd8f Mon Sep 17 00:00:00 2001 From: Ruinong Tian Date: Thu, 17 Jul 2025 18:15:25 +0000 Subject: [PATCH 6/7] Add post-build artifacts generated manually --- .../v3/v3.1/v3.1.2/CHANGELOG-cpu.md | 7 + .../v3/v3.1/v3.1.2/CHANGELOG-gpu.md | 7 + build_artifacts/v3/v3.1/v3.1.2/RELEASE.md | 875 ++++++++++++++++++ build_artifacts/v3/v3.1/v3.1.2/cpu.env.out | 780 ++++++++++++++++ build_artifacts/v3/v3.1/v3.1.2/gpu.env.out | 872 +++++++++++++++++ 5 files changed, 2541 insertions(+) create mode 100644 build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-cpu.md create mode 100644 build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-gpu.md create mode 100644 build_artifacts/v3/v3.1/v3.1.2/RELEASE.md create mode 100644 build_artifacts/v3/v3.1/v3.1.2/cpu.env.out create mode 100644 build_artifacts/v3/v3.1/v3.1.2/gpu.env.out diff --git a/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-cpu.md b/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-cpu.md new file mode 100644 index 00000000..d79e4a00 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-cpu.md @@ -0,0 +1,7 @@ +# Change log: 3.1.2(cpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +sagemaker-code-editor|1.5.0|1.5.1 diff --git a/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-gpu.md b/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-gpu.md new file mode 100644 index 00000000..e8d85ea3 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/CHANGELOG-gpu.md @@ -0,0 +1,7 @@ +# Change log: 3.1.2(gpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +sagemaker-code-editor|1.5.0|1.5.1 diff --git a/build_artifacts/v3/v3.1/v3.1.2/RELEASE.md b/build_artifacts/v3/v3.1/v3.1.2/RELEASE.md new file mode 100644 index 00000000..b7693c13 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/RELEASE.md @@ -0,0 +1,875 @@ +# Release notes: 3.1.2 + +Package | gpu| cpu +---|---|--- +@explicit|None|None +_openmp_mutex|4.5|4.5 +_py-xgboost-mutex|2.0|2.0 +_python_abi3_support|1.0|1.0 +absl-py|2.3.0|2.3.0 +accelerate|1.8.0|1.8.0 +adagio|0.2.6|0.2.6 +adwaita-icon-theme|48.1|48.1 +aioboto3|14.1.0|14.1.0 +aiobotocore|2.21.1|2.21.1 +aiofiles|24.1.0|24.1.0 +aiohappyeyeballs|2.6.1|2.6.1 +aiohttp|3.12.13|3.12.13 +aiohttp-cors|0.7.0|0.7.0 +aioitertools|0.12.0|0.12.0 +aiosignal|1.3.2|1.3.2 +aiosqlite|0.19.0|0.19.0 +alembic|1.16.2|1.16.2 +altair|5.5.0|5.5.0 +amazon-q-developer-jupyterlab-ext|3.4.8|3.4.8 +amazon-sagemaker-jupyter-ai-q-developer|1.2.7|1.2.7 +amazon-sagemaker-jupyter-scheduler|3.1.14|3.1.14 +amazon-sagemaker-sql-execution|0.1.8|0.1.8 +amazon-sagemaker-sql-magic|0.1.4|0.1.4 +amazon_sagemaker_sql_editor|0.1.18|0.1.18 +annotated-types|0.7.0|0.7.0 +ansi2html|1.9.2|1.9.2 +ansicolors|1.1.8|1.1.8 +antlr-python-runtime|4.9.3|4.9.3 +anyio|4.9.0|4.9.0 +aom|3.9.1|3.9.1 +appdirs|1.4.4|1.4.4 +archspec|0.2.5|0.2.5 +argon2-cffi|25.1.0|25.1.0 +argon2-cffi-bindings|21.2.0|21.2.0 +arrow|1.3.0|1.3.0 +asn1crypto|1.5.1|1.5.1 +astroid|3.3.10|3.3.10 +asttokens|3.0.0|3.0.0 +astunparse|1.6.3|1.6.3 +async-lru|2.0.5|2.0.5 +async-timeout|4.0.3|4.0.3 +at-spi2-atk|2.38.0|2.38.0 +at-spi2-core|2.40.3|2.40.3 +atk-1.0|2.38.0|2.38.0 +attr|2.5.1| +attrs|23.2.0|23.2.0 +autogluon|1.3.1|1.3.1 +autogluon.common|1.3.1|1.3.1 +autogluon.core|1.3.1|1.3.1 +autogluon.features|1.3.1|1.3.1 +autogluon.multimodal|1.3.1|1.3.1 +autogluon.tabular|1.3.1|1.3.1 +autogluon.timeseries|1.3.1|1.3.1 +autopep8|2.0.4|2.0.4 +autovizwidget|0.22.0|0.22.0 +aws-c-auth|0.8.6|0.8.6 +aws-c-cal|0.8.7|0.8.7 +aws-c-common|0.12.0|0.12.0 +aws-c-compression|0.3.1|0.3.1 +aws-c-event-stream|0.5.4|0.5.4 +aws-c-http|0.9.4|0.9.4 +aws-c-io|0.17.0|0.17.0 +aws-c-mqtt|0.12.2|0.12.2 +aws-c-s3|0.7.13|0.7.13 +aws-c-sdkutils|0.2.3|0.2.3 +aws-checksums|0.2.3|0.2.3 +aws-crt-cpp|0.31.0|0.31.0 +aws-embedded-metrics|3.2.0|3.2.0 +aws-glue-sessions|1.0.9|1.0.9 +aws-sdk-cpp|1.11.510|1.11.510 +azure-core-cpp|1.14.0|1.14.0 +azure-identity-cpp|1.10.0|1.10.0 +azure-storage-blobs-cpp|12.13.0|12.13.0 +azure-storage-common-cpp|12.8.0|12.8.0 +azure-storage-files-datalake-cpp|12.12.0|12.12.0 +babel|2.17.0|2.17.0 +bcrypt|4.3.0|4.3.0 +beartype|0.21.0|0.21.0 +beautifulsoup4|4.13.4|4.13.4 +binaryornot|0.4.4|0.4.4 +binutils|2.43| +binutils_impl_linux-64|2.43| +binutils_linux-64|2.43| +bleach|6.2.0|6.2.0 +bleach-with-css|6.2.0|6.2.0 +blinker|1.9.0|1.9.0 +blosc|1.21.6|1.21.6 +bokeh|3.7.3|3.7.3 +boltons|25.0.0|25.0.0 +boto3|1.37.1|1.37.1 +botocore|1.37.1|1.37.1 +brotli|1.1.0|1.1.0 +brotli-bin|1.1.0|1.1.0 +brotli-python|1.1.0|1.1.0 +brunsli|0.1|0.1 +bzip2|1.0.8|1.0.8 +c-ares|1.34.5|1.34.5 +c-blosc2|2.19.0|2.19.0 +c-compiler|1.9.0| +ca-certificates|2025.6.15|2025.6.15 +cached-property|1.5.2|1.5.2 +cached_property|1.5.2|1.5.2 +cachetools|5.5.2|5.5.2 +cairo|1.18.4|1.18.4 +catalogue|2.0.10|2.0.10 +catboost|1.2.8|1.2.7 +certifi|2025.6.15|2025.6.15 +cffi|1.17.1|1.17.1 +chardet|5.2.0|5.2.0 +charls|2.4.2|2.4.2 +charset-normalizer|3.4.2|3.4.2 +click|8.2.1|8.2.1 +cloudpathlib|0.21.1|0.21.1 +cloudpickle|3.1.1|3.1.1 +colorama|0.4.6|0.4.6 +coloredlogs|15.0.1|15.0.1 +colorful|0.5.6|0.5.6 +colorlog|6.9.0|6.9.0 +comm|0.2.2|0.2.2 +conda|25.3.1|25.3.1 +conda-libmamba-solver|25.4.0|25.4.0 +conda-package-handling|2.4.0|2.4.0 +conda-package-streaming|0.11.0|0.11.0 +confection|0.1.5|0.1.5 +contextlib2|21.6.0|21.6.0 +contourpy|1.3.2|1.3.2 +cookiecutter|2.6.0|2.6.0 +coreforecast|0.0.15|0.0.15 +coverage|7.9.1|7.9.1 +cpp-expected|1.1.0|1.1.0 +cpython|3.12.11|3.12.11 +croniter|1.4.1|1.4.1 +cryptography|45.0.4|45.0.4 +cuda-cccl_linux-64|12.6.77| +cuda-command-line-tools|12.6.3| +cuda-compiler|12.6.3| +cuda-crt-dev_linux-64|12.6.85| +cuda-crt-tools|12.6.85| +cuda-cudart|12.6.77| +cuda-cudart-dev|12.6.77| +cuda-cudart-dev_linux-64|12.6.77| +cuda-cudart-static|12.6.77| +cuda-cudart-static_linux-64|12.6.77| +cuda-cudart_linux-64|12.6.77| +cuda-cuobjdump|12.6.77| +cuda-cupti|12.6.80| +cuda-cupti-dev|12.6.80| +cuda-cuxxfilt|12.6.77| +cuda-driver-dev|12.6.77| +cuda-driver-dev_linux-64|12.6.77| +cuda-gdb|12.6.77| +cuda-libraries|12.6.3| +cuda-libraries-dev|12.6.3| +cuda-nvcc|12.6.85| +cuda-nvcc-dev_linux-64|12.6.85| +cuda-nvcc-impl|12.6.85| +cuda-nvcc-tools|12.6.85| +cuda-nvcc_linux-64|12.6.85| +cuda-nvdisasm|12.6.77| +cuda-nvml-dev|12.6.77| +cuda-nvprof|12.6.80| +cuda-nvprune|12.6.77| +cuda-nvrtc|12.6.85| +cuda-nvrtc-dev|12.6.85| +cuda-nvtx|12.6.77| +cuda-nvvm-dev_linux-64|12.6.85| +cuda-nvvm-impl|12.6.85| +cuda-nvvm-tools|12.6.85| +cuda-opencl|12.6.77| +cuda-opencl-dev|12.6.77| +cuda-profiler-api|12.6.77| +cuda-sanitizer-api|12.6.77| +cuda-version|12.6| +cudnn|9.10.1.4| +cxx-compiler|1.9.0| +cycler|0.12.1|0.12.1 +cymem|2.0.11|2.0.11 +cython-blis|1.0.1|1.0.1 +cytoolz|1.0.1|1.0.1 +dash|2.18.1|2.18.1 +dask-core|2025.5.1|2025.5.1 +databricks-sdk|0.56.0|0.56.0 +dataclasses|0.8|0.8 +dataclasses-json|0.6.7|0.6.7 +datasets|2.2.1|2.2.1 +dav1d|1.2.1|1.2.1 +dbus|1.16.2|1.16.2 +debugpy|1.8.14|1.8.14 +decorator|5.2.1|5.2.1 +deepmerge|2.0|2.0 +defusedxml|0.7.1|0.7.1 +deprecated|1.2.18|1.2.18 +dill|0.4.0|0.4.0 +diskcache|5.6.3|5.6.3 +distlib|0.3.9|0.3.9 +distributed|2025.5.1|2025.5.1 +distro|1.9.0|1.9.0 +dnspython|2.7.0|2.7.0 +docker-cli|27.5.1|27.5.1 +docker-py|7.1.0|7.1.0 +docstring-to-markdown|0.17|0.17 +email-validator|2.2.0|2.2.0 +email_validator|2.2.0|2.2.0 +entrypoints|0.4|0.4 +epoxy|1.5.10|1.5.10 +evaluate|0.4.1|0.4.1 +exceptiongroup|1.3.0|1.3.0 +executing|2.2.0|2.2.0 +faiss|1.9.0|1.9.0 +faiss-cpu|1.9.0|1.9.0 +fastai|2.8.2|2.8.2 +fastapi|0.115.13|0.115.13 +fastapi-cli|0.0.7|0.0.7 +fastcore|1.8.4|1.8.4 +fastdownload|0.0.7|0.0.7 +fastprogress|1.0.3|1.0.3 +fasttransform|0.0.2|0.0.2 +filelock|3.18.0|3.18.0 +flake8|7.1.2|7.1.2 +flask|3.1.1|3.1.1 +flatbuffers|24.12.23|24.12.23 +fmt|11.1.4|11.1.4 +font-ttf-dejavu-sans-mono|2.37|2.37 +font-ttf-inconsolata|3.000|3.000 +font-ttf-source-code-pro|2.038|2.038 +font-ttf-ubuntu|0.83|0.83 +fontconfig|2.15.0|2.15.0 +fonts-conda-ecosystem|1|1 +fonts-conda-forge|1|1 +fonttools|4.58.4|4.58.4 +fqdn|1.5.1|1.5.1 +freetype|2.13.3|2.13.3 +fribidi|1.0.10|1.0.10 +frozendict|2.4.6|2.4.6 +frozenlist|1.6.0|1.6.0 +fs|2.4.16|2.4.16 +fsspec|2024.10.0|2024.10.0 +fugue|0.9.1|0.9.1 +future|1.0.0|1.0.0 +gast|0.6.0|0.6.0 +gcc|13.3.0| +gcc_impl_linux-64|13.3.0| +gcc_linux-64|13.3.0| +gdk-pixbuf|2.42.12|2.42.12 +gdown|5.2.0|5.2.0 +gds-tools|1.11.1.6| +gflags|2.2.2|2.2.2 +giflib|5.2.2|5.2.2 +git-remote-codecommit|1.16|1.16 +gitdb|4.0.12|4.0.12 +gitpython|3.1.44|3.1.44 +glib-tools|2.84.2|2.84.2 +glog|0.7.1|0.7.1 +gluonts|0.16.1|0.16.1 +gmp|6.3.0|6.3.0 +gmpy2|2.2.1|2.2.1 +google-api-core|2.25.1|2.25.1 +google-auth|2.40.3|2.40.3 +google-pasta|0.2.0|0.2.0 +googleapis-common-protos|1.70.0|1.70.0 +graphene|3.4.3|3.4.3 +graphite2|1.3.14|1.3.14 +graphql-core|3.2.6|3.2.6 +graphql-relay|3.2.0|3.2.0 +graphviz|13.0.1|13.0.1 +greenlet|3.2.3|3.2.3 +grpcio|1.67.1|1.67.1 +gtk3|3.24.43|3.24.43 +gts|0.7.6|0.7.6 +gunicorn|23.0.0|23.0.0 +gxx|13.3.0| +gxx_impl_linux-64|13.3.0| +gxx_linux-64|13.3.0| +h11|0.16.0|0.16.0 +h2|4.2.0|4.2.0 +h5py|3.14.0|3.14.0 +harfbuzz|11.2.1|11.2.1 +hdf5|1.14.6|1.14.6 +hdijupyterutils|0.22.0|0.22.0 +hf-xet|1.1.5|1.1.5 +hicolor-icon-theme|0.17|0.17 +hpack|4.1.0|4.1.0 +httpcore|1.0.9|1.0.9 +httptools|0.6.4|0.6.4 +httpx|0.28.1|0.28.1 +httpx-sse|0.4.1|0.4.1 +huggingface_hub|0.33.1|0.33.1 +humanfriendly|10.0|10.0 +hyperframe|6.1.0|6.1.0 +hyperopt|0.2.7|0.2.7 +icu|75.1|75.1 +idna|3.10|3.10 +imagecodecs|2025.3.30|2025.3.30 +imageio|2.37.0|2.37.0 +importlib-metadata|6.10.0|6.10.0 +importlib_metadata|6.10.0|6.10.0 +importlib_resources|6.5.2|6.5.2 +iniconfig|2.0.0|2.0.0 +ipykernel|6.29.5|6.29.5 +ipython|8.36.0|8.36.0 +ipywidgets|8.1.7|8.1.7 +isoduration|20.11.0|20.11.0 +isort|6.0.1|6.0.1 +itsdangerous|2.2.0|2.2.0 +jedi|0.19.2|0.19.2 +jinja2|3.1.6|3.1.6 +jmespath|1.0.1|1.0.1 +joblib|1.5.1|1.5.1 +json5|0.12.0|0.12.0 +jsonpatch|1.33|1.33 +jsonpath-ng|1.6.1|1.6.1 +jsonpointer|3.0.0|3.0.0 +jsonschema|4.23.0|4.23.0 +jsonschema-specifications|2025.4.1|2025.4.1 +jsonschema-with-format-nongpl|4.23.0|4.23.0 +jupyter|1.1.1|1.1.1 +jupyter-activity-monitor-extension|0.3.2|0.3.2 +jupyter-ai|2.31.5|2.31.5 +jupyter-ai-magics|2.31.5|2.31.5 +jupyter-collaboration|3.1.0|3.1.0 +jupyter-collaboration-ui|1.1.0|1.1.0 +jupyter-dash|0.4.2|0.4.2 +jupyter-docprovider|1.1.0|1.1.0 +jupyter-lsp|2.2.5|2.2.5 +jupyter-scheduler|2.10.0|2.10.0 +jupyter-server-mathjax|0.2.6|0.2.6 +jupyter-server-proxy|4.4.0|4.4.0 +jupyter_client|8.6.3|8.6.3 +jupyter_console|6.6.3|6.6.3 +jupyter_core|5.8.1|5.8.1 +jupyter_events|0.12.0|0.12.0 +jupyter_scheduler|2.10.0|2.10.0 +jupyter_server|2.16.0|2.16.0 +jupyter_server_fileid|0.9.2|0.9.2 +jupyter_server_terminals|0.5.3|0.5.3 +jupyter_server_ydoc|1.1.0|1.1.0 +jupyter_ydoc|3.0.5|3.0.5 +jupyterlab|4.4.3|4.4.3 +jupyterlab-git|0.51.2|0.51.2 +jupyterlab-lsp|5.0.3|5.0.3 +jupyterlab_pygments|0.3.0|0.3.0 +jupyterlab_server|2.27.3|2.27.3 +jupyterlab_widgets|3.0.15|3.0.15 +jxrlib|1.1|1.1 +keras|3.9.2|3.9.2 +kernel-headers_linux-64|3.10.0| +keyutils|1.6.1|1.6.1 +kiwisolver|1.4.8|1.4.8 +krb5|1.21.3|1.21.3 +langchain|0.3.26|0.3.26 +langchain-aws|0.2.19|0.2.19 +langchain-community|0.3.26|0.3.26 +langchain-core|0.3.66|0.3.66 +langchain-text-splitters|0.3.8|0.3.8 +langcodes|3.4.1|3.4.1 +langsmith|0.3.45|0.3.45 +language-data|1.3.0|1.3.0 +lazy-loader|0.4|0.4 +lcms2|2.17|2.17 +ld_impl_linux-64|2.43|2.43 +lerc|4.0.0|4.0.0 +libabseil|20240722.0|20240722.0 +libaec|1.1.4|1.1.4 +libarchive|3.8.1|3.8.1 +libarrow|19.0.1|19.0.1 +libarrow-acero|19.0.1|19.0.1 +libarrow-dataset|19.0.1|19.0.1 +libarrow-substrait|19.0.1|19.0.1 +libavif16|1.3.0|1.3.0 +libblas|3.9.0|3.9.0 +libbrotlicommon|1.1.0|1.1.0 +libbrotlidec|1.1.0|1.1.0 +libbrotlienc|1.1.0|1.1.0 +libcap|2.75| +libcblas|3.9.0|3.9.0 +libcrc32c|1.1.2|1.1.2 +libcublas|12.6.4.1| +libcublas-dev|12.6.4.1| +libcudnn|9.10.1.4| +libcudnn-dev|9.10.1.4| +libcudss|0.5.0.16| +libcufft|11.3.0.4| +libcufft-dev|11.3.0.4| +libcufile|1.11.1.6| +libcufile-dev|1.11.1.6| +libcups|2.3.3|2.3.3 +libcurand|10.3.7.77| +libcurand-dev|10.3.7.77| +libcurl|8.14.1|8.14.1 +libcusolver|11.7.1.2| +libcusolver-dev|11.7.1.2| +libcusparse|12.5.4.2| +libcusparse-dev|12.5.4.2| +libde265|1.0.15|1.0.15 +libdeflate|1.24|1.24 +libedit|3.1.20250104|3.1.20250104 +libev|4.33|4.33 +libevent|2.1.12|2.1.12 +libexpat|2.7.0|2.7.0 +libfaiss|1.9.0|1.9.0 +libffi|3.4.6|3.4.6 +libfreetype|2.13.3|2.13.3 +libfreetype6|2.13.3|2.13.3 +libgcc|15.1.0|15.1.0 +libgcc-devel_linux-64|13.3.0| +libgcc-ng|15.1.0|15.1.0 +libgcrypt|1.11.1|1.11.1 +libgcrypt-devel|1.11.1|1.11.1 +libgcrypt-lib|1.11.1|1.11.1 +libgcrypt-tools|1.11.1|1.11.1 +libgd|2.3.3|2.3.3 +libgfortran|15.1.0|15.1.0 +libgfortran5|15.1.0|15.1.0 +libglib|2.84.2|2.84.2 +libgomp|15.1.0| +libgoogle-cloud|2.36.0|2.36.0 +libgoogle-cloud-storage|2.36.0|2.36.0 +libgpg-error|1.55|1.55 +libgrpc|1.67.1|1.67.1 +libheif|1.19.7|1.19.7 +libhwloc|2.11.2|2.11.2 +libhwy|1.2.0|1.2.0 +libiconv|1.18|1.18 +libjpeg-turbo|3.1.0|3.1.0 +libjxl|0.11.1|0.11.1 +liblapack|3.9.0|3.9.0 +liblightgbm|4.6.0|4.6.0 +libllvm20|20.1.7| +liblzma|5.8.1|5.8.1 +libmagma|2.8.0| +libmamba|2.3.0|2.3.0 +libmambapy|2.3.0|2.3.0 +libnghttp2|1.64.0|1.64.0 +libnl|3.11.0| +libnpp|12.3.1.54| +libnpp-dev|12.3.1.54| +libnsl|2.0.1|2.0.1 +libnuma|2.0.18| +libnvfatbin|12.6.77| +libnvfatbin-dev|12.6.77| +libnvjitlink|12.6.85| +libnvjitlink-dev|12.6.85| +libnvjpeg|12.3.3.54| +libnvjpeg-dev|12.3.3.54| +libopentelemetry-cpp|1.18.0|1.18.0 +libopentelemetry-cpp-headers|1.18.0|1.18.0 +libparquet|19.0.1|19.0.1 +libpng|1.6.49|1.6.49 +libprotobuf|5.28.3|5.28.3 +libre2-11|2024.07.02|2024.07.02 +librsvg|2.58.4|2.58.4 +libsanitizer|13.3.0| +libsecret|0.18.8|0.18.8 +libsentencepiece|0.2.0|0.2.0 +libsodium|1.0.20|1.0.20 +libsolv|0.7.33|0.7.33 +libsqlite|3.48.0|3.48.0 +libssh2|1.11.1|1.11.1 +libstdcxx|15.1.0|15.1.0 +libstdcxx-devel_linux-64|13.3.0| +libstdcxx-ng|15.1.0|15.1.0 +libsystemd0|257.6| +libthrift|0.21.0|0.21.0 +libtiff|4.7.0|4.7.0 +libtorch|2.6.0|2.6.0 +libudev1|257.6| +libunwind|1.6.2|1.6.2 +libutf8proc|2.10.0|2.10.0 +libuuid|2.38.1|2.38.1 +libuv|1.51.0|1.51.0 +libwebp-base|1.5.0|1.5.0 +libxcb|1.17.0|1.17.0 +libxcrypt|4.4.36|4.4.36 +libxgboost|2.1.4|2.1.4 +libxkbcommon|1.10.0|1.10.0 +libxml2|2.13.8|2.13.8 +libxslt|1.1.39|1.1.39 +libzlib|1.3.1|1.3.1 +libzopfli|1.0.3|1.0.3 +lightgbm|4.6.0|4.6.0 +lightning|2.5.2|2.5.2 +lightning-utilities|0.14.3|0.14.3 +linkify-it-py|2.0.3|2.0.3 +llvm-openmp|20.1.7|20.1.7 +llvmlite|0.44.0|0.44.0 +locket|1.0.0|1.0.0 +lxml|5.4.0|5.4.0 +lz4-c|1.10.0|1.10.0 +lzo|2.10|2.10 +mako|1.3.10|1.3.10 +marisa-trie|1.2.1|1.2.1 +markdown|3.8.2|3.8.2 +markdown-it-py|3.0.0|3.0.0 +markupsafe|3.0.2|3.0.2 +marshmallow|3.26.1|3.26.1 +matplotlib-base|3.10.3|3.10.3 +matplotlib-inline|0.1.7|0.1.7 +mccabe|0.7.0|0.7.0 +mdit-py-plugins|0.4.2|0.4.2 +mdurl|0.1.2|0.1.2 +menuinst|2.3.0|2.3.0 +mistune|3.1.3|3.1.3 +mkl|2024.2.2|2024.2.2 +ml_dtypes|0.4.0|0.4.0 +mlflow|2.22.0|2.22.0 +mlflow-skinny|2.22.0|2.22.0 +mlflow-ui|2.22.0|2.22.0 +mlforecast|0.13.6|0.13.6 +mock|4.0.3|4.0.3 +model-index|0.1.11|0.1.11 +mpc|1.3.1|1.3.1 +mpfr|4.2.1|4.2.1 +mpmath|1.3.0|1.3.0 +msgpack-python|1.1.1|1.1.1 +multidict|6.5.1|6.5.1 +multiprocess|0.70.18|0.70.18 +munkres|1.1.4|1.1.4 +murmurhash|1.0.10|1.0.10 +mypy_extensions|1.1.0|1.1.0 +namex|0.1.0|0.1.0 +narwhals|1.44.0|1.44.0 +nbclient|0.10.2|0.10.2 +nbconvert|7.16.6|7.16.6 +nbconvert-core|7.16.6|7.16.6 +nbconvert-pandoc|7.16.6|7.16.6 +nbdime|4.0.2|4.0.2 +nbformat|5.10.4|5.10.4 +nccl|2.27.5.1| +ncurses|6.5|6.5 +nest-asyncio|1.6.0|1.6.0 +networkx|3.5|3.5 +nlohmann_json|3.11.3|3.11.3 +nlpaug|1.1.11|1.1.11 +nltk|3.9.1|3.9.1 +nodejs|20.18.1|20.18.1 +nose|1.3.7|1.3.7 +notebook|7.4.3|7.4.3 +notebook-shim|0.2.4|0.2.4 +nspr|4.36|4.36 +nss|3.108|3.108 +numba|0.61.2|0.61.2 +numpy|1.26.4|1.26.4 +ocl-icd|2.3.3|2.3.3 +omegaconf|2.3.0|2.3.0 +onnxruntime|1.22.0|1.22.0 +opencensus|0.11.3|0.11.3 +opencensus-context|0.1.3|0.1.3 +opencl-headers|2025.06.13|2025.06.13 +openjpeg|2.5.3|2.5.3 +openmim|0.3.7|0.3.7 +openssl|3.5.0|3.5.0 +opentelemetry-api|1.34.1|1.34.1 +opentelemetry-sdk|1.34.1|1.34.1 +opentelemetry-semantic-conventions|0.55b1|0.55b1 +opt_einsum|3.4.0|3.4.0 +optree|0.16.0|0.16.0 +optuna|4.4.0|4.4.0 +orc|2.1.1|2.1.1 +ordered-set|4.1.0|4.1.0 +orjson|3.10.18|3.10.18 +overrides|7.7.0|7.7.0 +packaging|24.2|24.2 +pandas|2.2.3|2.2.3 +pandoc|3.7.0.2|3.7.0.2 +pandocfilters|1.5.0|1.5.0 +panel|1.7.1|1.7.1 +pango|1.56.3|1.56.3 +papermill|2.6.0|2.6.0 +param|2.2.1|2.2.1 +paramiko|3.5.1|3.5.1 +parso|0.8.4|0.8.4 +partd|1.4.2|1.4.2 +pathos|0.3.4|0.3.4 +patsy|1.0.1|1.0.1 +pcre2|10.45|10.45 +pdf2image|1.17.0|1.17.0 +pexpect|4.9.0|4.9.0 +pickleshare|0.7.5|0.7.5 +pillow|11.2.1|11.2.1 +pip|25.1.1|25.1.1 +pixman|0.46.2|0.46.2 +pkgutil-resolve-name|1.3.10|1.3.10 +platformdirs|4.3.8|4.3.8 +plotly|6.0.1|6.0.1 +pluggy|1.6.0|1.6.0 +plum-dispatch|2.5.7|2.5.7 +ply|3.11|3.11 +poppler|25.02.0|25.02.0 +poppler-data|0.4.12|0.4.12 +pox|0.3.6|0.3.6 +ppft|1.7.7|1.7.7 +preshed|3.0.9|3.0.9 +prometheus-cpp|1.3.0|1.3.0 +prometheus_client|0.22.1|0.22.1 +prometheus_flask_exporter|0.23.2|0.23.2 +prompt-toolkit|3.0.51|3.0.51 +prompt_toolkit|3.0.51|3.0.51 +propcache|0.3.1|0.3.1 +proto-plus|1.26.1|1.26.1 +protobuf|5.28.3|5.28.3 +psutil|5.9.8|5.9.8 +pthread-stubs|0.4|0.4 +ptyprocess|0.7.0|0.7.0 +pure-sasl|0.6.2|0.6.2 +pure_eval|0.2.3|0.2.3 +py-spy|0.4.0|0.4.0 +py-xgboost|2.1.4|2.1.4 +py-xgboost-gpu|2.1.4| +py4j|0.10.9.9|0.10.9.9 +pyarrow|19.0.1|19.0.1 +pyarrow-core|19.0.1|19.0.1 +pyasn1|0.6.1|0.6.1 +pyasn1-modules|0.4.2|0.4.2 +pyathena|3.14.1|3.14.1 +pybind11|2.13.6|2.13.6 +pybind11-abi|4|4 +pybind11-global|2.13.6|2.13.6 +pycodestyle|2.12.1|2.12.1 +pycosat|0.6.6|0.6.6 +pycparser|2.22|2.22 +pycrdt|0.12.22|0.12.22 +pycrdt-websocket|0.15.5|0.15.5 +pydantic|2.11.7|2.11.7 +pydantic-core|2.33.2|2.33.2 +pydantic-settings|2.10.1|2.10.1 +pydocstyle|6.3.0|6.3.0 +pyflakes|3.2.0|3.2.0 +pygments|2.19.2|2.19.2 +pyhive|0.7.0|0.7.0 +pyjwt|2.10.1|2.10.1 +pykrb5|0.7.1|0.7.1 +pylint|3.3.7|3.3.7 +pynacl|1.5.0|1.5.0 +pyopenssl|25.1.0|25.1.0 +pyparsing|3.2.3|3.2.3 +pysocks|1.7.1|1.7.1 +pyspnego|0.11.2|0.11.2 +pytesseract|0.3.13|0.3.13 +pytest|8.4.1|8.4.1 +pytest-cov|6.2.1|6.2.1 +python|3.12.9|3.12.9 +python-dateutil|2.9.0.post0|2.9.0.post0 +python-dotenv|1.1.1|1.1.1 +python-fastjsonschema|2.21.1|2.21.1 +python-flatbuffers|25.2.10|25.2.10 +python-gil|3.12.11|3.12.11 +python-graphviz|0.21|0.21 +python-gssapi|1.9.0|1.9.0 +python-json-logger|2.0.7|2.0.7 +python-lsp-jsonrpc|1.1.2|1.1.2 +python-lsp-server|1.12.2|1.12.2 +python-lsp-server-base|1.12.2|1.12.2 +python-multipart|0.0.20|0.0.20 +python-slugify|8.0.4|8.0.4 +python-tzdata|2025.2|2025.2 +python-xxhash|3.5.0|3.5.0 +python_abi|3.12|3.12 +pytoolconfig|1.2.5|1.2.5 +pytorch|2.6.0|2.6.0 +pytorch-lightning|2.5.2|2.5.2 +pytorch-metric-learning|2.8.1|2.8.1 +pytz|2024.2|2024.2 +pyu2f|0.1.5|0.1.5 +pyviz_comms|3.0.6|3.0.6 +pywavelets|1.8.0|1.8.0 +pywin32-on-windows|0.1.0|0.1.0 +pyyaml|6.0.2|6.0.2 +pyzmq|26.4.0|26.4.0 +qhull|2020.2|2020.2 +querystring_parser|1.2.4|1.2.4 +rav1e|0.7.1|0.7.1 +ray-core|2.44.1|2.44.1 +ray-default|2.44.1|2.44.1 +ray-tune|2.44.1|2.44.1 +rdma-core|57.0| +re2|2024.07.02|2024.07.02 +readline|8.2|8.2 +redshift_connector|2.1.5|2.1.5 +referencing|0.36.2|0.36.2 +regex|2024.11.6|2024.11.6 +reproc|14.2.5.post0|14.2.5.post0 +reproc-cpp|14.2.5.post0|14.2.5.post0 +requests|2.32.4|2.32.4 +requests-kerberos|0.15.0|0.15.0 +requests-toolbelt|1.0.0|1.0.0 +responses|0.18.0|0.18.0 +retrying|1.4.0|1.4.0 +rfc3339-validator|0.1.4|0.1.4 +rfc3986-validator|0.1.1|0.1.1 +rich|13.9.4|13.9.4 +rich-toolkit|0.11.3|0.11.3 +ripgrep|14.1.1|14.1.1 +rope|1.13.0|1.13.0 +rpds-py|0.25.1|0.25.1 +rsa|4.9.1|4.9.1 +ruamel.yaml|0.18.14|0.18.14 +ruamel.yaml.clib|0.2.8|0.2.8 +s2n|1.5.14|1.5.14 +s3fs|2024.10.0|2024.10.0 +s3transfer|0.11.3|0.11.3 +safetensors|0.5.3|0.5.3 +sagemaker-code-editor|1.5.1|1.5.1 +sagemaker-core|1.0.32|1.0.32 +sagemaker-headless-execution-driver|0.0.13|0.0.13 +sagemaker-jupyterlab-emr-extension|0.3.10|0.3.10 +sagemaker-jupyterlab-extension|0.4.2|0.4.2 +sagemaker-jupyterlab-extension-common|0.2.5|0.2.5 +sagemaker-kernel-wrapper|0.0.5|0.0.5 +sagemaker-mlflow|0.1.0|0.1.0 +sagemaker-python-sdk|2.244.2|2.244.2 +sagemaker-studio|1.0.16|1.0.16 +sagemaker-studio-analytics-extension|0.1.7|0.1.7 +sagemaker-studio-cli|1.0.6|1.0.6 +sagemaker-studio-dataengineering-extensions|1.0.11|1.0.11 +sagemaker-studio-dataengineering-sessions|1.0.13|1.0.13 +sagemaker-studio-sparkmagic-lib|0.2.0|0.2.0 +schedule|1.2.2|1.2.2 +schema|0.7.7|0.7.7 +scikit-image|0.25.2|0.25.2 +scikit-learn|1.6.1|1.6.1 +scipy|1.15.2|1.15.2 +scramp|1.4.4|1.4.4 +seaborn|0.13.2|0.13.2 +seaborn-base|0.13.2|0.13.2 +send2trash|1.8.3|1.8.3 +sentencepiece|0.2.0|0.2.0 +sentencepiece-python|0.2.0|0.2.0 +sentencepiece-spm|0.2.0|0.2.0 +seqeval|1.2.2|1.2.2 +setproctitle|1.3.6|1.3.6 +setuptools|80.9.0|80.9.0 +shellingham|1.5.4|1.5.4 +simdjson|3.13.0|3.13.0 +simpervisor|1.0.0|1.0.0 +six|1.17.0|1.17.0 +sleef|3.8|3.8 +smart-open|7.1.0|7.1.0 +smart_open|7.1.0|7.1.0 +smdebug-rulesconfig|1.0.1|1.0.1 +smmap|5.0.2|5.0.2 +snappy|1.2.1|1.2.1 +sniffio|1.3.1|1.3.1 +snowballstemmer|3.0.1|3.0.1 +snowflake-connector-python|3.15.0|3.15.0 +sortedcontainers|2.4.0|2.4.0 +soupsieve|2.7|2.7 +spacy|3.8.6|3.8.6 +spacy-legacy|3.0.12|3.0.12 +spacy-loggers|1.0.5|1.0.5 +sparkmagic|0.21.0|0.21.0 +sqlalchemy|2.0.41|2.0.41 +sqlite-anyio|0.2.3|0.2.3 +sqlparse|0.5.0|0.5.0 +srsly|2.5.1|2.5.1 +stack_data|0.6.3|0.6.3 +starlette|0.46.2|0.46.2 +statsforecast|2.0.1|2.0.1 +statsmodels|0.14.4|0.14.4 +supervisor|4.2.5|4.2.5 +svt-av1|3.0.2|3.0.2 +sympy|1.14.0|1.14.0 +sysroot_linux-64|2.17| +tabulate|0.9.0|0.9.0 +tbb|2021.13.0|2021.13.0 +tblib|3.1.0|3.1.0 +tenacity|9.1.2|9.1.2 +tensorboard|2.18.0|2.18.0 +tensorboard-data-server|0.7.0|0.7.0 +tensorboardx|2.6.2.2|2.6.2.2 +tensorflow|2.18.0|2.18.0 +tensorflow-base|2.18.0|2.18.0 +tensorflow-estimator|2.18.0|2.18.0 +termcolor|3.1.0|3.1.0 +terminado|0.18.1|0.18.1 +text-unidecode|1.3|1.3 +tf-keras|2.18.0|2.18.0 +thinc|8.3.2|8.3.2 +threadpoolctl|3.6.0|3.6.0 +thrift|0.20.0|0.20.0 +thrift_sasl|0.4.3|0.4.3 +tifffile|2025.6.11|2025.6.11 +timm|1.0.3|1.0.3 +tinycss2|1.4.0|1.4.0 +tk|8.6.13|8.6.13 +tokenizers|0.21.2|0.21.2 +toml|0.10.2|0.10.2 +tomli|2.2.1|2.2.1 +tomlkit|0.13.3|0.13.3 +toolz|0.12.1|0.12.1 +torchmetrics|1.7.3|1.7.3 +torchvision|0.21.0|0.21.0 +torchvision-extra-decoders|0.0.2|0.0.2 +tornado|6.5.1|6.5.1 +tqdm|4.67.1|4.67.1 +traitlets|5.14.3|5.14.3 +transformers|4.52.4|4.52.4 +triad|0.9.8|0.9.8 +triton|3.2.0| +truststore|0.10.1|0.10.1 +typer|0.16.0|0.16.0 +typer-slim|0.16.0|0.16.0 +typer-slim-standard|0.16.0|0.16.0 +types-python-dateutil|2.9.0.20250516|2.9.0.20250516 +typing-extensions|4.14.0|4.14.0 +typing-inspection|0.4.1|0.4.1 +typing_extensions|4.14.0|4.14.0 +typing_inspect|0.9.0|0.9.0 +typing_utils|0.1.0|0.1.0 +tzdata|2025b|2025b +uc-micro-py|1.0.3|1.0.3 +ujson|5.10.0|5.10.0 +unicodedata2|16.0.0|16.0.0 +uri-template|1.3.0|1.3.0 +urllib3|1.26.19|1.26.19 +utilsforecast|0.2.10|0.2.10 +uvicorn|0.34.3|0.34.3 +uvicorn-standard|0.34.3|0.34.3 +uvloop|0.21.0|0.21.0 +virtualenv|20.31.2|20.31.2 +wasabi|1.1.3|1.1.3 +watchfiles|1.1.0|1.1.0 +wayland|1.23.1|1.23.1 +wcwidth|0.2.13|0.2.13 +weasel|0.4.1|0.4.1 +webcolors|24.11.1|24.11.1 +webencodings|0.5.1|0.5.1 +websocket-client|1.8.0|1.8.0 +websockets|15.0.1|15.0.1 +werkzeug|3.1.3|3.1.3 +whatthepatch|1.0.7|1.0.7 +wheel|0.45.1|0.45.1 +widgetsnbextension|4.0.14|4.0.14 +window-ops|0.0.15|0.0.15 +wrapt|1.17.2|1.17.2 +x265|3.5|3.5 +xgboost|2.1.4|2.1.4 +xkeyboard-config|2.45|2.45 +xorg-libice|1.1.2|1.1.2 +xorg-libsm|1.2.6|1.2.6 +xorg-libx11|1.8.12|1.8.12 +xorg-libxau|1.0.12|1.0.12 +xorg-libxcomposite|0.4.6|0.4.6 +xorg-libxcursor|1.2.3|1.2.3 +xorg-libxdamage|1.1.6|1.1.6 +xorg-libxdmcp|1.1.5|1.1.5 +xorg-libxext|1.3.6|1.3.6 +xorg-libxfixes|6.0.1|6.0.1 +xorg-libxi|1.8.2|1.8.2 +xorg-libxinerama|1.1.5|1.1.5 +xorg-libxrandr|1.5.4|1.5.4 +xorg-libxrender|0.9.12|0.9.12 +xorg-libxtst|1.2.5|1.2.5 +xxhash|0.8.3|0.8.3 +xyzservices|2025.4.0|2025.4.0 +y-py|0.6.2|0.6.2 +yaml|0.2.5|0.2.5 +yaml-cpp|0.8.0|0.8.0 +yapf|0.43.0|0.43.0 +yarl|1.20.1|1.20.1 +ypy-websocket|0.12.4|0.12.4 +zeromq|4.3.5|4.3.5 +zfp|1.0.1|1.0.1 +zict|3.0.0|3.0.0 +zipp|3.23.0|3.23.0 +zlib|1.3.1|1.3.1 +zlib-ng|2.2.4|2.2.4 +zstandard|0.23.0|0.23.0 +zstd|1.5.7|1.5.7 +libboost| |1.86.0 +py-xgboost-cpu| |2.1.4 diff --git a/build_artifacts/v3/v3.1/v3.1.2/cpu.env.out b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.out new file mode 100644 index 00000000..f7524065 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/cpu.env.out @@ -0,0 +1,780 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-cpu_0.tar.bz2#23b8f98a355030331f40d0245492f715 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.3.0-pyhd8ed1ab_0.conda#6ec4201043eb00aefffeef8fbb46444a +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.8.0-pyhe01879c_0.conda#7c252bceacb8e65e8a34dff228036899 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda#eeb18017386c92765ad8ffa986c3f4ce +https://conda.anaconda.org/conda-forge/noarch/aioboto3-14.1.0-pyhd8ed1ab_0.conda#f12c3d54c5c52200165bf908b121bab7 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.21.1-pyhd8ed1ab_0.conda#843cfdc4c1222b19d6fd18c4a51c660e +https://conda.anaconda.org/conda-forge/noarch/aiofiles-24.1.0-pyhd8ed1ab_1.conda#7e8045a75e921648c082ba7cd7edd114 +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.12.13-py312h178313f_0.conda#a91df3f6eaf0d0afd155274a1833ab3c +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.16.2-pyhd8ed1ab_0.conda#61051bb1e2762c4b9ef892d2e0e808e2 +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.7-pyhd8ed1ab_0.conda#54bc7622f2b937354e612e2c37b316a9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.14-pyhd8ed1ab_0.conda#17e598c07100b87139b6a5553fba69f0 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.8-pyhd8ed1ab_0.conda#42b5f37b10ba04142cda8b050e9c2cb9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.18-pyhd8ed1ab_0.conda#7bc4fab0346049ac13c84d23eb0f4e3b +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py312h7900ff3_2.conda#801dc9d60ee0cf91a038c0a2e8d4f9ff +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda#1505fc57c305c0a3174ea7aae0a0db25 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.10-py312h7900ff3_0.conda#60b9f877a7d36f146c30eb6683e4611b +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.1-pyhd8ed1ab_0.conda#a7b48730720e6d96c0228719bfa9a945 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.1-pyhd8ed1ab_0.conda#a369bc6bfe475eefe1d9944c3ad572f1 +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.1-pyha770c72_0.conda#2f03e5650c2613bbd308795357ca468c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.1-pyhd8ed1ab_0.conda#4227e5a9081a3767b3c9065be7668da7 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.1-pyha770c72_1.conda#1f5c932b308c8ff392687e9b0fc868e3 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.1-pyha770c72_0.conda#b9da6982f845888dedc7b43d4afffa84 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.1-pyhd8ed1ab_0.conda#c9c953d18ce38e878289d19edc43b962 +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py312h680f630_1.conda#acb276847c5bb9eaa38ab8a205fa5ff8 +https://conda.anaconda.org/conda-forge/noarch/beartype-0.21.0-pyhd8ed1ab_0.conda#526bf12efa59226d9f76cd6742debc41 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.3-pyhd8ed1ab_0.conda#708d2f99b8a2c833ff164a225a265e76 +https://conda.anaconda.org/conda-forge/noarch/boltons-25.0.0-pyhd8ed1ab_0.conda#c7eb87af73750d6fd97eff8bbee8cb9c +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.1-pyhd8ed1ab_0.conda#eb2c073da600ba16cd6a4714c5c73966 +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.1-pyge310_1234567_0.conda#8c3c37279f889ee8507d43ab70558b6a +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda#5d08a0ac29e6a5a984817584775d4131 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda#58178ef8ba927229fba6d84abf62c108 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda#a32e0c069f6c3dcac635f7b0b0dac67e +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.19.0-h3122c55_0.conda#c5b981f3e3d8dff6d6c949a28e068c59 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda#72525f07d72806e3b639ad4504c30ce5 +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py312h7900ff3_1.conda#f5199236b25aaea51cbd9aa739c8b5ee +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.7-cpu_py312he8b0ff3_1.conda#97835b2659eabf5e4af04509b8c549bc +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda#781d068df0cc2407d4db0ecfbb29225b +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda#a861504bbea4161a9170b85d4d2be840 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda#94b550b8d3a614dbd326af798c7dfb40 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.1-pyhd8ed1ab_0.conda#d401b7d72e2cf55444b12110ed953c9d +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/conda-25.3.1-py312h7900ff3_1.conda#360a82a866a7acad48aff85b21e0dc39 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-25.4.0-pyhd8ed1ab_0.conda#d62b8f745ff471d5594ad73605cb9b59 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py312h68727a3_0.conda#e688276449452cdfe9f8f5d3e74c23f6 +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.15-py312h68727a3_1.conda#f90e4aac7ca01df9a415d9dfaea61c24 +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda#4c18b79fa2a3371557ed3663876e5dcc +https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hff21bea_1.conda#54e8e1a8144fd678c5d43905e3ba684d +https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda#e5279009e7a7f7edd3cd2880c502b3cc +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda#f56a043ace4885f37c8856a24447cd19 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py312h2ec8cdc_0.conda#410e982d8d3b88e765af9a1b1d69fb0a +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py312hc0a28a1_0.conda#7b44c443a3bf8d3c802915c351481802 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py312h66e93f0_0.conda#6198b134b1c08173f33653896974d477 +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda#8f0ef561cd615a17df3256742a3457c4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.56.0-pyhd8ed1ab_0.conda#966c48567dbfc595d36d84ca9c645391 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda#679616eb5ad4e521c83da4650860aba7 +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda#089cf3a3becf0e2f403feaf16e921678 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.5.1-pyhd8ed1ab_0.conda#d2949f56a1479507e36e847681903376 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py312hf23773a_0_cpu.conda#491cf749a5f0afd80e9ee55eeced9029 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/fastai-2.8.2-pyhd8ed1ab_0.conda#cf834c6151a41eec121f1a06993e0847 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.13-pyhe01879c_0.conda#0e61e817af37098262b5ae1f4e04988b +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.8.4-pyhe01879c_0.conda#f3e5d266553598db489b104dd9eddf6f +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fasttransform-0.0.2-pyhd8ed1ab_0.conda#f89014a6a84308689546b345046af5a0 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.1-pyhd8ed1ab_0.conda#ffad1a6161226d41e3735b73bae5c71c +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.58.4-py312h178313f_0.conda#223a4616e3db7336569eafefac04ebbf +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda#9fa8408745a0621314b7751d11fecc18 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py312hb9e946c_0.conda#13290e5d9cb327b1b61c1bd8089ac920 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda#f2ec1facec64147850b7674633978050 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py312h7201bc8_0.conda#c539cba0be444c6cefcb853987187d9e +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.25.1-pyhd8ed1ab_0.conda#bfd74c9dddb221548d9c3f1f583693b2 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.3-pyhd8ed1ab_0.conda#86fca051b6bf09b7a3a3669bb95f46fa +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda#951ff8d9e5536896408e89d63230b8d5 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.0.1-hcae58fd_0.conda#99f9aae829a0e18b9c2e21ece0f24155 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.3-py312h2ec8cdc_0.conda#78380a74e2375eb8244290e181b2738b +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py312hacea422_2.conda#f15344009e4ae0f5e325e7027f8b5f00 +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py312h7900ff3_1.conda#0b3cda7592a578100a59e6249f3dd409 +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.14.0-nompi_py312h3faca00_100.conda#2e1c2a9e706c74c4dd6f990a680f3f90 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda#0e6e192d4b3d95708ad192d957cf3163 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/linux-64/hf-xet-1.1.5-py39h260a9e5_3.conda#7b6007f4ad18a970ca3a977148cf47de +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda#8b1160b32557290b64d5be68db3d996d +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.1-pyhd8ed1ab_0.conda#11186f5dd073e7d06e711eb3abdb6252 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.33.1-pyhd8ed1ab_0.conda#4a634f9e9ad0e28ecd4da031a4616d03 +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2025.3.30-py312h6cec22d_2.conda#20e0ec9dff3aa9627c83908695c36c6b +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda#fb1c14694de51a476ce8636d92b6f42c +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda#6b51f7459ea4073eeb5057207e2e1e3d +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.2-pyhd8ed1ab_1.conda#37a94508cbdcd62f070611d58a34d7ea +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.5-pyhd8ed1ab_0.conda#3c6add0cd4be58fd46be166ce746b903 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.5-pyhd8ed1ab_0.conda#41b4b77f68735141bc9ce0dfa086f964 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-3.1.0-pyhd8ed1ab_1.conda#0b0e68cfbf29cfad511a3d26f5e41279 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-ui-1.1.0-pyhd8ed1ab_0.conda#bd119067187f4433a1b6198641cc7455 +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-docprovider-1.1.0-pyhd8ed1ab_1.conda#ad55ecaaaad84425e8d43999f292861a +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda#7ed6505c703f3c4e1a58864bf84505e2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda#f062e04d7cd585c937acbf194dceec36 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-1.1.0-pyhd8ed1ab_0.conda#7c62cd204b2d73669660d470395bcf84 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-3.0.5-pyhe01879c_0.conda#4c6ccefebe5a565fe11d6cd27ad440ff +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda#4861a0c2a5a5d0481a450a9dfaf9febe +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.2-pyhd8ed1ab_0.conda#154beb643d4c3eb9061330273a259d1b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.8-py312h84d6215_0.conda#6713467dc95509683bfa3aca08524e8a +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.26-pymin312_hff2d567_0.conda#654dc5198c521803a71483de1eb89870 +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.26-pymin312_hff2d567_0.conda#fea0544b6915ebe0704430dedfad6c4a +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.66-pyhd8ed1ab_0.conda#6897a9ddf32e72bae472e36eccf9b5ee +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.3.45-pyhd8ed1ab_0.conda#1f21529048d043beeb921309f1ca0ac0 +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda#6dc9e1305e7d3129af4ad0dabda30e56 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda#01ba04e414e47f95c03d6ddd81fd37be +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.1-gpl_h98cc613_100.conda#9de6247361e1ee216b09cfb8b856e2ee +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hc7b3859_3_cpu.conda#9ed3ded6da29dec8417f2e1db68798f2 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_3_cpu.conda#8f8dc214d89e06933f1bc1dcd2310b9c +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_3_cpu.conda#a28f04b6e68a1c76de76783108ad729d +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_3_cpu.conda#a58e4763af8293deaac77b63bc7804d8 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h766b0b6_0.conda#f17f2d0e5c9ad6b958547fd67b155771 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_hfdb39a5_mkl.conda#eceb19ae9105bc4d0e8d5a321d66c426 +https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda#eead4e74198698d1c74f06572af753bc +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda#cb98af5db26e3f482bebb80ce9d947d3 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda#1c6eecffad553bde44c5238770cfb7da +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda#3facafe58f3858eb95527c7d3a3fc578 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_h372d94f_mkl.conda#68b55daaf083682f58d9b7f5d52aeb37 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda#d4a250da4737ee127fb1fa6452a9002e +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda#45f6713cb00f124af300342512219182 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda#64f0c503da58ec25ebd359e4d990afa8 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda#9e60c55e725c20d23125a5f0dd69af5d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda#e66f2b8ad787e7beb0f846e4bd7e8493 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.1-ha770c72_0.conda#6ae6fce1fc70ffc08191b124ece985e2 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.1-hb9d3cd8_0.conda#0ca6814d958b87c6a1cfd45595bab974 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda#8504a291085c9fb809b66cabd5834307 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.1-hb9d3cd8_0.conda#5430a506fc720a733645681173c1ef4c +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda#bfbca721fd33188ef923dfe9ba172f29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda#530566b68c3b8ce7eec4cd047eae19fe +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda#072ab14a02164b7c0c089055368ff776 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_2.conda#7b7baf93533744be2c0228bfa7149e2d +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_hc41d3b0_mkl.conda#6dc827963c12f90c79f5b2be4eaea072 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cpu_h2211129_2.conda#84afdcf3c6357d1b805d6fb6d6cb1829 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda#1a580f7796c7bf6393fddb8bbbde58dc +https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.3.0-h44402ff_1.conda#6826be8fbb2b2105ef738dfb5d8db373 +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.3.0-py312hd15d01f_1.conda#4622266e83387a3cdd0459cdd3e92771 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_3_cpu.conda#1d04307cdb1d8aeb5f55b047d5d403ea +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda#37511c874cf3b8d0034c8d24e73c0884 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.33-h7955e40_0.conda#9400594fb2639595bb20a7e723d347f0 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda#6d11a5edae89fe413c0569f16d308f5a +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda#57541755b5a51691955012b8e197c06c +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda#e79a094918988bb1807462cd42c83962 +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cpu_mkl_hc5f969b_101.conda#284859a044d1c9b9e1c0a29cee771305 +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h202a827_0.conda#0f98f3e95272d118f7931b6bef69bfe5 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda#1349c022c92c5efd3fd705a79a5804d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cpu_h97e353d_2.conda#35c3f410cf4a9f010b47ed4382d7ee3c +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda#fedf6bfe5d21d21d2b1785ec00a8889a +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cpu_py_2.conda#f005f183126727bb9a65e9df10e9591d +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.2-pyhd8ed1ab_0.conda#c94b0d7de40f2b827a75e5226759cbb4 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.7-h024ca30_0.conda#b9c9b2f494533250a9eb7ece830f4422 +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py312h374181b_1.conda#146d3cc72c65fdac198c09effb6ad133 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py312h68d7fa5_0.conda#9143d654930fa7d0ad1e351705419cb5 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py312h2ec8cdc_0.conda#94f1c9e6aab5b54f044e2497f411f841 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda#eb227c3e0bf58f5bd69c0532b157975b +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.3-py312hd3ec401_0.conda#2d69618b52d70970c81cc598e4b51118 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.3.0-py312h7900ff3_0.conda#3de345c0744dae205b36d53b1671d210 +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda#c070bbf2a3c9e2e6d2c64b219e2e78da +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h7900ff3_0.conda#6383d12a3d7895d4fbf8455861d75dc1 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h7900ff3_0.conda#5e516c19e74ae73336c2347ae2865f29 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py312h7900ff3_0.conda#7d596694edb90e5b6da4fd2044e684bb +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py312h68727a3_0.conda#6998b34027ecc577efe4e42f4b022a98 +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.5.1-py312h178313f_0.conda#291622f79db2b176d2c142b40e4b6640 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py312h66e93f0_0.conda#24bb4c00c7131d687ca2497ae1c3d369 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py312h2ec8cdc_2.conda#b4a314e8506480d1beec34d6cb80af0c +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda#3eb854547a0183b994431957fa0e05d2 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.44.0-pyhe01879c_0.conda#e4d62696245e39222c5df7f903c7bf3a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda#16bff3d37a4f99e3aa089c36c2b8d650 +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda#e46f7ac4917215b49df2ea09a694a3fa +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.3-pyhd8ed1ab_0.conda#f0b767b717cab652712d29f5e4699b2a +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py312h7bcfee6_1.conda#4444225bda83e059d679990431962b86 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.22.0-py312h2a9cbd2_0_cpu.conda#286d77f94e44b63ede4da4421c18f469 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py312h7900ff3_3.conda#74fb2303c60877f472df935713ee8906 +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda#45c3d2c224002d6d0d7769142b29f986 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.34.1-pyhd8ed1ab_0.conda#5f8298becc7e960d6fdf6b2f4a1da9d6 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.34.1-pyhd8ed1ab_0.conda#78f31192e8556616e2f26df38a4ad2a0 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.55b1-pyh3cfb1c2_0.conda#83f5d3b75f94f89c838ddaa815d517ff +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.16.0-py312h68727a3_0.conda#0d981a6b5671f1013ff2e682fee925c2 +https://conda.anaconda.org/conda-forge/noarch/optuna-4.4.0-pyhd8ed1ab_0.conda#9681872830205de109933b1627565b98 +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py312h680f630_1.conda#eedc1c23e7c2506fa9cfe783dd6ab343 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda#2979458c23c7755683a0598fb33e7666 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda#db0c1632047d38997559ce2c4741dd91 +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/panel-1.7.1-pyhd8ed1ab_0.conda#ce7149f1fc36e23ae60ba5a70a249c67 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_2.conda#34cd253bb51e7e4383b2e1154e44a17c +https://conda.anaconda.org/conda-forge/noarch/param-2.2.1-pyhd8ed1ab_0.conda#b6f8a6ac73c7d5fdc5efc206ac8c98c4 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda#ca438bf57e4f2423d261987fe423a0dd +https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda#32d0781ace05105cc99af55d36cbec7c +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda#39b4228a867772d610c02e06f939a5b8 +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda#7da7ccd349dbf6487a7778579d2bb971 +https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.7-pyhd8ed1ab_0.conda#3b1f2b1d68f8ce1485483d0fab7946e1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py312h2ec8cdc_2.conda#c2aa6644b548004f0ec02f6e856ac97f +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda#c64b77ccab10b822722904d889fa83b5 +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda#0cf580c1b73146bb9ff1bbdb4d4c8cf9 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda#9d7e427d159c1b2d516cc047ff177c48 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda#3facaca6cc0f7988df3250efccd32da3 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cpu_pyhf5c67e3_2.conda#d1ff3691bce31b0ae64840e22549b555 +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-cpu-2.1.4-pyhc1a9e11_2.conda#828e95e1dea0ddc2e2dcc3b1078ca5dd +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda#972f2a7f04b117accc08a11469c2cb6e +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda#227543d1eef90da786f0c63bd0787839 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.14.1-pyhd8ed1ab_0.conda#e924ef9dbb417744c403278dd8935beb +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda#1594696beebf1ecb6d29a1136f859a74 +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda#730a5284e26d6bdb73332dafb26aec82 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda#08223e6a73e0bca5ade16ec4cebebf23 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.22-py312h12e396e_0.conda#0811638ed5ae09844c1937cdac9744f1 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.7-pyh3cfb1c2_0.conda#1b337e3d378cde62889bb735c024b7a2 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py312h680f630_0.conda#cfbd96e5a0182dfb4110fc42dda63e57 +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.10.1-pyh3cfb1c2_0.conda#a5f9c3e867917c62d796c20dba792cbd +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py312h3770eae_0.conda#a6ce17f7df2ac544a6fe44c613ade87f +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda#c47ede9450b5347c1933ccb552fca707 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.1.0-pyhd8ed1ab_0.conda#63d6393b45f33dc0782d73f6d8ae36a0 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py312h7900ff3_1.conda#3431d27257f5c9cfd5e21ef71599d234 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda#a49c2283f24696a7b30367b7346a0144 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda#ce978e1b9ed8b8d49164e90a5cdc94cd +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda#5665f0079432f8848079c811cdb537d5 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.1-pyhe01879c_0.conda#a245b3c04afa11e2e52a0db91550da7c +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda#859c6bec94cd74119f12b961aba965a8 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda#606d94da4566aa177df7615d68b29176 +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py312h3770eae_1.conda#c6a5fb58b00dfcb11ac95db2f253e8db +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda#cc3f6c452697c1cf7e4e6e5f21861f96 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda#0dfcdc155cf23812a0c9deada86fb723 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py312_h446997d_101.conda#47d470ce7ceb3775d3f1a4c00ecef44d +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.2-pyh2a12c56_0.conda#519624ba6f01f782378cd6c40f724e1f +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda#cf2485f39740de96e2a7f2bb18ed2fee +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda#fa0ab7d5bee9efbc370e71bcb5da9856 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.7.1-h8fae777_3.conda#2c42649888aac645608191ffdc80d13a +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py312h1d27fe0_0.conda#e678f6ce596716b09beee53b3f56523c +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py312hd4369dc_0.conda#67b2b0b9fa797381c62c45341be4a759 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py312h7900ff3_0.conda#9c98a8ccc4ccdc9240c8d0f8f065fe50 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda#647770db979b43f9c9ca25dcfa7dc4e4 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda#f6082eae112814f1447b56a5e1f6ed05 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/retrying-1.4.0-pyhd8ed1ab_0.conda#51546f424879ee8e4078a68440f0adf5 +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda#7aed65d4ff222bfb7335997aa40b7da5 +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_1.conda#845d9730024ab628f55d384631ceb499 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda#ea8f79edf890d1f9b2f1bd6fbb11be1e +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda#ebef257605116235f5feac68640b44ca +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda#532c3e5d0280be4fea52396ec1fa7d5d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda#fd1fc1f1e6ceee16d9a58d3ff5a57c7f +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.1-h4085919_0.conda#47c5ac0b1181281d598b08995c0f392c +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.32-pyhd8ed1ab_0.conda#35484e383f15fadfffbaea841e776fab +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.10-pyhd8ed1ab_0.conda#149b23dd93713f2066324b770b0c1cb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.5-pyhd8ed1ab_0.conda#021b91df1d4eb889f8aeb3a31e566fed +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.2-pyhff2d567_0.conda#e87f696235e55e29041904c04681fe86 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.16-pyhd8ed1ab_0.conda#c0f618aa313465cbf4641c20b90e839e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.11-pyhbbac1ac_0.conda#97aeb43d04c648de7c1a9c3021554e31 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.13-pyhd8ed1ab_0.conda#a1758cb32e13858ce4a810dd5ef9abb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.2.0-pyhd8ed1ab_0.conda#5eab568b6c7ad23036978f5a01bf5fa9 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py312hf9745cd_1.conda#7c03f16bb8578b48352ee006adf6a5b3 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py312h7a48858_0.conda#102727f71df02a51e9e173f2e6f87d57 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4 +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda#480e915dfc6c592615ef6f217e615aa6 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda#7908b7b977e2e123a5f6a29906f2ce44 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py312h66e93f0_0.conda#0c9df8f9c424f4d3dea521dff3a6cfd6 +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.13.0-h84d6215_0.conda#f2d511bfca0cc4acca4bb40cd1905dff +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda#755cf22df8693aa0d1aec1c123fa5863 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py312h6792212_0.conda#caf61e949e00e4d9c042e063ac6ba66d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.6-py312hc39e661_0.conda#61b6e10d922f0c57ebf33f943835513e +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.41-py312h66e93f0_0.conda#4e2266c17e82847dfced222aef58d3fa +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py312h2ec8cdc_1.conda#701c0fbfe87aaef3ec8ea61f1e6f883e +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py312h68727a3_0.conda#baf8f16b09f827b0d45debaee01777a8 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py312hc0a28a1_0.conda#97dc960f3d9911964d73c2cf240baea5 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py312h7900ff3_3.conda#49365e846c0247fc2fdfa9494c91e192 +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312hda17c39_2.conda#8f4e72393be23b3eaa7bbc3cd4a71c40 +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cpu_py312h69ecde4_0.conda#a2192deb0165a2e7569a59c64b5be05b +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cpu_py312h099d1c6_0.conda#90302f6d1d41808be7c73f0fd3eb4303 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cpu_py312hc0a35a6_0.conda#a5167a1ef11ed952f96bf0a60af898f5 +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py312hc39e661_1.conda#cf356df8a75d126e7df31f1a16916c0c +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py312h2ec8cdc_1.conda#0492f04061eb5d62e3abbdc98d96f187 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.6.11-pyhd8ed1ab_0.conda#9363f389b9fe136488fef8664acb77c6 +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda#a0116df4f4ed05c303811a837d5b39d8 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.2-py312h8360d73_0.conda#f311d7f63df2ab7069a98f5a89f9d358 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.3-pyhd8ed1ab_0.conda#8c31b5c412e6bd9068f41c112bc5a046 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cpu_py312_h11dcf35_1.conda#64c4f7042c362b18432f39687d7d00ea +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py312h4387730_2.conda#65bf2daf3fe8f93bdaa4faba8b1ba525 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda#c532a6ee766bed75c4fa0c39e959d132 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/transformers-4.52.4-pyhd8ed1ab_0.conda#9fa4ceae2fb9e7ec0732f5a756f89957 +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/noarch/typer-0.16.0-pyh167b9f4_0.conda#985cc086b73bda52b2f8d66dcda460a1 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.16.0-pyhe01879c_0.conda#0d0a6c08daccb968c8c8fa93070658e2 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.16.0-hf964461_0.conda#c8fb6ddb4f5eb567d049f85b3f0c8019 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda#e3465397ca4b5b60ba9fbc92ef0672f9 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda#a1cdd40fc962e2f7944bc19e01c7e584 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.1-pyhd8ed1ab_0.conda#e0c3cd765dc15751ee2f0b03cd015712 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda#2adcd9bb86f656d3d43bf84af59a1faf +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda#96226f62dddc63226472b7477d783967 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h66e93f0_0.conda#617f5d608ff8c28ad546e5d9671cbb95 +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.3-pyh31011fe_0.conda#1520c1396715d45d02f5aa045854a65c +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.3-h31011fe_0.conda#6d80b382cafd45723e75dccef6496c67 +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda#998e481e17c1b6a74572e73b06f2df08 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda#c0600c1b374efa7a1ff444befee108ca +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.0-py312h12e396e_0.conda#34ded0fc4def76a526a6f0dccb95d7f3 +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py312h66e93f0_0.conda#b986da7551224417af6b7da4021d8050 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda#669e63af87710f8d52fdec9d4d63b404 +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cpu_pyhc1a9e11_2.conda#7e87579f3c6d0ff91ab9709c5734f9b9 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda#397a013c2dc5145a70737871aaa87e98 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py312h12e396e_1.conda#740678aaa7e636cb16e3c20d0bc25bae +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.1-py312h178313f_0.conda#3b3fa80c71d6a8d0380e9e790f5a4a8a +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda#630db208bc7bbb96725ce9832c7423bb +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 diff --git a/build_artifacts/v3/v3.1/v3.1.2/gpu.env.out b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.out new file mode 100644 index 00000000..938167c8 --- /dev/null +++ b/build_artifacts/v3/v3.1/v3.1.2/gpu.env.out @@ -0,0 +1,872 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-gpu_0.tar.bz2#7702188077361f43a4d61e64c694f850 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.3.0-pyhd8ed1ab_0.conda#6ec4201043eb00aefffeef8fbb46444a +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.8.0-pyhe01879c_0.conda#7c252bceacb8e65e8a34dff228036899 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda#eeb18017386c92765ad8ffa986c3f4ce +https://conda.anaconda.org/conda-forge/noarch/aioboto3-14.1.0-pyhd8ed1ab_0.conda#f12c3d54c5c52200165bf908b121bab7 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.21.1-pyhd8ed1ab_0.conda#843cfdc4c1222b19d6fd18c4a51c660e +https://conda.anaconda.org/conda-forge/noarch/aiofiles-24.1.0-pyhd8ed1ab_1.conda#7e8045a75e921648c082ba7cd7edd114 +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.12.13-py312h178313f_0.conda#a91df3f6eaf0d0afd155274a1833ab3c +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.16.2-pyhd8ed1ab_0.conda#61051bb1e2762c4b9ef892d2e0e808e2 +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.7-pyhd8ed1ab_0.conda#54bc7622f2b937354e612e2c37b316a9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.14-pyhd8ed1ab_0.conda#17e598c07100b87139b6a5553fba69f0 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.8-pyhd8ed1ab_0.conda#42b5f37b10ba04142cda8b050e9c2cb9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.18-pyhd8ed1ab_0.conda#7bc4fab0346049ac13c84d23eb0f4e3b +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py312h7900ff3_2.conda#801dc9d60ee0cf91a038c0a2e8d4f9ff +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda#1505fc57c305c0a3174ea7aae0a0db25 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.10-py312h7900ff3_0.conda#60b9f877a7d36f146c30eb6683e4611b +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.1-pyhd8ed1ab_0.conda#a7b48730720e6d96c0228719bfa9a945 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.1-pyhd8ed1ab_0.conda#a369bc6bfe475eefe1d9944c3ad572f1 +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.1-pyha770c72_0.conda#2f03e5650c2613bbd308795357ca468c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.1-pyhd8ed1ab_0.conda#4227e5a9081a3767b3c9065be7668da7 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.1-pyha770c72_1.conda#1f5c932b308c8ff392687e9b0fc868e3 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.1-pyha770c72_0.conda#b9da6982f845888dedc7b43d4afffa84 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.1-pyhd8ed1ab_0.conda#c9c953d18ce38e878289d19edc43b962 +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py312h680f630_1.conda#acb276847c5bb9eaa38ab8a205fa5ff8 +https://conda.anaconda.org/conda-forge/noarch/beartype-0.21.0-pyhd8ed1ab_0.conda#526bf12efa59226d9f76cd6742debc41 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_5.conda#4846404183ea94fd6652e9fb6ac5e16f +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda#18852d82df8e5737e320a8731ace51b9 +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda#327ef163ac88b57833c1c1a20a9e7e0d +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.3-pyhd8ed1ab_0.conda#708d2f99b8a2c833ff164a225a265e76 +https://conda.anaconda.org/conda-forge/noarch/boltons-25.0.0-pyhd8ed1ab_0.conda#c7eb87af73750d6fd97eff8bbee8cb9c +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.1-pyhd8ed1ab_0.conda#eb2c073da600ba16cd6a4714c5c73966 +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.1-pyge310_1234567_0.conda#8c3c37279f889ee8507d43ab70558b6a +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_3.conda#5d08a0ac29e6a5a984817584775d4131 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_3.conda#58178ef8ba927229fba6d84abf62c108 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda#a32e0c069f6c3dcac635f7b0b0dac67e +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.19.0-h3122c55_0.conda#c5b981f3e3d8dff6d6c949a28e068c59 +https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda#3cb814f83f1f71ac1985013697f80cc1 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda#72525f07d72806e3b639ad4504c30ce5 +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py312h7900ff3_1.conda#f5199236b25aaea51cbd9aa739c8b5ee +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.8-cuda120_py312ha968d31_104.conda#ea87817807209f55c3936ff85e386e54 +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda#781d068df0cc2407d4db0ecfbb29225b +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda#a861504bbea4161a9170b85d4d2be840 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda#94b550b8d3a614dbd326af798c7dfb40 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.1-pyhd8ed1ab_0.conda#d401b7d72e2cf55444b12110ed953c9d +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/conda-25.3.1-py312h7900ff3_1.conda#360a82a866a7acad48aff85b21e0dc39 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-25.4.0-pyhd8ed1ab_0.conda#d62b8f745ff471d5594ad73605cb9b59 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py312h68727a3_0.conda#e688276449452cdfe9f8f5d3e74c23f6 +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.15-py312h68727a3_1.conda#f90e4aac7ca01df9a415d9dfaea61c24 +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda#4c18b79fa2a3371557ed3663876e5dcc +https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hff21bea_1.conda#54e8e1a8144fd678c5d43905e3ba684d +https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda#e5279009e7a7f7edd3cd2880c502b3cc +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-45.0.4-py312hda17c39_0.conda#f56a043ace4885f37c8856a24447cd19 +https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.6.77-ha770c72_0.conda#365a924cf93535157d61debac807e9e4 +https://conda.anaconda.org/conda-forge/linux-64/cuda-command-line-tools-12.6.3-ha770c72_0.conda#3d338828e4b5fa7768a7a59cbeadaa32 +https://conda.anaconda.org/conda-forge/noarch/cuda-compiler-12.6.3-hbad6d8a_0.conda#ec211b132a6554400de751021e2b695c +https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.6.85-ha770c72_0.conda#4b14e78e12daa061dcdbe3ceed95cb57 +https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.6.85-ha770c72_0.conda#4ab193b5fcdcf8d7b094221e3977a112 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.6.77-h5888daf_0.conda#feb533cb1e5f7ffbbb82d8465e0adaad +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.6.77-h5888daf_0.conda#86e47562bfe92a529ae1c75bbcff814b +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.6.77-h3f2d84a_0.conda#f967e2449b6c066f6d09497fff12d803 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.6.77-h5888daf_0.conda#ae37b405ef74e57ef9685fcf820a2dde +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.6.77-h3f2d84a_0.conda#3ad8eacbf716ddbca1b5292a3668c821 +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.6.77-h3f2d84a_0.conda#314908ad05e2c4833475a7d93f4149ca +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.6.77-hbd13f7d_1.conda#881d6e2cdb12db52e0c3d9dff6f7f14d +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.6.80-hbd13f7d_0.conda#85e9354a9e32f7526d2451ed2bb93347 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.6.80-h5888daf_0.conda#ed37a8cad974fed39334d096f3b18d81 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuxxfilt-12.6.77-hbd13f7d_1.conda#faefe1c43db4641223a1dfa23ee21e0f +https://conda.anaconda.org/conda-forge/linux-64/cuda-driver-dev-12.6.77-h5888daf_0.conda#42f029040bcf7a8fd0fc4cf82db91a99 +https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.6.77-h3f2d84a_0.conda#f2b7f45acf027c7de8c383b1d2f6a298 +https://conda.anaconda.org/conda-forge/linux-64/cuda-gdb-12.6.77-h50b4baa_1.conda#9238f590fcc613c86ebff4a421db85e0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.6.3-ha770c72_0.conda#d88e326c1d34c1f4258625e7b34de45d +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-dev-12.6.3-ha770c72_0.conda#baf00d9d33fcb6ffb6d12ca1002e5e86 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.6.85-hcdd1206_0.conda#fe294b5f78236b26d0b388652212e581 +https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.6.85-he91c749_0.conda#8d4bca6397374ecbd3001ab4ece3b23d +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.6.85-h85509e4_0.conda#e5b96d2e34abaa90c0c1c968d02bbc9b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.6.85-he02047a_0.conda#30b272fa555944cb44f8d4dc9244abb5 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.6.85-h04802cd_0.conda#4e1376cbc6d66b6744557cabeff02ca2 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.6.77-hbd13f7d_1.conda#86be0f804995240f973a48f291d371de +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvml-dev-12.6.77-hbd13f7d_1.conda#5b45001c3b1b10762ff95565d8d3b3a0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprof-12.6.80-hbd13f7d_0.conda#b5ccb8e53c9ec037d14e3e8b14a2740d +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprune-12.6.77-hbd13f7d_1.conda#533cf43c4201ae6387f156ff7cbd8c89 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.6.85-hbd13f7d_0.conda#9d9909844a0133153d54b6f07283da8c +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-dev-12.6.85-h5888daf_0.conda#a526356b18499e3dbe2b4ae8f7e77213 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.6.77-hbd13f7d_0.conda#3fe3afe309918465f82f984b3a1a85e9 +https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.6.85-ha770c72_0.conda#9c1f1ecfd9990b549312b3206d9c003b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.6.85-he02047a_0.conda#5b72e12459f5deab812cb30b67b64d48 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.6.85-he02047a_0.conda#0919bdf9454da5eb974e98dd79bf38fe +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.6.77-hbd13f7d_0.conda#ae042b206c97ec79af1a1fb2f91f6eb0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-dev-12.6.77-h5888daf_0.conda#0c0167532e40574e9cf67b6270704dad +https://conda.anaconda.org/conda-forge/linux-64/cuda-profiler-api-12.6.77-h7938cbb_0.conda#b051a6584fa2f5d8815f9823d6ffa257 +https://conda.anaconda.org/conda-forge/linux-64/cuda-sanitizer-api-12.6.77-hbd13f7d_1.conda#ba073c8009d7166892a4260179b07582 +https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda#1c8b99e65a4423b1e4ac2e4c76fb0978 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda#5aa5b04b995ebe10fe44de6fe93b1850 +https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda#1ce8b218d359d9ed0ab481f2a3f3c512 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py312h2ec8cdc_0.conda#410e982d8d3b88e765af9a1b1d69fb0a +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py312hc0a28a1_0.conda#7b44c443a3bf8d3c802915c351481802 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py312h66e93f0_0.conda#6198b134b1c08173f33653896974d477 +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.5.1-pyhd8ed1ab_0.conda#8f0ef561cd615a17df3256742a3457c4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.56.0-pyhd8ed1ab_0.conda#966c48567dbfc595d36d84ca9c645391 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda#679616eb5ad4e521c83da4650860aba7 +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda#089cf3a3becf0e2f403feaf16e921678 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.5.1-pyhd8ed1ab_0.conda#d2949f56a1479507e36e847681903376 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py312hf23773a_0_cpu.conda#491cf749a5f0afd80e9ee55eeced9029 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/fastai-2.8.2-pyhd8ed1ab_0.conda#cf834c6151a41eec121f1a06993e0847 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.13-pyhe01879c_0.conda#0e61e817af37098262b5ae1f4e04988b +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.8.4-pyhe01879c_0.conda#f3e5d266553598db489b104dd9eddf6f +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fasttransform-0.0.2-pyhd8ed1ab_0.conda#f89014a6a84308689546b345046af5a0 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.1-pyhd8ed1ab_0.conda#ffad1a6161226d41e3735b73bae5c71c +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.58.4-py312h178313f_0.conda#223a4616e3db7336569eafefac04ebbf +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda#9fa8408745a0621314b7751d11fecc18 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py312hb9e946c_0.conda#13290e5d9cb327b1b61c1bd8089ac920 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_2.conda#d92e51bf4b6bdbfe45e5884fb0755afe +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-h1e990d8_2.conda#f46cf0acdcb6019397d37df1e407ab91 +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-h6f18a23_11.conda#639ef869618e311eee4888fcb40747e2 +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/gds-tools-1.11.1.6-h5888daf_4.conda#25f08271d608ad863c326888b1769b74 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda#f2ec1facec64147850b7674633978050 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py312h7201bc8_0.conda#c539cba0be444c6cefcb853987187d9e +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.25.1-pyhd8ed1ab_0.conda#bfd74c9dddb221548d9c3f1f583693b2 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.3-pyhd8ed1ab_0.conda#86fca051b6bf09b7a3a3669bb95f46fa +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda#951ff8d9e5536896408e89d63230b8d5 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.0.1-hcae58fd_0.conda#99f9aae829a0e18b9c2e21ece0f24155 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.3-py312h2ec8cdc_0.conda#78380a74e2375eb8244290e181b2738b +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py312hacea422_2.conda#f15344009e4ae0f5e325e7027f8b5f00 +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py312h7900ff3_1.conda#0b3cda7592a578100a59e6249f3dd409 +https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_2.conda#07e8df00b7cd3084ad3ef598ce32a71c +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hae580e1_2.conda#b55f02540605c322a47719029f8404cc +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-hb14504d_11.conda#2ca7575e4f2da39c5ee260e022ab1a6f +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.14.0-nompi_py312h3faca00_100.conda#2e1c2a9e706c74c4dd6f990a680f3f90 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda#0e6e192d4b3d95708ad192d957cf3163 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/linux-64/hf-xet-1.1.5-py39h260a9e5_3.conda#7b6007f4ad18a970ca3a977148cf47de +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda#8b1160b32557290b64d5be68db3d996d +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.1-pyhd8ed1ab_0.conda#11186f5dd073e7d06e711eb3abdb6252 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.33.1-pyhd8ed1ab_0.conda#4a634f9e9ad0e28ecd4da031a4616d03 +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2025.3.30-py312h6cec22d_2.conda#20e0ec9dff3aa9627c83908695c36c6b +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda#fb1c14694de51a476ce8636d92b6f42c +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda#6b51f7459ea4073eeb5057207e2e1e3d +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.2-pyhd8ed1ab_1.conda#37a94508cbdcd62f070611d58a34d7ea +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.5-pyhd8ed1ab_0.conda#3c6add0cd4be58fd46be166ce746b903 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.5-pyhd8ed1ab_0.conda#41b4b77f68735141bc9ce0dfa086f964 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-3.1.0-pyhd8ed1ab_1.conda#0b0e68cfbf29cfad511a3d26f5e41279 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-ui-1.1.0-pyhd8ed1ab_0.conda#bd119067187f4433a1b6198641cc7455 +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-docprovider-1.1.0-pyhd8ed1ab_1.conda#ad55ecaaaad84425e8d43999f292861a +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda#7ed6505c703f3c4e1a58864bf84505e2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda#f062e04d7cd585c937acbf194dceec36 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_ydoc-1.1.0-pyhd8ed1ab_0.conda#7c62cd204b2d73669660d470395bcf84 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-3.0.5-pyhe01879c_0.conda#4c6ccefebe5a565fe11d6cd27ad440ff +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda#4861a0c2a5a5d0481a450a9dfaf9febe +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.2-pyhd8ed1ab_0.conda#154beb643d4c3eb9061330273a259d1b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda#ad8527bf134a90e1c9ed35fa0b64318c +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.8-py312h84d6215_0.conda#6713467dc95509683bfa3aca08524e8a +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.26-pymin312_hff2d567_0.conda#654dc5198c521803a71483de1eb89870 +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.26-pymin312_hff2d567_0.conda#fea0544b6915ebe0704430dedfad6c4a +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.66-pyhd8ed1ab_0.conda#6897a9ddf32e72bae472e36eccf9b5ee +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.3.45-pyhd8ed1ab_0.conda#1f21529048d043beeb921309f1ca0ac0 +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda#acd9213a63cb62521290e581ef82de80 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda#01ba04e414e47f95c03d6ddd81fd37be +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.1-gpl_h98cc613_100.conda#9de6247361e1ee216b09cfb8b856e2ee +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-h1938f28_3_cuda.conda#9ef724782cd5b90dd807425effcae27c +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hb826db4_3_cuda.conda#8ad8c6fb0d492bd1866a67015ef3ffc5 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hb826db4_3_cuda.conda#9f7735737257d636b439324485fe0299 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-hbf482d9_3_cuda.conda#fd775b79193481c0a669aa97770376ec +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.3.0-h766b0b6_0.conda#f17f2d0e5c9ad6b958547fd67b155771 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_hfdb39a5_mkl.conda#eceb19ae9105bc4d0e8d5a321d66c426 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda#cb98af5db26e3f482bebb80ce9d947d3 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_3.conda#1c6eecffad553bde44c5238770cfb7da +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_3.conda#3facafe58f3858eb95527c7d3a3fc578 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda#c44c16d6976d2aebbd65894d7741e67e +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_h372d94f_mkl.conda#68b55daaf083682f58d9b7f5d52aeb37 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.6.4.1-h5888daf_1.conda#7718c5dd31ed259736a30b8a1422de70 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.6.4.1-h5888daf_1.conda#d7c84bdc63481995050f42e37c55f341 +https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda#c19f7281266ca77da5458d2ccf17ba82 +https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda#bce8ec010b35f2c1e5db441f3f396754 +https://conda.anaconda.org/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda#290a26e7caf9bcbdde629db6612e212e +https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.3.0.4-hbd13f7d_0.conda#a296940fa2e0448d066d03bf6b586772 +https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.3.0.4-h5888daf_0.conda#e51d70f74e9e5241a0bf33fb866e2476 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.11.1.6-h12f29b5_4.conda#44fd967c18c41e4e5822f339621a47b4 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-dev-1.11.1.6-h5888daf_4.conda#e97a43d752c8a438a9f339a11cf29cb0 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda#d4a250da4737ee127fb1fa6452a9002e +https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.7.77-hbd13f7d_0.conda#d8b8a1e6e6205447289cd09212c914ac +https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.7.77-h5888daf_0.conda#83a87ce38925eb22b509a8aba3ba3aaf +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda#45f6713cb00f124af300342512219182 +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.1.2-h5888daf_1.conda#200e029abc85b27af8935f8348bee84f +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.1.2-h5888daf_1.conda#2a9339395d087361dc346d0b4826d70b +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.4.2-hbd13f7d_0.conda#8186e9de34f321aa34965c1cb72c0c26 +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.4.2-h5888daf_0.conda#48de133da2c0d116b3e7053b8c8dff89 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda#64f0c503da58ec25ebd359e4d990afa8 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda#9e60c55e725c20d23125a5f0dd69af5d +https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-hc03c837_102.conda#4c1d6961a6a54f602ae510d9bf31fa60 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda#e66f2b8ad787e7beb0f846e4bd7e8493 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.1-ha770c72_0.conda#6ae6fce1fc70ffc08191b124ece985e2 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.1-hb9d3cd8_0.conda#0ca6814d958b87c6a1cfd45595bab974 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.1-hb9d3cd8_0.conda#8504a291085c9fb809b66cabd5834307 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.1-hb9d3cd8_0.conda#5430a506fc720a733645681173c1ef4c +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda#bfbca721fd33188ef923dfe9ba172f29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda#530566b68c3b8ce7eec4cd047eae19fe +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda#072ab14a02164b7c0c089055368ff776 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda#3cd1a7238a0dd3d0860fdefc496cc854 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_2.conda#7b7baf93533744be2c0228bfa7149e2d +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_hc41d3b0_mkl.conda#6dc827963c12f90c79f5b2be4eaea072 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cuda_h3896ea8_2.conda#7576219e02463ae7218c07368d9b5c57 +https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.7-he9d0ab4_0.conda#63f1accca4913e6b66a2d546c30ff4db +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda#1a580f7796c7bf6393fddb8bbbde58dc +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.8.0-h566cb83_2.conda#b6818d8ad575df8faace47ee560e0630 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.3.0-h44402ff_1.conda#6826be8fbb2b2105ef738dfb5d8db373 +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.3.0-py312hd15d01f_1.conda#4622266e83387a3cdd0459cdd3e92771 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda#db63358239cbe1ff86242406d440e44a +https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.3.1.54-h5888daf_0.conda#f1c723a97c4c8f82429df5a7b9b96382 +https://conda.anaconda.org/conda-forge/linux-64/libnpp-dev-12.3.1.54-h5888daf_0.conda#37c3d406ec286cfae716868c2915026c +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb9d3cd8_3.conda#20ab6b90150325f1af7ca96bffafde63 +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.6.77-hbd13f7d_0.conda#3131e00022d739313baa5b4498e6edd0 +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-dev-12.6.77-h5888daf_0.conda#4affbc6122feb5ed25ee3c812b4b3b32 +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.6.85-hbd13f7d_0.conda#dca2d62b3812922e6976f76c0a401918 +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-dev-12.6.85-h5888daf_0.conda#581771c7078e1c9e23af358c122bdcf4 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.3.54-h5888daf_0.conda#56a2750239be4499dd6c9a27cebfb4b4 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-dev-12.3.3.54-ha770c72_0.conda#38ab71f4fadbd66e9421a6b62342ad69 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h3f30f2e_3_cuda.conda#bb9f38db50bd715eb0b90468fec41c9f +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda#37511c874cf3b8d0034c8d24e73c0884 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-he8ea267_2.conda#2b6cdf7bb95d3d10ef4e38ce0bc95dba +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.33-h7955e40_0.conda#9400594fb2639595bb20a7e723d347f0 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda#6d11a5edae89fe413c0569f16d308f5a +https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-hc03c837_102.conda#aa38de2738c5f4a72a880e3d31ffe8b4 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda#57541755b5a51691955012b8e197c06c +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.6-h4e0b6ca_0.conda#071409970083d0f99ab7b569352771c9 +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda#e79a094918988bb1807462cd42c83962 +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cuda126_mkl_h9e9ac90_301.conda#86b93b838cc834b5b2bb096331392c55 +https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.6-hbe16f8c_0.conda#2ddf4d040b58018f8ba3dfd464837827 +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h202a827_0.conda#0f98f3e95272d118f7931b6bef69bfe5 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda#1349c022c92c5efd3fd705a79a5804d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cuda128_hacb7753_2.conda#f96e41475bf6430c92f347e36d5c41af +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda#fedf6bfe5d21d21d2b1785ec00a8889a +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cuda_py_2.conda#580f1b7ee6c4c3ed28b400b2999156ad +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.2-pyhd8ed1ab_0.conda#c94b0d7de40f2b827a75e5226759cbb4 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.7-h024ca30_0.conda#b9c9b2f494533250a9eb7ece830f4422 +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py312h374181b_1.conda#146d3cc72c65fdac198c09effb6ad133 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py312h68d7fa5_0.conda#9143d654930fa7d0ad1e351705419cb5 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py312h2ec8cdc_0.conda#94f1c9e6aab5b54f044e2497f411f841 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda#eb227c3e0bf58f5bd69c0532b157975b +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.3-py312hd3ec401_0.conda#2d69618b52d70970c81cc598e4b51118 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.3.0-py312h7900ff3_0.conda#3de345c0744dae205b36d53b1671d210 +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py312hf9745cd_2.conda#c070bbf2a3c9e2e6d2c64b219e2e78da +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h7900ff3_0.conda#6383d12a3d7895d4fbf8455861d75dc1 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h7900ff3_0.conda#5e516c19e74ae73336c2347ae2865f29 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py312h7900ff3_0.conda#7d596694edb90e5b6da4fd2044e684bb +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py312h68727a3_0.conda#6998b34027ecc577efe4e42f4b022a98 +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.5.1-py312h178313f_0.conda#291622f79db2b176d2c142b40e4b6640 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py312h66e93f0_0.conda#24bb4c00c7131d687ca2497ae1c3d369 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py312h2ec8cdc_2.conda#b4a314e8506480d1beec34d6cb80af0c +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/namex-0.1.0-pyhd8ed1ab_0.conda#3eb854547a0183b994431957fa0e05d2 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.44.0-pyhe01879c_0.conda#e4d62696245e39222c5df7f903c7bf3a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda#cac7e04909de453bca7ef38beb28e3c5 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.5-pyhe01879c_0.conda#16bff3d37a4f99e3aa089c36c2b8d650 +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda#e46f7ac4917215b49df2ea09a694a3fa +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.3-pyhd8ed1ab_0.conda#f0b767b717cab652712d29f5e4699b2a +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py312h7bcfee6_1.conda#4444225bda83e059d679990431962b86 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.22.0-py312hadc37f1_200_cuda.conda#caf20a72733f1df79a48dec4ab9359d0 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py312h7900ff3_3.conda#74fb2303c60877f472df935713ee8906 +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-h5888daf_0.conda#45c3d2c224002d6d0d7769142b29f986 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.34.1-pyhd8ed1ab_0.conda#5f8298becc7e960d6fdf6b2f4a1da9d6 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.34.1-pyhd8ed1ab_0.conda#78f31192e8556616e2f26df38a4ad2a0 +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.55b1-pyh3cfb1c2_0.conda#83f5d3b75f94f89c838ddaa815d517ff +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.16.0-py312h68727a3_0.conda#0d981a6b5671f1013ff2e682fee925c2 +https://conda.anaconda.org/conda-forge/noarch/optuna-4.4.0-pyhd8ed1ab_0.conda#9681872830205de109933b1627565b98 +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py312h680f630_1.conda#eedc1c23e7c2506fa9cfe783dd6ab343 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda#2979458c23c7755683a0598fb33e7666 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda#db0c1632047d38997559ce2c4741dd91 +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/panel-1.7.1-pyhd8ed1ab_0.conda#ce7149f1fc36e23ae60ba5a70a249c67 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_2.conda#34cd253bb51e7e4383b2e1154e44a17c +https://conda.anaconda.org/conda-forge/noarch/param-2.2.1-pyhd8ed1ab_0.conda#b6f8a6ac73c7d5fdc5efc206ac8c98c4 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda#ca438bf57e4f2423d261987fe423a0dd +https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda#32d0781ace05105cc99af55d36cbec7c +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda#39b4228a867772d610c02e06f939a5b8 +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda#7da7ccd349dbf6487a7778579d2bb971 +https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.7-pyhd8ed1ab_0.conda#3b1f2b1d68f8ce1485483d0fab7946e1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py312h2ec8cdc_2.conda#c2aa6644b548004f0ec02f6e856ac97f +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda#c64b77ccab10b822722904d889fa83b5 +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda#0cf580c1b73146bb9ff1bbdb4d4c8cf9 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda#9d7e427d159c1b2d516cc047ff177c48 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda#3facaca6cc0f7988df3250efccd32da3 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cuda128_pyh71c493a_2.conda#396ec177bfe4129f28a6bd980c60fe79 +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-gpu-2.1.4-pyh68bd8d9_2.conda#19ddac5f970c3febcc7aeef66af8d7a4 +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda#972f2a7f04b117accc08a11469c2cb6e +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h09cf70e_0_cuda.conda#9d78af3e5a343c7e1a40e1dc236a3970 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.14.1-pyhd8ed1ab_0.conda#e924ef9dbb417744c403278dd8935beb +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyhc790b64_3.conda#1594696beebf1ecb6d29a1136f859a74 +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh217bc35_3.conda#730a5284e26d6bdb73332dafb26aec82 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda#08223e6a73e0bca5ade16ec4cebebf23 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.22-py312h12e396e_0.conda#0811638ed5ae09844c1937cdac9744f1 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.7-pyh3cfb1c2_0.conda#1b337e3d378cde62889bb735c024b7a2 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py312h680f630_0.conda#cfbd96e5a0182dfb4110fc42dda63e57 +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.10.1-pyh3cfb1c2_0.conda#a5f9c3e867917c62d796c20dba792cbd +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py312h3770eae_0.conda#a6ce17f7df2ac544a6fe44c613ade87f +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py312h66e93f0_4.conda#c47ede9450b5347c1933ccb552fca707 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.1.0-pyhd8ed1ab_0.conda#63d6393b45f33dc0782d73f6d8ae36a0 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py312h7900ff3_1.conda#3431d27257f5c9cfd5e21ef71599d234 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda#a49c2283f24696a7b30367b7346a0144 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda#ce978e1b9ed8b8d49164e90a5cdc94cd +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda#5665f0079432f8848079c811cdb537d5 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.1-pyhe01879c_0.conda#a245b3c04afa11e2e52a0db91550da7c +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda#859c6bec94cd74119f12b961aba965a8 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda#606d94da4566aa177df7615d68b29176 +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py312h3770eae_1.conda#c6a5fb58b00dfcb11ac95db2f253e8db +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda#cc3f6c452697c1cf7e4e6e5f21861f96 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda#0dfcdc155cf23812a0c9deada86fb723 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py312_hea45ecb_301.conda#f2c1ec14fc4236f475dd4a5cec4525b5 +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.2-pyh2a12c56_0.conda#519624ba6f01f782378cd6c40f724e1f +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py312hc0a28a1_0.conda#3f62987017ad18e9e7dadce9899de9ef +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda#cf2485f39740de96e2a7f2bb18ed2fee +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda#fa0ab7d5bee9efbc370e71bcb5da9856 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.7.1-h8fae777_3.conda#2c42649888aac645608191ffdc80d13a +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py312h1d27fe0_0.conda#e678f6ce596716b09beee53b3f56523c +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py312hd4369dc_0.conda#67b2b0b9fa797381c62c45341be4a759 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py312h7900ff3_0.conda#9c98a8ccc4ccdc9240c8d0f8f065fe50 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda#e5be997517f19a365b8b111b888be426 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda#647770db979b43f9c9ca25dcfa7dc4e4 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda#f6082eae112814f1447b56a5e1f6ed05 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/retrying-1.4.0-pyhd8ed1ab_0.conda#51546f424879ee8e4078a68440f0adf5 +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda#7aed65d4ff222bfb7335997aa40b7da5 +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_1.conda#845d9730024ab628f55d384631ceb499 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda#ea8f79edf890d1f9b2f1bd6fbb11be1e +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda#ebef257605116235f5feac68640b44ca +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda#532c3e5d0280be4fea52396ec1fa7d5d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda#fd1fc1f1e6ceee16d9a58d3ff5a57c7f +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.1-h4085919_0.conda#47c5ac0b1181281d598b08995c0f392c +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.32-pyhd8ed1ab_0.conda#35484e383f15fadfffbaea841e776fab +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.10-pyhd8ed1ab_0.conda#149b23dd93713f2066324b770b0c1cb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.5-pyhd8ed1ab_0.conda#021b91df1d4eb889f8aeb3a31e566fed +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.2-pyhff2d567_0.conda#e87f696235e55e29041904c04681fe86 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.16-pyhd8ed1ab_0.conda#c0f618aa313465cbf4641c20b90e839e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.11-pyhbbac1ac_0.conda#97aeb43d04c648de7c1a9c3021554e31 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.13-pyhd8ed1ab_0.conda#a1758cb32e13858ce4a810dd5ef9abb1 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.2.0-pyhd8ed1ab_0.conda#5eab568b6c7ad23036978f5a01bf5fa9 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py312hf9745cd_1.conda#7c03f16bb8578b48352ee006adf6a5b3 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py312h7a48858_0.conda#102727f71df02a51e9e173f2e6f87d57 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda#00b999c5f9d01fb633db819d79186bd4 +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda#480e915dfc6c592615ef6f217e615aa6 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda#7908b7b977e2e123a5f6a29906f2ce44 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py312h66e93f0_0.conda#0c9df8f9c424f4d3dea521dff3a6cfd6 +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.13.0-h84d6215_0.conda#f2d511bfca0cc4acca4bb40cd1905dff +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda#755cf22df8693aa0d1aec1c123fa5863 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py312h6792212_0.conda#caf61e949e00e4d9c042e063ac6ba66d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.6-py312hc39e661_0.conda#61b6e10d922f0c57ebf33f943835513e +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.41-py312h66e93f0_0.conda#4e2266c17e82847dfced222aef58d3fa +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py312h2ec8cdc_1.conda#701c0fbfe87aaef3ec8ea61f1e6f883e +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py312h68727a3_0.conda#baf8f16b09f827b0d45debaee01777a8 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py312hc0a28a1_0.conda#97dc960f3d9911964d73c2cf240baea5 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py312h7900ff3_3.conda#49365e846c0247fc2fdfa9494c91e192 +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda#460eba7851277ec1fd80a1a24080787a +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py312hda17c39_2.conda#8f4e72393be23b3eaa7bbc3cd4a71c40 +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cuda126py312h5379a72_200.conda#9920650e1d02211974cf52191e804b38 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cuda126py312hfb0ba9c_200.conda#c2462b199a73d4db2f2085933997bb0f +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cuda126py312hd49ae37_200.conda#faa2c41083d15a651700a3e34eb745fd +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py312hc39e661_1.conda#cf356df8a75d126e7df31f1a16916c0c +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py312h2ec8cdc_1.conda#0492f04061eb5d62e3abbdc98d96f187 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.6.11-pyhd8ed1ab_0.conda#9363f389b9fe136488fef8664acb77c6 +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda#a0116df4f4ed05c303811a837d5b39d8 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.2-py312h8360d73_0.conda#f311d7f63df2ab7069a98f5a89f9d358 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda#146402bf0f11cbeb8f781fa4309a95d3 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.3-pyhd8ed1ab_0.conda#8c31b5c412e6bd9068f41c112bc5a046 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cuda126_py312_h3e02b30_1.conda#4b9c1ebf22c79715cfbb27030ca4f6d3 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py312h4387730_2.conda#65bf2daf3fe8f93bdaa4faba8b1ba525 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda#c532a6ee766bed75c4fa0c39e959d132 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/transformers-4.52.4-pyhd8ed1ab_0.conda#9fa4ceae2fb9e7ec0732f5a756f89957 +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_1.conda#f4e3c6065bb655c235051a41ccf40a99 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/noarch/typer-0.16.0-pyh167b9f4_0.conda#985cc086b73bda52b2f8d66dcda460a1 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.16.0-pyhe01879c_0.conda#0d0a6c08daccb968c8c8fa93070658e2 +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.16.0-hf964461_0.conda#c8fb6ddb4f5eb567d049f85b3f0c8019 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda#e3465397ca4b5b60ba9fbc92ef0672f9 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda#a1cdd40fc962e2f7944bc19e01c7e584 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.1-pyhd8ed1ab_0.conda#e0c3cd765dc15751ee2f0b03cd015712 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda#2adcd9bb86f656d3d43bf84af59a1faf +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py312h2ec8cdc_1.conda#96226f62dddc63226472b7477d783967 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h66e93f0_0.conda#617f5d608ff8c28ad546e5d9671cbb95 +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.3-pyh31011fe_0.conda#1520c1396715d45d02f5aa045854a65c +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.3-h31011fe_0.conda#6d80b382cafd45723e75dccef6496c67 +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda#998e481e17c1b6a74572e73b06f2df08 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda#c0600c1b374efa7a1ff444befee108ca +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.0-py312h12e396e_0.conda#34ded0fc4def76a526a6f0dccb95d7f3 +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py312h66e93f0_0.conda#b986da7551224417af6b7da4021d8050 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda#669e63af87710f8d52fdec9d4d63b404 +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cuda128_pyh68bd8d9_2.conda#2a70764754ac5fe070e97e86ae428710 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda#397a013c2dc5145a70737871aaa87e98 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py312h12e396e_1.conda#740678aaa7e636cb16e3c20d0bc25bae +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.1-py312h178313f_0.conda#3b3fa80c71d6a8d0380e9e790f5a4a8a +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda#630db208bc7bbb96725ce9832c7423bb +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 From 68ed65b50f0512530e7affdc27b697aaabb1b604 Mon Sep 17 00:00:00 2001 From: Ruinong Tian Date: Thu, 17 Jul 2025 18:44:48 +0000 Subject: [PATCH 7/7] Handle non-semver format package in report generation --- src/package_report.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/package_report.py b/src/package_report.py index e6ce4456..6c4443a4 100644 --- a/src/package_report.py +++ b/src/package_report.py @@ -32,7 +32,11 @@ def _get_package_versions_in_upstream(target_packages_match_spec_out, target_ver # packages such as pytorch-gpu are present only in linux-64 sub directory match_spec_out = target_packages_match_spec_out[package] package_version = str(match_spec_out.get("version")).removeprefix("==") - package_version = get_semver(package_version) + try: + package_version = get_semver(package_version) + except ValueError: + print(f"Skipping package {package} with non-semver version: {package_version}") + continue channel = match_spec_out.get("channel").channel_name subdir_filter = "[subdir=" + match_spec_out.get("subdir") + "]" search_result = conda.cli.python_api.run_command(