镜像构建历史
# 2026-05-12 14:06:17 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/app/start_webui.sh"]
# 2026-05-12 14:06:17 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:${GRADIO_SERVER_PORT}/health || exit 1"] "30s" "10s" "1m0s" "0s" '\x03'}
# 2026-05-12 14:06:17 525.00B 执行命令并创建新的镜像层
RUN |13 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=7860 LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth DECODER_CONFIG_NAME=modded_dac_vq /bin/sh -c printf '%s\n' '#!/bin/bash' 'source /app/common.sh' '' 'log "Starting Fish Speech WebUI..."' 'validate_env' '' 'DEVICE_ARGS=$(build_device_args)' 'COMPILE_ARGS=$(build_compile_args "$@")' '' 'log "Device args: ${DEVICE_ARGS:-none}"' 'log "Compile args: ${COMPILE_ARGS}"' 'log "Server: ${GRADIO_SERVER_NAME}:${GRADIO_SERVER_PORT}"' '' 'exec uv run tools/run_webui.py \' ' --llama-checkpoint-path "${LLAMA_CHECKPOINT_PATH}" \' ' --decoder-checkpoint-path "${DECODER_CHECKPOINT_PATH}" \' ' --decoder-config-name "${DECODER_CONFIG_NAME}" \' ' ${DEVICE_ARGS} ${COMPILE_ARGS}' > /app/start_webui.sh && chmod +x /app/start_webui.sh # buildkit
# 2026-05-12 14:06:17 0.00B 设置环境变量 DECODER_CONFIG_NAME
ENV DECODER_CONFIG_NAME=modded_dac_vq
# 2026-05-12 14:06:17 0.00B 设置环境变量 DECODER_CHECKPOINT_PATH
ENV DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth
# 2026-05-12 14:06:17 0.00B 设置环境变量 LLAMA_CHECKPOINT_PATH
ENV LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro
# 2026-05-12 14:06:17 0.00B 设置环境变量 GRADIO_SERVER_PORT
ENV GRADIO_SERVER_PORT=7860
# 2026-05-12 14:06:17 0.00B 设置环境变量 GRADIO_SERVER_NAME
ENV GRADIO_SERVER_NAME=0.0.0.0
# 2026-05-12 14:06:17 0.00B 声明容器运行时监听的端口
EXPOSE [7860/tcp]
# 2026-05-12 14:06:17 0.00B 定义构建参数
ARG DECODER_CONFIG_NAME=modded_dac_vq
# 2026-05-12 14:06:17 0.00B 定义构建参数
ARG DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth
# 2026-05-12 14:06:17 0.00B 定义构建参数
ARG LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro
# 2026-05-12 14:06:17 0.00B 定义构建参数
ARG GRADIO_SERVER_PORT=7860
# 2026-05-12 14:06:17 0.00B 定义构建参数
ARG GRADIO_SERVER_NAME=0.0.0.0
# 2026-05-12 14:06:17 0.00B 设置环境变量 PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
# 2026-05-12 14:06:17 1.40KB 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c printf '%s\n' '#!/bin/bash' 'set -euo pipefail' '' '# Set user info from build args' 'USER_UID='${USER_UID} 'USER_GID='${USER_GID} '' '# Logging function' 'log() { echo "[$(date +"%Y-%m-%d %H:%M:%S")] $*" >&2; }' '' '# Validate environment' 'validate_env() {' ' if [ ! -d "/app/checkpoints" ]; then' ' log "WARNING: /app/checkpoints directory not found. Please mount your checkpoints."' ' fi' ' if [ ! -d "/app/references" ]; then' ' log "WARNING: /app/references directory not found. Please mount your references."' ' else' ' # Check if we can write to references directory' ' if [ ! -w "/app/references" ]; then' ' log "ERROR: Cannot write to /app/references directory. Please ensure the mounted directory has proper permissions for user with UID ${USER_UID}."' ' log "You can fix this by running: sudo chown -R ${USER_UID}:${USER_GID} /path/to/your/references"' ' exit 1' ' fi' ' fi' '}' '' '# Build device arguments' 'build_device_args() {' ' if [ "${BACKEND:-}" = "cpu" ]; then' ' echo "--device cpu"' ' fi' '}' '' '# Build compile arguments' 'build_compile_args() {' ' if [ "${1:-}" = "compile" ] || [ "${COMPILE:-}" = "1" ] || [ "${COMPILE:-}" = "true" ]; then' ' echo "--compile"' ' shift' ' fi' ' echo "$@"' '}' '' '# Health check function' 'health_check() {' ' local port=${1:-7860}' ' local endpoint=${2:-/health}' ' curl -f http://localhost:${port}${endpoint} 2>/dev/null || exit 1' '}' > /app/common.sh && chmod +x /app/common.sh # buildkit
# 2026-05-12 14:06:17 473.54KB 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv sync --extra ${UV_EXTRA} --frozen # buildkit
# 2026-05-12 14:06:15 7.44MB 复制新文件或目录到容器中
COPY --chown=1000:1000 . . # buildkit
# 2026-05-12 14:06:14 1.96GB 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c uv python pin ${PY_VER} && uv sync --extra ${UV_EXTRA} --frozen --no-install-project # buildkit
# 2026-05-12 14:06:01 0.00B 指定运行容器时使用的用户
USER 1000:1000
# 2026-05-12 14:06:01 1.24MB 复制新文件或目录到容器中
COPY --chown=1000:1000 pyproject.toml uv.lock README.md ./ # buildkit
# 2026-05-12 14:06:00 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-05-12 14:06:00 0.00B 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c mkdir -p /app/references && chown -R ${USER_UID}:${USER_GID} /app/references && chmod 755 /app/references # buildkit
# 2026-05-12 14:06:00 8.90KB 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux; if getent group ${USER_GID} >/dev/null 2>&1; then echo "Group ${USER_GID} already exists"; else groupadd -g ${USER_GID} ${USERNAME}; fi; if id -u ${USER_UID} >/dev/null 2>&1; then echo "User ${USER_UID} already exists, using existing user"; EXISTING_USER=$(id -un ${USER_UID}); mkdir -p /app /home/${EXISTING_USER}/.cache; chown -R ${USER_UID}:${USER_GID} /app /home/${EXISTING_USER}/.cache; else useradd -m -u ${USER_UID} -g ${USER_GID} ${USERNAME}; mkdir -p /app /home/${USERNAME}/.cache; chown -R ${USERNAME}:${USERNAME} /app /home/${USERNAME}/.cache; fi # buildkit
# 2026-05-12 14:06:00 48.97MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-05-12 14:06:00 763.82MB 执行命令并创建新的镜像层
RUN |8 UV_VERSION=0.8.15 PY_VER=3.12 BACKEND=cpu USERNAME=fish USER_UID=1000 USER_GID=1000 UV_EXTRA=cpu DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends ${DEPENDENCIES} && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG DEPENDENCIES= libsox-dev build-essential cmake libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg
# 2026-05-12 14:02:04 0.00B 设置环境变量 BACKEND DEBIAN_FRONTEND PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED
ENV BACKEND=cpu DEBIAN_FRONTEND=noninteractive PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG UV_EXTRA=cpu
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG UV_VERSION=0.8.15
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG USER_GID=1000
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG USER_UID=1000
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG USERNAME=fish
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG BACKEND=cpu
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG PY_VER=3.12
# 2026-05-12 14:02:04 0.00B 定义构建参数
ARG UV_VERSION=0.8.15
# 2026-05-12 14:02:04 99.77MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux && rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' >/etc/apt/apt.conf.d/keep-cache && apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-05-12 14:02:04 0.00B 设置环境变量 UV_EXTRA
ENV UV_EXTRA=cpu
# 2026-05-09 04:09:33 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-05-09 04:09:33 36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
# 2026-05-09 04:09:33 36.77MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-05-09 04:00:51 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
# 2026-05-09 04:00:51 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.13
# 2026-05-09 04:00:51 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-05-09 04:00:51 3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
# 2026-05-09 04:00:51 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-05-09 04:00:51 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-05-05 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1777939200'
镜像信息
{
"Id": "sha256:3a00150ded46b5e51d9cbc33d443b7e4c851d393e0ec2b1eed56fe2bf43510b0",
"RepoTags": [
"fishaudio/fish-speech:webui-cpu",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/fishaudio/fish-speech:webui-cpu"
],
"RepoDigests": [
"fishaudio/fish-speech@sha256:230740818d7fe8f2f21e17d2fb4a58c3172e6a9ac7dac76f2b13cae8fe3247e6",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/fishaudio/fish-speech@sha256:760f1f3e84633122f7fe9fe9c197a60015e11ab9e5be72c98cf0c4afb00d3729"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-12T06:06:17.910119249Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "1000:1000",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"7860/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.12.13",
"PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684",
"UV_EXTRA=cpu",
"BACKEND=cpu",
"DEBIAN_FRONTEND=noninteractive",
"PYTHONDONTWRITEBYTECODE=1",
"PYTHONUNBUFFERED=1",
"GRADIO_SERVER_NAME=0.0.0.0",
"GRADIO_SERVER_PORT=7860",
"LLAMA_CHECKPOINT_PATH=checkpoints/s2-pro",
"DECODER_CHECKPOINT_PATH=checkpoints/s2-pro/codec.pth",
"DECODER_CONFIG_NAME=modded_dac_vq"
],
"Cmd": null,
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl -f http://localhost:${GRADIO_SERVER_PORT}/health || exit 1"
],
"Interval": 30000000000,
"Timeout": 10000000000,
"StartPeriod": 60000000000,
"Retries": 3
},
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"/app/start_webui.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 2999842435,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/d4fb18bafb22971ffb3d249644c5369e1752f5072a3f9d7a3e21407a0169479f/diff:/var/lib/docker/overlay2/65acdd992e946e4c668c2592bce624f7c26cd84dacba6897a1c12a112aeeb430/diff:/var/lib/docker/overlay2/d2aa4b49a6a60db33d274d81cbe942665b7f20f94d26c7f02d5e2c080d55e44e/diff:/var/lib/docker/overlay2/d0181e87805e31c2f332920274ff12d5f849edc5cb8fe75dfeda85d125610ba3/diff:/var/lib/docker/overlay2/0bd0907485cfbca6bde9095099f4af91cb93b96abef32b6767461bcef12b00f0/diff:/var/lib/docker/overlay2/3e4fc500b2569776614d0766007e62f73ed04d62381a6059fb99c1b81a431b96/diff:/var/lib/docker/overlay2/8e07a09c8947af2f75457b6a1b42ca0a7251d211c5c6d8b4c6c244dffea05e69/diff:/var/lib/docker/overlay2/3dc2c778fa99c6686dd1c07084bc5b4b06285e60f42911b2f8225a70f82e667a/diff:/var/lib/docker/overlay2/45fba8228e0744b546e8250a22a44e2e2e7b81e8f1bc72d8df288fa377a814dc/diff:/var/lib/docker/overlay2/d75e5a88db46729aae19fc97b55d3e03671545347acb4b119ca06458a98076cc/diff:/var/lib/docker/overlay2/6b9af3abcc1aa82f741ea25052fcd9b9a02ac151ed67f348259604b93aeeda40/diff:/var/lib/docker/overlay2/e151d5bc823feb84ab163884e9b16e0b32f5752dc3dca6ef135f6bf433e61c87/diff:/var/lib/docker/overlay2/9c74164c29db63c01b670163c7ba1313abe10a327c346ef2ec5480ed0a7df844/diff:/var/lib/docker/overlay2/4951a2cb7bbf9415ad9881a4cf3e183798dbce8f0af20c0ac7c474a40c947916/diff:/var/lib/docker/overlay2/1baaeea31812c9c396da6484596f66c8b894996bf2e84091ce89cbb2c0f6f873/diff",
"MergedDir": "/var/lib/docker/overlay2/f0ebb435798c3388119f428f515d0545eacfed3b8f926c67c5fcb6a430c5a9b7/merged",
"UpperDir": "/var/lib/docker/overlay2/f0ebb435798c3388119f428f515d0545eacfed3b8f926c67c5fcb6a430c5a9b7/diff",
"WorkDir": "/var/lib/docker/overlay2/f0ebb435798c3388119f428f515d0545eacfed3b8f926c67c5fcb6a430c5a9b7/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:79dd1f4c855cd061f687a994426634cf5f84c8ecdbc66c7a7d118e828dd93c99",
"sha256:1361e0a963c66ac67506e2b5cacf01a39cc0816185f96afe77031eb5d4ba2d56",
"sha256:fae8529c7ef7ef831623bd668a9a847f681ab78e77abb2fb84bd7d3c47a70cc0",
"sha256:23ed4b6439ad2c4b1602f19014cc7a90b49a943eabe7f8ab9bb1aa7c0482949c",
"sha256:a9f380738d5706bdfc4d8a49f3236bfd87b53ad7189fade343e06282167a7c9d",
"sha256:ecfc38e598fa7f935bb85dba9b733ce4bd0db1b7bf5149cf50b8736adf5c5bf0",
"sha256:71b9f473f0697e5f9ded451ba26d076a7194f1fb5c97d1b16458255b5d1452ad",
"sha256:d387c054e84ca2afbd2b617613ae1f9dcd0331583fdeb6eba549d83e6971764e",
"sha256:e09c266a4b24e9fa850a95f98248217f0ab1bc4ff0001dd45760e461be352a2d",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:7519323079b2ad2d4f442a84db66c23bb5f0532f5a2dfcb14c758a19fceaf707",
"sha256:7563acc97b31be34c65aa3fd875ffef5392476e48781a7693e983e6332c33298",
"sha256:a6c81ff97ef408f00207b4aebb07f946ce6bc4a49cd3623cc92317ad02d57a49",
"sha256:3e663b96198908789ea89e563de56672efdf8d94b25b1bc00e3cd8005f386d2c",
"sha256:903a44662d1fe7290c44bf278b33448afebc2efe99949caf9e3a8a74a553cfca",
"sha256:19467bb668b0a842ba4374031ae3039fa0693691785a1d475924f28123947db3"
]
},
"Metadata": {
"LastTagTime": "2026-05-18T16:08:06.870606308+08:00"
}
}