From 61e3f5f7541f45912e31d75fdc1190ef550d9d52 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 13:12:29 -0400 Subject: [PATCH 01/23] COMP: Increase hooks-max-size to content-links.manifest Expected to be large. --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 7c4eb397bd6..159546d4d68 100644 --- a/.gitattributes +++ b/.gitattributes @@ -59,6 +59,7 @@ Modules/ThirdParty/Expat/src/expat/lib/xmlparse.c hooks-max-size=320000 Documentation/docs/releases/* hooks-max-size=300000 Documentation/Art/* hooks-max-size=300000 pixi.lock hooks-max-size=1000000 +Testing/Data/content-links.manifest hooks-max-size=1000000 # VNL-specific .gitattributes should go into Modules/ThirdParty/VNL/.gitattributes # GDCM-specific .gitattributes should go into Modules/ThirdParty/GDCM/src/gdcm/.gitattributes From e5fe3697994eff439cad7c026e8e8cb28a81f944 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 23 Apr 2026 12:39:01 -0400 Subject: [PATCH 02/23] ENH: Add ExternalDataUpload skill for IPFS content-link workflow Adds Utilities/Maintenance/ExternalDataUpload/ with a Claude Code skill that uploads test data to IPFS under the UnixFS v1 2025 profile, pins on the redundant itk-pinata and itk-filebase remote services, optionally mirrors bytes into an ITKTestingData clone at CID/ (with a 50 MB guard for GitHub's per-file push limit), maintains a new Testing/Data/content-links.manifest index, batch-pins every manifest CID, and normalizes existing .md5 / .sha256 / .cid links by fetching through the gateway templates parsed directly from CMake/ITKExternalData.cmake and re-uploading under the current UnixFS profile. Documents the one-time Kubo + IPFS Desktop setup and references the skill from Testing/Data/README.md. --- Testing/Data/README.md | 21 + Testing/Data/content-links.manifest | 14 + .../Maintenance/ExternalDataUpload/README.md | 313 +++++++++++++ .../Maintenance/ExternalDataUpload/SKILL.md | 126 ++++++ .../content-link-normalize.sh | 416 ++++++++++++++++++ .../ExternalDataUpload/ipfs-pin-all.sh | 176 ++++++++ .../ExternalDataUpload/ipfs-upload.sh | 308 +++++++++++++ 7 files changed, 1374 insertions(+) create mode 100644 Testing/Data/content-links.manifest create mode 100644 Utilities/Maintenance/ExternalDataUpload/README.md create mode 100644 Utilities/Maintenance/ExternalDataUpload/SKILL.md create mode 100755 Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh create mode 100755 Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh create mode 100755 Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh diff --git a/Testing/Data/README.md b/Testing/Data/README.md index 41c19ec53ec..275e0dff962 100644 --- a/Testing/Data/README.md +++ b/Testing/Data/README.md @@ -7,3 +7,24 @@ tests and hence ensure the health of the toolkit: * The `Baseline` directory contains valid images created by tests. Generated images are compared with these baseline images during regression testing. * The `Input` directory contains data files that are used by the tests. + +Adding test data +---------------- + +Test data is fetched at build time from content-addressed storage by +`CMake/ITKExternalData.cmake`. Large files are *not* committed to the ITK git +repository; instead, a small `.cid` (or `.md5` / `.sha256`) content-link file +is committed next to where the data is referenced. + +To add new test data, use the upload skill at +`Utilities/Maintenance/ExternalDataUpload/`: + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +``` + +The script uploads the file to IPFS, pins it on the redundant pinning +services, replaces the original with a `.cid` content-link, and records the +CID in `Testing/Data/content-links.manifest`. See the skill's `README.md` +for one-time setup and the full workflow, including the optional +`ITKTestingData` GitHub Pages mirror step. diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest new file mode 100644 index 00000000000..d9d6fca9994 --- /dev/null +++ b/Testing/Data/content-links.manifest @@ -0,0 +1,14 @@ +# ITK content-link manifest +# +# One entry per line, format: +# +# Maintained automatically by +# Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +# and used by +# Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh +# to batch-pin every CID on the local Kubo node and every configured +# remote pinning service (itk-pinata, itk-filebase, ...). +# +# Paths must not contain whitespace (the manifest uses a single space as +# the field delimiter). Data lines are kept sorted by path; comment lines +# above the first data line are preserved on re-write. diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md new file mode 100644 index 00000000000..50bc029f2ba --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -0,0 +1,313 @@ +# ITK External Data Upload + +Upload large test images and baselines to IPFS, optionally mirror them into the +[`ITKTestingData`](https://github.com/InsightSoftwareConsortium/ITKTestingData) +repository, and replace the original with a lightweight `.cid` content link +committed to the ITK source tree. + +This complements [`CMake/ITKExternalData.cmake`](../../../CMake/ITKExternalData.cmake), +which fetches content at test configure time from the gateways listed there +(`ITKTestingData` on GitHub Pages, `data.kitware.com`, `itk.org`, local Kubo +gateway, `ipfs.io`, `gateway.pinata.cloud`, `cloudflare-ipfs.com`, +`dweb.link`). + +## One-Time Developer Setup + +### 1. Install Kubo (IPFS) + +You need the Kubo IPFS implementation. Choose one method: + +**IPFS Desktop** (recommended — bundles the Kubo daemon with a GUI, with a +system-tray icon, peer/bandwidth statistics, a file browser for your MFS, and +one-click start/stop): + +Download from . IPFS Desktop +auto-starts the daemon on login and exposes the same HTTP API that the `ipfs` +CLI uses (default `127.0.0.1:5001`), so every command in this guide works +identically whether you started the daemon from the command line or from the +tray. + +**CLI only** (macOS): + +```bash +brew install ipfs +``` + +**CLI only** (Linux): + +Download the latest release from , then: + +```bash +tar xvfz kubo_*_linux-amd64.tar.gz +cd kubo && sudo bash install.sh +``` + +After installation, verify `ipfs` is on your PATH: + +```bash +ipfs --version +``` + +### 2. Initialize and Start the Daemon + +```bash +# One-time initialization (creates ~/.ipfs) +ipfs init + +# Start the daemon (keep running in a separate terminal, or use IPFS Desktop) +ipfs daemon +``` + +### 2a. Apply the UnixFS v1 2025 Profile + +Requires **Kubo v0.40.0 or later**. Apply once per node, before your first +upload: + +```bash +ipfs config profile apply unixfs-v1-2025 +``` + +This pins the UnixFS importer settings (chunker, layout, raw-leaves, HAMT +directory thresholds) to standardized values for reproducible CIDs. Without it, +`ipfs add` defaults may drift across Kubo patch releases and across +implementations (Helia, rust-ipfs, boxo), so two contributors uploading the +same file can produce different CIDs — which breaks the `.cid` content-link +contract ITK relies on. + +The profile applies to **new adds only**; existing pinned content and +already-committed `.cid` files are unaffected. + +References: + +- [Kubo v0.40.0 release notes](https://github.com/ipfs/kubo/releases/tag/v0.40.0) +- [Reproducible CIDs — IPFS blog, March 2026](https://blog.ipfs.tech/2026-03-reproducible-cids/) + +### 3. Configure Remote Pinning Services + +The upload script pins content on two remote services for redundancy, matching +the gateways declared in `CMake/ITKExternalData.cmake`. Both services must be +configured under the **exact names `itk-pinata` and `itk-filebase`** — the +upload script looks up those names and fails if they are missing. + +#### Pinata (service name: `itk-pinata`) + +1. Sign up at +2. Create an API key at + - Enable **pinByHash** and **pinFileToIPFS** permissions +3. Copy the JWT token and add the service (use a prompt to avoid leaking + the token into shell history): + +```bash +printf "Pinata JWT: " && read -rs PINATA_JWT && echo +ipfs pin remote service add itk-pinata https://api.pinata.cloud/psa "$PINATA_JWT" +``` + +4. Verify: + +```bash +ipfs pin remote service ls +# Should show: itk-pinata https://api.pinata.cloud/psa +``` + +#### Filebase (service name: `itk-filebase`) + +1. Sign up at +2. Create an **IPFS bucket** at +3. Go to , select your IPFS bucket in the + "IPFS Pinning Service API Endpoint" section, and copy the generated token +4. Add the service: + +```bash +printf "Filebase token: " && read -rs FILEBASE_TOKEN && echo +ipfs pin remote service add itk-filebase https://api.filebase.io/v1/ipfs "$FILEBASE_TOKEN" +``` + +5. Verify: + +```bash +ipfs pin remote service ls +# Should show: itk-filebase https://api.filebase.io/v1/ipfs +``` + +## Usage + +### Upload a single file + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +``` + +The script will: + +1. Add the file to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) +2. Pin it locally +3. Pin it on `itk-pinata` and `itk-filebase` +4. Replace the original file with `.cid` containing the CID +5. Append/update an entry in `Testing/Data/content-links.manifest` +6. Print the `git rm` / `git add` commands to stage the change + +### Also mirror the bytes to `ITKTestingData` + +Pass `--testing-data-repo ` to additionally copy the file into a local +clone of +[`ITKTestingData`](https://github.com/InsightSoftwareConsortium/ITKTestingData) +at `CID/` and `git add` it there. This populates the +`https://insightsoftwareconsortium.github.io/ITKTestingData/CID/` mirror +gateway already listed in `CMake/ITKExternalData.cmake`. + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ + --testing-data-repo ~/src/ITKTestingData \ + Testing/Data/Input/brain.nii.gz +``` + +**GitHub 50 MB file size limit.** `ITKTestingData` is hosted on GitHub, which +hard-rejects pushes containing files larger than **50 MB** per file. The upload +script checks the file size before mirroring and refuses to copy files over +50 MB into the `ITKTestingData` tree. IPFS pinning (local + `itk-pinata` + +`itk-filebase`) still proceeds for oversized files — the mirror step is the +only one that gets skipped, with a clear warning. + +Commit the staged `CID/` file in `ITKTestingData` and push; the +`gh-pages` workflow on that repo republishes the new file at the GitHub Pages +mirror gateway. + +### Batch-pin every CID in the manifest + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh +``` + +Reads `Testing/Data/content-links.manifest` and pins every CID locally plus on +every configured remote pinning service. Useful for: + +- Bootstrapping a new local Kubo node with all ITK test content +- Re-pinning everything after rotating a pinning provider +- Verifying all pinned content is still reachable + +Use `--background` to queue remote pins asynchronously (the remote services +then fetch the content themselves): + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh --background +``` + +### Normalize existing content links to CID + +`.md5` / `.sha256` / `.sha512` content links can be converted to `.cid`, and +existing `.cid` links can be regenerated under the UnixFS v1 2025 profile (in +case they were originally produced with older chunker defaults). + +```bash +Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +``` + +The script will, for each content link under the given path: + +1. Fetch the bytes through the gateways in `CMake/ITKExternalData.cmake` (same + order the build uses, so a gateway CI can't reach is a gateway this script + won't accept). +2. Verify the fetched bytes against the declared hash (for `.md5` / `.shaNNN` + links) or the declared CID (for `.cid` links). If verification fails the + link is left untouched and reported. +3. Re-materialize the actual file next to the content link, then invoke + `ipfs-upload.sh` on it so the new CID is produced under the UnixFS v1 2025 + profile, pinned locally and on `itk-pinata` / `itk-filebase`, and (if + `--testing-data-repo` is passed) mirrored into `ITKTestingData`. The old + `.md5` / `.sha256` / `.sha512` link is removed; a `.cid` link is written in + its place. + +Common options: + +```bash +# Dry run — report what would change, modify nothing. +content-link-normalize.sh Modules/Filtering/Foo --dry-run + +# Also mirror bytes into a local ITKTestingData checkout. +content-link-normalize.sh Testing/Data/Input --testing-data-repo ~/src/ITKTestingData + +# Only process files that are currently .md5 / .shaNNN (skip existing .cid). +content-link-normalize.sh Modules --hash-only +``` + +## Content Link Manifest + +`Testing/Data/content-links.manifest` is a plain-text index of every CID the +upload script has produced. One entry per line: + +```text + +``` + +Example: + +```text +bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi Testing/Data/Input/brain.nii.gz +bafkreihvlpx2z3xyhmhegrqo6vn4balcm3gkskdigoyl3i5v7iq5mhtaee Testing/Data/Baseline/Filtering/brain-diff.mha +``` + +Rules: + +- `` is a repo-relative path and **must not contain whitespace** — + the manifest uses a single space as the field delimiter. Rename files with + spaces before uploading. +- `ipfs-upload.sh` maintains this file automatically: entries are added on + first upload and replaced on re-upload. The data lines are sorted by path + for a minimal review diff; comment lines at the top are preserved. +- The manifest should be committed alongside the `.cid` files the upload + produced. + +## How `.cid` Files Work + +A `.cid` file is a single-line plain-text file containing one IPFS CIDv1, +base32-encoded. Example: + +```text +bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi +``` + +ITK's CMake layer recognises the `.cid` extension via +`ExternalData_URL_ALGO_CID_lower` in +[`CMake/ITKExternalData.cmake`](../../../CMake/ITKExternalData.cmake). At +configure time, `ExternalData.cmake` substitutes the CID into each +`ExternalData_URL_TEMPLATES` entry (local Kubo gateway, `ipfs.io`, +`gateway.pinata.cloud`, `cloudflare-ipfs.com`, `dweb.link`, plus the +`ITKTestingData` GitHub Pages mirror) and downloads from the first one that +responds. The downloaded content is cached in +`ExternalData_OBJECT_STORES` under `cid/`. + +Because CIDs are content-addressed, a corrupt download is detected +automatically: a gateway that returns the wrong bytes will produce a different +CID, and the cache lookup misses. + +## Troubleshooting + +### `ipfs command not found on PATH` + +Install Kubo (see step 1 above). If using IPFS Desktop on macOS, the app +installs `/usr/local/bin/ipfs` automatically; on Linux, IPFS Desktop does not +install a CLI symlink, so either add Kubo separately or point your shell at +the bundled binary inside the AppImage. + +### `IPFS daemon does not appear to be running` + +Start the daemon: `ipfs daemon` in a separate terminal, or launch IPFS +Desktop. The script tests the connection with `ipfs swarm peers`, which +requires an active daemon. + +### `Required pinning service 'itk-pinata' is not configured` + +Run `ipfs pin remote service ls` to see configured services. Re-add with the +commands in step 3 above. Tokens may have expired if you revoked the API key. +The script intentionally refuses to upload if either `itk-pinata` or +`itk-filebase` is missing: a single pin provider is not enough redundancy for +test data CI relies on. + +### Remote pin failed + +The script prints retry commands for any failed pins. Common causes: + +- **Expired API token** — regenerate at the service dashboard +- **Rate limiting** — wait a moment and retry +- **Large file timeout** — the file may take time to transfer; retry the + printed `ipfs pin remote add` command manually diff --git a/Utilities/Maintenance/ExternalDataUpload/SKILL.md b/Utilities/Maintenance/ExternalDataUpload/SKILL.md new file mode 100644 index 00000000000..ad170a7e643 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/SKILL.md @@ -0,0 +1,126 @@ +--- +name: external-data-upload +description: > + Upload ITK test data to IPFS and produce .cid content links, pin on + itk-pinata and itk-filebase, optionally mirror into ITKTestingData, and + normalize existing .md5 / .sha256 / .cid content links. Use when the + user wants to add test images, baseline data, or model files under + Testing/Data/ or a module's data/ directory, or when asked to convert + hash-based content links to CID. +allowed-tools: + - Bash + - Read +--- + +# ITK External Data Upload + +Upload a file to IPFS and replace it with a `.cid` content link, maintain the +`Testing/Data/content-links.manifest`, and (optionally) mirror the bytes into +`ITKTestingData` for the GitHub Pages gateway. Also: regenerate existing +`.md5` / `.sha256` / `.cid` content links under the UnixFS v1 2025 profile. + +## Prerequisites + +The developer must have IPFS and pinning services configured. If not, direct +them to [`README.md`](./README.md) in this directory. + +Required: + +- IPFS daemon running (`ipfs daemon` or IPFS Desktop) +- UnixFS v1 2025 profile applied (`ipfs config profile apply unixfs-v1-2025`) +- `itk-pinata` remote pinning service configured +- `itk-filebase` remote pinning service configured + +## Tasks this skill handles + +### 1. Upload a single file + +Run the upload script: + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +``` + +If the user mentions `ITKTestingData` or asks you to mirror the bytes to +GitHub Pages, pass `--testing-data-repo `: + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ + --testing-data-repo \ + +``` + +The script will: + +1. Add to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) +2. Pin locally, on `itk-pinata`, and on `itk-filebase` +3. If `--testing-data-repo` given and file ≤ 50 MB, copy to + `/CID/` and `git add` it there. Files over 50 MB are skipped + for the mirror step only (GitHub rejects > 50 MB) — IPFS pinning still + succeeds. +4. Replace the source file with `.cid` +5. Update `Testing/Data/content-links.manifest` + +### 2. Pin every CID from the manifest + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh +``` + +Use for bootstrapping a new IPFS node or re-pinning after rotating a provider. + +### 3. Normalize existing content links + +Use when the user wants to convert `.md5` / `.sha256` / `.sha512` links to +`.cid`, or re-generate `.cid` links under the UnixFS v1 2025 profile. + +```bash +Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +``` + +Useful options: + +- `--dry-run` — report what would change +- `--hash-only` — only touch `.md5` / `.shaNNN` links, leave `.cid` alone +- `--cid-only` — only re-hash existing `.cid` links under the new profile +- `--testing-data-repo ` — forwarded to `ipfs-upload.sh` + +The normalize script fetches bytes through the gateway templates in +`CMake/ITKExternalData.cmake` (same order as the build), verifies them +against the declared hash or CID, and invokes `ipfs-upload.sh` to produce +the new `.cid`. + +## After Upload + +Stage the git changes the upload script prints. Typical ITK workflow: + +```bash +git rm +git add .cid +git add Testing/Data/content-links.manifest +``` + +If `--testing-data-repo` was used, follow the printed commands in that repo: + +```bash +git -C commit -m "Add ()" +git -C push +``` + +Commit the ITK changes with an appropriate prefix per +[`Documentation/AI/git-commits.md`](../../../Documentation/AI/git-commits.md): + +- `ENH:` for new test data +- `STYLE:` for normalizing existing content links (no test semantics change) + +## How `.cid` Files Work + +A `.cid` file is one line of plain text: a CIDv1, base32-encoded. ITK's +`CMake/ITKExternalData.cmake` recognises the `.cid` extension and fetches +through the gateway list declared there (local Kubo, `ipfs.io`, +`gateway.pinata.cloud`, `cloudflare-ipfs.com`, `dweb.link`, plus the +`ITKTestingData` GitHub Pages mirror at +`insightsoftwareconsortium.github.io/ITKTestingData/CID/`). + +Because CIDs are content-addressed, integrity is verified automatically at +fetch time. diff --git a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh new file mode 100755 index 00000000000..bd01128eb36 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh @@ -0,0 +1,416 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Normalize ITK content links: convert .md5 / .shaNNN links to .cid and +# regenerate existing .cid links under the UnixFS v1 2025 profile. +# +# For each content link found, the script: +# 1. Fetches the bytes via the gateway templates declared in +# CMake/ITKExternalData.cmake (identical order to the build). +# 2. Verifies the bytes against the declared hash or CID. +# 3. Re-materialises the actual file alongside the link, then invokes +# ipfs-upload.sh on it so a fresh CID is produced under the UnixFS +# v1 2025 profile, pinned on itk-pinata and itk-filebase, and +# (optionally) mirrored into ITKTestingData. +# +# Usage: +# content-link-normalize.sh [options] +# +# Options: +# --testing-data-repo Forwarded to ipfs-upload.sh. Local +# ITKTestingData clone to mirror bytes into. +# --dry-run List what would change without modifying. +# --hash-only Process only .md5 / .shaNNN links +# (leave existing .cid links alone). +# --cid-only Process only .cid links +# (re-hash under UnixFS v1 2025 profile). +# -h|--help Show this help. +# +# Exit codes: +# 0 — all content links normalized +# 1 — usage / environment error +# 2 — one or more links failed to fetch, verify, or re-upload + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" +CMAKE_FILE="$REPO_ROOT/CMake/ITKExternalData.cmake" +UPLOAD_SCRIPT="$SCRIPT_DIR/ipfs-upload.sh" + +info() { printf '==> %s\n' "$*"; } +warn() { printf 'WARN: %s\n' "$*" >&2; } +die() { printf 'ERROR: %s\n' "$*" >&2; exit 1; } + +show_help() { + sed -n '3,/^$/{ s/^# \?//; p }' "$0" + exit 0 +} + +# --------------------------------------------------------------------------- +# Argument parsing +# --------------------------------------------------------------------------- + +TESTING_DATA_REPO="" +DRY_RUN=false +HASH_ONLY=false +CID_ONLY=false +TARGET="" + +while [[ $# -gt 0 ]]; do + case "$1" in + -h|--help) show_help ;; + --dry-run) DRY_RUN=true; shift ;; + --hash-only) HASH_ONLY=true; shift ;; + --cid-only) CID_ONLY=true; shift ;; + --testing-data-repo) + TESTING_DATA_REPO="${2:?--testing-data-repo requires a path}" + shift 2 + ;; + --testing-data-repo=*) + TESTING_DATA_REPO="${1#--testing-data-repo=}" + shift + ;; + -*) die "Unknown option: $1" ;; + *) + [[ -z "$TARGET" ]] || die "Unexpected positional arg: $1" + TARGET="$1" + shift + ;; + esac +done + +[[ -n "$TARGET" ]] || die "Path or file required. Example: content-link-normalize.sh Testing/Data/Input" +[[ -e "$TARGET" ]] || die "Not found: $TARGET" +[[ -f "$CMAKE_FILE" ]] || die "Cannot find $CMAKE_FILE" +[[ -x "$UPLOAD_SCRIPT" ]] || die "Cannot find or execute $UPLOAD_SCRIPT" + +if $HASH_ONLY && $CID_ONLY; then + die "--hash-only and --cid-only are mutually exclusive" +fi + +# --------------------------------------------------------------------------- +# Prerequisites +# --------------------------------------------------------------------------- + +command -v curl >/dev/null 2>&1 || die "curl is required" +command -v ipfs >/dev/null 2>&1 || die "ipfs is required (for CID recomputation)" + +# Hash tools are only needed for links we actually encounter, but fail fast. +for tool in md5sum sha1sum sha224sum sha256sum sha384sum sha512sum; do + command -v "$tool" >/dev/null 2>&1 || warn "$tool not found; any matching content links will fail to verify" +done + +# --------------------------------------------------------------------------- +# Parse ExternalData_URL_TEMPLATES from CMake/ITKExternalData.cmake +# --------------------------------------------------------------------------- +# +# Matches the order in the .cmake file exactly. The block we want looks like: +# +# list( +# APPEND +# ExternalData_URL_TEMPLATES +# # comment +# "https://.../%(hash)" +# ... +# ) +# +# Strategy: join the whole file into one logical string, locate the +# `list(... ExternalData_URL_TEMPLATES ... )` invocation by matching +# balanced parentheses, then print every quoted template inside it that +# contains %(hash). + +readarray -t URL_TEMPLATES < <( + awk ' + BEGIN { depth = 0; in_block = 0 } + { + line = $0 + # Trim leading whitespace. + sub(/^[[:space:]]+/, "", line) + + # Enter the block when we see `list(` followed somewhere by + # `ExternalData_URL_TEMPLATES` at depth 1. We buffer tokens + # at depth 1 until we are sure. + if (!in_block && line ~ /^list[[:space:]]*\(/) { + pending_list = 1 + depth = 1 + next + } + if (pending_list) { + if (line ~ /ExternalData_URL_TEMPLATES/) { + in_block = 1 + pending_list = 0 + next + } + # Track depth so we know when the list(...) we rejected ends. + n_open = gsub(/\(/, "(", line) + n_close = gsub(/\)/, ")", line) + depth += n_open - n_close + if (depth <= 0) { pending_list = 0; depth = 0 } + next + } + + if (in_block) { + if (line ~ /^#/) next + if (line ~ /^\)/) { in_block = 0; depth = 0; next } + if (match(line, /"[^"]+"/)) { + tmpl = substr(line, RSTART + 1, RLENGTH - 2) + if (tmpl ~ /%\(hash\)/) print tmpl + } + } + } + ' "$CMAKE_FILE" +) + +if [[ ${#URL_TEMPLATES[@]} -eq 0 ]]; then + die "Failed to parse ExternalData_URL_TEMPLATES from $CMAKE_FILE" +fi + +info "Loaded ${#URL_TEMPLATES[@]} gateway template(s) from CMake/ITKExternalData.cmake" + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +# Algorithm mapping: extension -> uppercase algorithm name for %(algo). +# Matches CMake ExternalData.cmake's _ExternalData_link_content behaviour. +algo_uc_for_ext() { + case "$1" in + md5) echo "MD5" ;; + sha1) echo "SHA1" ;; + sha224) echo "SHA224" ;; + sha256) echo "SHA256" ;; + sha384) echo "SHA384" ;; + sha512) echo "SHA512" ;; + # CID uses a lowercase override in ITKExternalData.cmake + # (ExternalData_URL_ALGO_CID_lower = cid). + cid) echo "cid" ;; + *) return 1 ;; + esac +} + +hash_tool_for_ext() { + case "$1" in + md5) echo "md5sum" ;; + sha1) echo "sha1sum" ;; + sha224) echo "sha224sum" ;; + sha256) echo "sha256sum" ;; + sha384) echo "sha384sum" ;; + sha512) echo "sha512sum" ;; + *) return 1 ;; + esac +} + +# Substitute %(algo) / %(hash) in a URL template. +render_url() { + local template="$1" algo="$2" hash="$3" + local url="${template//%(algo)/$algo}" + url="${url//%(hash)/$hash}" + printf '%s\n' "$url" +} + +# Fetch a content link into a tempfile, verifying the bytes correspond to +# the declared digest or CID. Prints the path of the verified tempfile on +# success. +# +# For CID links: `ipfs cat` is the primary fetch path because the daemon +# verifies the returned bytes server-side against the requested CID. +# Public IPFS HTTP gateways (paths containing /ipfs/) also verify +# server-side, so fetches from those URLs are accepted without local +# recomputation. Local `ipfs add --only-hash` is NOT used for verification +# because it can produce a different CID from the stored one when the +# original upload used non-default chunker or hash parameters — chunker +# drift is exactly what the UnixFS v1 2025 profile is meant to fix, so a +# mismatch would be expected, not an error. +# +# For hash links (.md5, .shaNNN): non-IPFS gateways only serve bytes by +# name, so we recompute the digest locally and compare. +fetch_and_verify() { + local ext="$1" # cid / md5 / shaNNN + local value="$2" # the actual hash or CID + local out + out="$(mktemp -t itk-content-link.XXXXXX)" + + local algo_uc + algo_uc="$(algo_uc_for_ext "$ext")" || { + warn "Unknown content-link extension: .${ext}" + rm -f "$out" + return 1 + } + + # Fast path for .cid: fetch via the running daemon. Verification is + # implicit — the daemon refuses to return bytes that do not hash back + # to the CID. + if [[ "$ext" == "cid" ]]; then + if ipfs cat "$value" > "$out" 2>/dev/null && [[ -s "$out" ]]; then + printf '%s\n' "$out" + return 0 + fi + fi + + local template rendered + for template in "${URL_TEMPLATES[@]}"; do + rendered="$(render_url "$template" "$algo_uc" "$value")" + + # IPFS gateway templates (path contains /ipfs/) only make sense for CIDs. + if [[ "$ext" != "cid" && "$rendered" == *"/ipfs/"* ]]; then + continue + fi + + if ! curl -sfL --connect-timeout 10 --max-time 120 -o "$out" "$rendered"; then + continue + fi + + if verify_bytes "$ext" "$value" "$out" "$rendered"; then + printf '%s\n' "$out" + return 0 + else + warn " content from ${rendered} did not verify; trying next gateway" + fi + done + + rm -f "$out" + return 1 +} + +# Verify that the fetched bytes at $file correspond to the declared link. +# +# For CID links: trust only fetches from IPFS HTTP gateways, which verify +# server-side (a CID-indexed path the server actually serves is by +# definition a path whose bytes hash to that CID). +# +# For hash links: recompute the digest and compare case-insensitively. +verify_bytes() { + local ext="$1" expected="$2" file="$3" source_url="${4:-}" + if [[ "$ext" == "cid" ]]; then + # IPFS HTTP gateways do server-side verification; accept those. + if [[ "$source_url" == *"/ipfs/"* ]]; then + [[ -s "$file" ]] + return + fi + # Non-IPFS origin (e.g. GitHub Pages mirror at .../CID/) — + # we cannot verify locally without risking chunker-drift false + # negatives, so reject. The `ipfs cat` fast path in + # fetch_and_verify is the canonical way to resolve a .cid. + return 1 + fi + + local tool actual + tool="$(hash_tool_for_ext "$ext")" || return 1 + command -v "$tool" >/dev/null 2>&1 || return 1 + actual="$("$tool" "$file" | awk '{print $1}')" + [[ "${actual,,}" == "${expected,,}" ]] +} + +# --------------------------------------------------------------------------- +# Enumerate targets +# --------------------------------------------------------------------------- + +if [[ -f "$TARGET" ]]; then + LINKS=("$TARGET") +else + LINKS=() + readarray -t LINKS < <( + find "$TARGET" -type f \( \ + -name "*.cid" \ + -o -name "*.md5" \ + -o -name "*.sha1" \ + -o -name "*.sha224" \ + -o -name "*.sha256" \ + -o -name "*.sha384" \ + -o -name "*.sha512" \ + \) | LC_ALL=C sort + ) +fi + +# Filter by --hash-only / --cid-only. Iterate defensively so `set -u` on an +# empty LINKS array (e.g. directory with no content links) does not error +# out on bash versions before 4.4. +FILTERED=() +if [[ ${#LINKS[@]} -gt 0 ]]; then + for link in "${LINKS[@]}"; do + ext="${link##*.}" + if $HASH_ONLY && [[ "$ext" == "cid" ]]; then continue; fi + if $CID_ONLY && [[ "$ext" != "cid" ]]; then continue; fi + FILTERED+=("$link") + done +fi + +if [[ ${#FILTERED[@]} -eq 0 ]]; then + info "No matching content links under ${TARGET}. Nothing to do." + exit 0 +fi + +LINKS=("${FILTERED[@]}") + +info "Processing ${#LINKS[@]} content link(s)..." +$DRY_RUN && info "(--dry-run: no files will be modified)" + +# --------------------------------------------------------------------------- +# Main loop +# --------------------------------------------------------------------------- + +UPLOAD_ARGS=() +if [[ -n "$TESTING_DATA_REPO" ]]; then + UPLOAD_ARGS+=(--testing-data-repo "$TESTING_DATA_REPO") +fi + +FAIL=0 + +for link in "${LINKS[@]}"; do + ext="${link##*.}" + value="$(tr -d '[:space:]' < "$link")" + real_file="${link%.${ext}}" + + if [[ -z "$value" ]]; then + printf 'FAIL %s empty-content-link\n' "$link" >&2 + FAIL=$((FAIL + 1)) + continue + fi + + if $DRY_RUN; then + printf 'WOULD-NORMALIZE %s (%s=%s) -> %s.cid\n' \ + "$link" "$ext" "$value" "$real_file" + continue + fi + + info "Normalizing ${link} (${ext}=${value})" + + if [[ -e "$real_file" ]]; then + die "Refusing to normalize: ${real_file} already exists on disk. Delete or move it first." + fi + + tmp_bytes="" + if ! tmp_bytes="$(fetch_and_verify "$ext" "$value")"; then + printf 'FAIL %s fetch-or-verify-failed\n' "$link" >&2 + FAIL=$((FAIL + 1)) + continue + fi + + # Stage the real file next to the link, then re-upload via ipfs-upload.sh. + mv "$tmp_bytes" "$real_file" + + # Remove the old content link BEFORE running ipfs-upload.sh — the upload + # script rejects inputs that look like content links (defensive guard), + # but we also want a clean working tree if the upload fails. + rm -f "$link" + + if ! "$UPLOAD_SCRIPT" "${UPLOAD_ARGS[@]}" "$real_file"; then + printf 'FAIL %s upload-failed\n' "$link" >&2 + # Best-effort recovery: restore the original link file from its value. + # ipfs-upload.sh writes the .cid file and removes the data file before + # updating the manifest, so a failure in the manifest step can leave a + # .cid orphan alongside the restored original link — clean it up too. + printf '%s\n' "$value" > "$link" + rm -f "$real_file" "${real_file}.cid" + FAIL=$((FAIL + 1)) + continue + fi + + printf 'NORMALIZE %s (%s) -> %s.cid\n' "$link" "$ext" "$real_file" +done + +if (( FAIL > 0 )); then + warn "${FAIL} content link(s) failed to normalize." + exit 2 +fi + +info "Done. Review changes and commit as a STYLE: commit (see Documentation/AI/git-commits.md)." diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh new file mode 100755 index 00000000000..9286a4f83cd --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh @@ -0,0 +1,176 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Batch-pin every CID in Testing/Data/content-links.manifest locally and on +# every configured remote pinning service (itk-pinata, itk-filebase, ...). +# +# Usage: ipfs-pin-all.sh [--background] +# +# Options: +# --background Queue remote pins asynchronously (faster, no wait). + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" +MANIFEST="$REPO_ROOT/Testing/Data/content-links.manifest" + +BACKGROUND="" +while [[ $# -gt 0 ]]; do + case "$1" in + --background) + BACKGROUND="--background" + shift + ;; + -h|--help) + sed -n '4,11p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' + exit 0 + ;; + *) + echo "ERROR: Unknown argument: $1" >&2 + echo "Usage: $(basename "${BASH_SOURCE[0]}") [--background]" >&2 + exit 2 + ;; + esac +done + +# --------------------------------------------------------------------------- +# Validate manifest +# --------------------------------------------------------------------------- + +if [[ ! -f "$MANIFEST" ]]; then + echo "ERROR: Manifest not found: $MANIFEST" >&2 + exit 1 +fi + +ENTRY_COUNT="$(grep -Evc '^(#|$)' "$MANIFEST" || true)" +if [[ "$ENTRY_COUNT" -eq 0 ]]; then + echo "Manifest is empty — nothing to pin." + exit 0 +fi + +# --------------------------------------------------------------------------- +# Prerequisites +# --------------------------------------------------------------------------- + +if ! command -v ipfs &>/dev/null; then + echo "ERROR: 'ipfs' command not found on PATH." >&2 + echo " Install Kubo: https://docs.ipfs.tech/install/command-line/" >&2 + exit 1 +fi + +if ! ipfs swarm peers &>/dev/null; then + echo "ERROR: IPFS daemon does not appear to be running." >&2 + echo " Start with: ipfs daemon" >&2 + exit 1 +fi + +# Discover configured remote services (none required for batch pinning). +CONFIGURED_SERVICES="$(ipfs pin remote service ls 2>/dev/null || true)" +SERVICES=() +while IFS= read -r line; do + svc="$(echo "$line" | awk '{print $1}')" + if [[ -n "$svc" ]]; then + SERVICES+=("$svc") + fi +done <<< "$CONFIGURED_SERVICES" + +if [[ ${#SERVICES[@]} -eq 0 ]]; then + echo "WARNING: No remote pinning services configured." >&2 + echo " Only local pinning will be performed." >&2 +fi + +# --------------------------------------------------------------------------- +# Pin each CID +# --------------------------------------------------------------------------- + +TOTAL=0 +LOCAL_FAILED=0 +LOCAL_FAILED_ENTRIES=() +REMOTE_FAILED=0 +REMOTE_FAILED_ENTRIES=() + +echo "==> Pinning ${ENTRY_COUNT} CIDs from manifest..." +if [[ -n "$BACKGROUND" ]]; then + echo " (remote pins queued in background)" +fi +echo "" + +while IFS= read -r line; do + # Skip comments and empty lines. + [[ "$line" =~ ^# ]] && continue + [[ -z "$line" ]] && continue + + CID="$(echo "$line" | awk '{print $1}')" + FILEPATH="$(echo "$line" | awk '{print $2}')" + + # Skip malformed lines (missing CID or filepath). + if [[ -z "$CID" || -z "$FILEPATH" ]]; then + echo "WARNING: Skipping malformed manifest line: $line" >&2 + continue + fi + + PIN_NAME="$(basename "$FILEPATH")" + TOTAL=$((TOTAL + 1)) + + echo "==> [${TOTAL}/${ENTRY_COUNT}] ${FILEPATH}" + echo " CID: ${CID}" + + # Local pin. + if ! ipfs pin add "$CID" >/dev/null 2>&1; then + echo " FAILED: local pin" >&2 + LOCAL_FAILED=$((LOCAL_FAILED + 1)) + LOCAL_FAILED_ENTRIES+=("$FILEPATH") + continue + fi + echo " OK: local" + + # Remote pins. + for svc in "${SERVICES[@]}"; do + # Skip services where this CID is already queued/pinning/pinned — + # Pinata rejects duplicate `pin remote add` calls with + # DUPLICATE_OBJECT (400). Same guard as ipfs-upload.sh. + if ipfs pin remote ls --service="$svc" --cid="$CID" \ + --status=queued,pinning,pinned 2>/dev/null | grep -q .; then + echo " OK: ${svc} (already pinned)" + continue + fi + + if ipfs pin remote add --service="$svc" --name="$PIN_NAME" $BACKGROUND "$CID" >/dev/null 2>&1; then + echo " OK: ${svc}" + else + echo " FAILED: ${svc}" >&2 + REMOTE_FAILED=$((REMOTE_FAILED + 1)) + if ! printf '%s\n' "${REMOTE_FAILED_ENTRIES[@]+"${REMOTE_FAILED_ENTRIES[@]}"}" | grep -qxF "$FILEPATH"; then + REMOTE_FAILED_ENTRIES+=("$FILEPATH") + fi + fi + done +done < "$MANIFEST" + +# --------------------------------------------------------------------------- +# Summary +# --------------------------------------------------------------------------- + +echo "" +echo "==> Batch pin complete: ${TOTAL} CIDs processed." + +EXIT_CODE=0 + +if [[ $LOCAL_FAILED -gt 0 ]]; then + echo "" >&2 + echo "ERROR: ${LOCAL_FAILED} CID(s) failed local pinning:" >&2 + for entry in "${LOCAL_FAILED_ENTRIES[@]}"; do + echo " - ${entry}" >&2 + done + EXIT_CODE=1 +fi + +if [[ $REMOTE_FAILED -gt 0 ]]; then + echo "" >&2 + echo "WARNING: ${REMOTE_FAILED} remote pin submission(s) failed:" >&2 + for entry in "${REMOTE_FAILED_ENTRIES[@]}"; do + echo " - ${entry}" >&2 + done + EXIT_CODE=1 +fi + +exit $EXIT_CODE diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh new file mode 100755 index 00000000000..e6a76f86953 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh @@ -0,0 +1,308 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Upload a file to IPFS (CIDv1, UnixFS v1 2025 profile), pin it on the +# itk-pinata and itk-filebase remote pinning services, and replace the +# original with a .cid content link. Optionally mirror the bytes into a +# local ITKTestingData checkout at CID/. +# +# Usage: +# ipfs-upload.sh [--testing-data-repo ] +# +# Options: +# --testing-data-repo Path to a local clone of +# https://github.com/InsightSoftwareConsortium/ITKTestingData +# The uploaded bytes are copied to +# /CID/ and `git add`ed there. +# Skipped with a warning for files > 50 MB, +# which GitHub rejects. +# +# Prerequisites: +# - Kubo (go-ipfs) installed and `ipfs` on PATH +# - IPFS daemon running (ipfs daemon, or IPFS Desktop) +# - UnixFS v1 2025 profile applied: `ipfs config profile apply unixfs-v1-2025` +# - `itk-pinata` and `itk-filebase` remote pinning services configured +# +# See README.md in this directory for full setup. + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" + +# Required remote pinning services — script errors if not configured. +REQUIRED_SERVICES=(itk-pinata itk-filebase) + +# GitHub hard-rejects pushes containing any file > 50 MB. The ITKTestingData +# mirror step is skipped for files over this limit. +GITHUB_FILE_LIMIT_BYTES=$((50 * 1024 * 1024)) + +# --------------------------------------------------------------------------- +# Argument parsing +# --------------------------------------------------------------------------- + +TESTING_DATA_REPO="" +FILE="" + +while [[ $# -gt 0 ]]; do + case "$1" in + --testing-data-repo) + TESTING_DATA_REPO="${2:?--testing-data-repo requires a path}" + shift 2 + ;; + --testing-data-repo=*) + TESTING_DATA_REPO="${1#--testing-data-repo=}" + shift + ;; + -h|--help) + sed -n '3,/^$/{ s/^# \?//; p }' "$0" + exit 0 + ;; + -*) + echo "ERROR: Unknown option: $1" >&2 + exit 1 + ;; + *) + if [[ -n "$FILE" ]]; then + echo "ERROR: Unexpected positional argument: $1" >&2 + exit 1 + fi + FILE="$1" + shift + ;; + esac +done + +if [[ -z "$FILE" ]]; then + echo "Usage: $0 [--testing-data-repo ] " >&2 + exit 1 +fi + +if [[ ! -f "$FILE" ]]; then + echo "ERROR: File not found: $FILE" >&2 + exit 1 +fi + +# Guard: reject symlinks (realpath would resolve to the target, and rm would +# delete the target file rather than the symlink itself). +if [[ -L "$FILE" ]]; then + echo "ERROR: Symlink paths are not supported: $FILE" >&2 + echo " Pass the real file path instead." >&2 + exit 1 +fi + +ABSOLUTE_FILE="$(realpath "$FILE")" + +# Guard: file must be inside the repository. +if [[ "$ABSOLUTE_FILE" != "$REPO_ROOT"/* ]]; then + echo "ERROR: File must be inside the repository: $ABSOLUTE_FILE" >&2 + exit 1 +fi + +# Guard: reject files that are already content links. +for ext in cid md5 sha1 sha224 sha256 sha384 sha512; do + if [[ "$FILE" == *."${ext}" ]]; then + echo "ERROR: File is already a .${ext} content link: $FILE" >&2 + exit 1 + fi +done + +REL_FILE="${ABSOLUTE_FILE#"$REPO_ROOT/"}" + +# Guard: reject paths with whitespace (manifest format uses space as delimiter). +if [[ "$REL_FILE" =~ [[:space:]] ]]; then + echo "ERROR: Filepath contains whitespace, which is not supported: $REL_FILE" >&2 + echo " Rename the file to remove spaces before uploading." >&2 + exit 1 +fi + +PIN_NAME="$(basename "$ABSOLUTE_FILE")" + +# --------------------------------------------------------------------------- +# Validate --testing-data-repo path (before any IPFS work) +# --------------------------------------------------------------------------- + +if [[ -n "$TESTING_DATA_REPO" ]]; then + if [[ ! -d "$TESTING_DATA_REPO" ]]; then + echo "ERROR: --testing-data-repo path is not a directory: $TESTING_DATA_REPO" >&2 + exit 1 + fi + if [[ ! -d "$TESTING_DATA_REPO/.git" ]]; then + echo "ERROR: --testing-data-repo is not a git checkout: $TESTING_DATA_REPO" >&2 + exit 1 + fi + TESTING_DATA_REPO="$(realpath "$TESTING_DATA_REPO")" +fi + +# --------------------------------------------------------------------------- +# Prerequisites +# --------------------------------------------------------------------------- + +if ! command -v ipfs &>/dev/null; then + echo "ERROR: 'ipfs' command not found on PATH." >&2 + echo " Install Kubo: https://docs.ipfs.tech/install/command-line/" >&2 + echo " See: Utilities/Maintenance/ExternalDataUpload/README.md" >&2 + exit 1 +fi + +if ! ipfs swarm peers &>/dev/null; then + echo "ERROR: IPFS daemon does not appear to be running." >&2 + echo " Start with: ipfs daemon" >&2 + echo " Or launch IPFS Desktop." >&2 + exit 1 +fi + +# Check required remote pinning services are configured. +CONFIGURED_SERVICES="$(ipfs pin remote service ls 2>/dev/null || true)" +for svc in "${REQUIRED_SERVICES[@]}"; do + if ! echo "$CONFIGURED_SERVICES" | grep -q "^${svc} "; then + echo "ERROR: Required pinning service '${svc}' is not configured." >&2 + echo " See: Utilities/Maintenance/ExternalDataUpload/README.md" >&2 + exit 1 + fi +done + +# --------------------------------------------------------------------------- +# Add to IPFS +# --------------------------------------------------------------------------- + +echo "==> Adding ${PIN_NAME} to IPFS (CIDv1, UnixFS v1 2025 profile)..." +CID="$(ipfs add --cid-version=1 --quieter "$ABSOLUTE_FILE")" + +if [[ -z "$CID" ]]; then + echo "ERROR: ipfs add returned an empty CID." >&2 + exit 1 +fi + +echo " CID: ${CID}" + +# --------------------------------------------------------------------------- +# Pin locally (ipfs add already pins, but be explicit) +# --------------------------------------------------------------------------- + +echo "==> Pinning locally..." +ipfs pin add "$CID" >/dev/null + +# --------------------------------------------------------------------------- +# Pin on remote services +# --------------------------------------------------------------------------- + +FAILED_PINS=() + +for svc in "${REQUIRED_SERVICES[@]}"; do + echo "==> Pinning on ${svc}..." + if ipfs pin remote add --service="$svc" --name="$PIN_NAME" "$CID" 2>&1; then + echo " OK: ${svc}" + else + echo " FAILED: ${svc}" >&2 + FAILED_PINS+=("$svc") + fi +done + +if [[ ${#FAILED_PINS[@]} -gt 0 ]]; then + echo "" >&2 + echo "ERROR: Remote pin failed for: ${FAILED_PINS[*]}" >&2 + echo " The original file has NOT been modified." >&2 + echo " Fix the issue and retry, or pin manually:" >&2 + for failed_svc in "${FAILED_PINS[@]}"; do + echo " ipfs pin remote add --service=${failed_svc} --name=\"${PIN_NAME}\" ${CID}" >&2 + done + exit 1 +fi + +# --------------------------------------------------------------------------- +# Mirror into ITKTestingData (optional, size-gated) +# --------------------------------------------------------------------------- + +FILE_SIZE_BYTES="$(stat -c '%s' "$ABSOLUTE_FILE" 2>/dev/null || stat -f '%z' "$ABSOLUTE_FILE")" + +if [[ -n "$TESTING_DATA_REPO" ]]; then + if (( FILE_SIZE_BYTES > GITHUB_FILE_LIMIT_BYTES )); then + echo "" >&2 + echo "WARNING: ${PIN_NAME} is ${FILE_SIZE_BYTES} bytes (> 50 MB)." >&2 + echo " GitHub rejects pushes containing files > 50 MB, so it" >&2 + echo " will NOT be mirrored to ITKTestingData." >&2 + echo " IPFS pin (local + itk-pinata + itk-filebase) succeeded;" >&2 + echo " the .cid content link will still be produced." >&2 + else + MIRROR_DIR="$TESTING_DATA_REPO/CID" + MIRROR_PATH="$MIRROR_DIR/$CID" + mkdir -p "$MIRROR_DIR" + echo "==> Mirroring to ITKTestingData: CID/${CID}" + cp "$ABSOLUTE_FILE" "$MIRROR_PATH" + if ! git -C "$TESTING_DATA_REPO" add "CID/$CID"; then + echo "ERROR: Failed to 'git add CID/$CID' in $TESTING_DATA_REPO" >&2 + rm -f "$MIRROR_PATH" + exit 1 + fi + fi +fi + +# --------------------------------------------------------------------------- +# Replace original file with .cid content link +# (only reached after all required remote pins succeeded) +# +# Ordering hazard: the .cid file is written and the original data file is +# removed BEFORE the manifest update below. If the process is killed or hits +# a disk-full error between here and the `mv` of "${MANIFEST}.tmp", the +# original is gone, the .cid link exists, but the manifest is not updated. +# content-link-normalize.sh's recovery block restores the original link and +# also removes any orphan .cid in that case. A standalone `ipfs-upload.sh` +# crash here leaves the working tree consistent (CID file present, original +# absent) but the manifest stale; the user can re-run after repairing. +# --------------------------------------------------------------------------- + +CID_FILE="${ABSOLUTE_FILE}.cid" +REL_CID="${CID_FILE#"$REPO_ROOT/"}" +printf '%s\n' "$CID" > "$CID_FILE" +rm "$ABSOLUTE_FILE" + +# --------------------------------------------------------------------------- +# Update content link manifest +# --------------------------------------------------------------------------- + +MANIFEST="$REPO_ROOT/Testing/Data/content-links.manifest" + +if [[ -f "$MANIFEST" ]]; then + # Remove existing entry for this filepath (re-upload case). + # Use awk for exact string match (grep would treat dots as wildcards). + awk -v path="$REL_FILE" '$2 != path' "$MANIFEST" > "${MANIFEST}.tmp" + mv "${MANIFEST}.tmp" "$MANIFEST" +else + # Seed a fresh manifest with a brief header. + cat > "$MANIFEST" <<'EOF' +# ITK content-link manifest +# One CID per line, format: +# Maintained by Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +EOF +fi + +# Append the new entry. +printf '%s %s\n' "$CID" "$REL_FILE" >> "$MANIFEST" + +# Sort data lines by filepath; preserve comment header at top. +{ + grep '^#' "$MANIFEST" || true + grep -v '^#' "$MANIFEST" | grep -v '^$' | LC_ALL=C sort -k2 +} > "${MANIFEST}.tmp" +mv "${MANIFEST}.tmp" "$MANIFEST" + +echo "" +echo "==> Upload complete." +echo " CID: ${CID}" +echo " Link: ${CID_FILE}" + +# --------------------------------------------------------------------------- +# Suggest git commands +# --------------------------------------------------------------------------- + +echo "" +echo "Next steps (ITK repository):" +echo " git rm \"${REL_FILE}\"" +echo " git add \"${REL_CID}\"" +echo " git add Testing/Data/content-links.manifest" + +if [[ -n "$TESTING_DATA_REPO" && $FILE_SIZE_BYTES -le $GITHUB_FILE_LIMIT_BYTES ]]; then + echo "" + echo "Next steps (ITKTestingData repository at ${TESTING_DATA_REPO}):" + echo " git -C \"${TESTING_DATA_REPO}\" commit -m \"Add ${PIN_NAME} (${CID})\"" + echo " git -C \"${TESTING_DATA_REPO}\" push" +fi From a749a3bdd6d4e4a38071961b3adbd0dd1a6fd4c8 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 23 Apr 2026 13:27:34 -0400 Subject: [PATCH 03/23] ENH: Support background remote pinning in ExternalDataUpload scripts Add `--background` to both `ipfs-upload.sh` and `content-link-normalize.sh` to submit remote pin requests asynchronously via `ipfs pin remote add --background`. The default remains synchronous (surfaces failures immediately, safer for one-off uploads); `--background` is intended for batch runs where waiting for each remote to reach `pinned` (minutes per file on Filebase) would be impractical. Also dedup remote-pin submission: before calling `ipfs pin remote add`, query `ipfs pin remote ls --status=queued,pinning,pinned` for the CID and skip the add if a pin already exists on that service. This avoids Pinata's `DUPLICATE_OBJECT` (400) error on re-runs of previously uploaded content, and prevents Filebase from accumulating duplicate queue entries. README.md and SKILL.md document the new flag, the synchronous vs. asynchronous tradeoff, and the post-run verification command (`ipfs pin remote ls --status=...`). --- .../Maintenance/ExternalDataUpload/README.md | 26 +++++++++++++ .../Maintenance/ExternalDataUpload/SKILL.md | 4 ++ .../content-link-normalize.sh | 11 ++++++ .../ExternalDataUpload/ipfs-upload.sh | 38 ++++++++++++++++--- 4 files changed, 74 insertions(+), 5 deletions(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index 50bc029f2ba..33a01c28283 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -228,8 +228,34 @@ content-link-normalize.sh Testing/Data/Input --testing-data-repo ~/src/ITKTestin # Only process files that are currently .md5 / .shaNNN (skip existing .cid). content-link-normalize.sh Modules --hash-only + +# Batch run with asynchronous remote pinning (returns without waiting for +# each remote to reach 'pinned'). Verify afterwards with `ipfs pin remote ls`. +content-link-normalize.sh Modules --hash-only --background +``` + +### Synchronous vs. asynchronous remote pinning + +Both `ipfs-upload.sh` and `content-link-normalize.sh` default to +**synchronous** remote pinning: `ipfs pin remote add` blocks until the +remote reports `pinned`, which surfaces failures immediately and is +safest for one-off uploads. Remote fetch can take minutes per file, +however, which is impractical for batch runs. + +Pass `--background` to submit pin requests asynchronously — the remote +queues the pin and fetches the content itself, and the script returns +right away. Check final pin state with: + +```bash +ipfs pin remote ls --service=itk-pinata --status=queued,pinning,pinned +ipfs pin remote ls --service=itk-filebase --status=queued,pinning,pinned ``` +Both scripts also pre-check each remote for an existing pin on the same +CID and skip the `pin remote add` call if one is already queued, pinning, +or pinned — this prevents `DUPLICATE_OBJECT` (400) errors on Pinata when +re-running on already-uploaded content. + ## Content Link Manifest `Testing/Data/content-links.manifest` is a plain-text index of every CID the diff --git a/Utilities/Maintenance/ExternalDataUpload/SKILL.md b/Utilities/Maintenance/ExternalDataUpload/SKILL.md index ad170a7e643..77c1d8ed0b6 100644 --- a/Utilities/Maintenance/ExternalDataUpload/SKILL.md +++ b/Utilities/Maintenance/ExternalDataUpload/SKILL.md @@ -84,6 +84,10 @@ Useful options: - `--hash-only` — only touch `.md5` / `.shaNNN` links, leave `.cid` alone - `--cid-only` — only re-hash existing `.cid` links under the new profile - `--testing-data-repo ` — forwarded to `ipfs-upload.sh` +- `--background` — forwarded to `ipfs-upload.sh`; submit remote pins + asynchronously instead of waiting for each to reach `pinned`. Use for + batch runs where synchronous pinning would take minutes per file. + Verify final state afterwards with `ipfs pin remote ls`. The normalize script fetches bytes through the gateway templates in `CMake/ITKExternalData.cmake` (same order as the build), verifies them diff --git a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh index bd01128eb36..93187d735f7 100755 --- a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +++ b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh @@ -19,6 +19,12 @@ set -euo pipefail # Options: # --testing-data-repo Forwarded to ipfs-upload.sh. Local # ITKTestingData clone to mirror bytes into. +# --background Forwarded to ipfs-upload.sh. Submit remote +# pin requests asynchronously; useful for +# batch runs where waiting for each pin to +# reach 'pinned' status (minutes per file) +# is impractical. Verify final pin state +# afterwards with `ipfs pin remote ls`. # --dry-run List what would change without modifying. # --hash-only Process only .md5 / .shaNNN links # (leave existing .cid links alone). @@ -50,6 +56,7 @@ show_help() { # --------------------------------------------------------------------------- TESTING_DATA_REPO="" +BACKGROUND=false DRY_RUN=false HASH_ONLY=false CID_ONLY=false @@ -61,6 +68,7 @@ while [[ $# -gt 0 ]]; do --dry-run) DRY_RUN=true; shift ;; --hash-only) HASH_ONLY=true; shift ;; --cid-only) CID_ONLY=true; shift ;; + --background) BACKGROUND=true; shift ;; --testing-data-repo) TESTING_DATA_REPO="${2:?--testing-data-repo requires a path}" shift 2 @@ -352,6 +360,9 @@ UPLOAD_ARGS=() if [[ -n "$TESTING_DATA_REPO" ]]; then UPLOAD_ARGS+=(--testing-data-repo "$TESTING_DATA_REPO") fi +if $BACKGROUND; then + UPLOAD_ARGS+=(--background) +fi FAIL=0 diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh index e6a76f86953..621464be36c 100755 --- a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +++ b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh @@ -7,7 +7,7 @@ set -euo pipefail # local ITKTestingData checkout at CID/. # # Usage: -# ipfs-upload.sh [--testing-data-repo ] +# ipfs-upload.sh [--testing-data-repo ] [--background] # # Options: # --testing-data-repo Path to a local clone of @@ -16,6 +16,15 @@ set -euo pipefail # /CID/ and `git add`ed there. # Skipped with a warning for files > 50 MB, # which GitHub rejects. +# --background Submit remote pin requests asynchronously +# (pins queue at itk-pinata / itk-filebase and +# the script returns without waiting). Useful +# for batch workflows. Default is synchronous, +# which blocks until each remote reports +# 'pinned' — safer for one-off uploads because +# failures surface immediately, but can take +# minutes per file as the remote fetches the +# content. # # Prerequisites: # - Kubo (go-ipfs) installed and `ipfs` on PATH @@ -40,6 +49,7 @@ GITHUB_FILE_LIMIT_BYTES=$((50 * 1024 * 1024)) # --------------------------------------------------------------------------- TESTING_DATA_REPO="" +BACKGROUND="" FILE="" while [[ $# -gt 0 ]]; do @@ -52,6 +62,10 @@ while [[ $# -gt 0 ]]; do TESTING_DATA_REPO="${1#--testing-data-repo=}" shift ;; + --background) + BACKGROUND="--background" + shift + ;; -h|--help) sed -n '3,/^$/{ s/^# \?//; p }' "$0" exit 0 @@ -188,8 +202,22 @@ ipfs pin add "$CID" >/dev/null FAILED_PINS=() for svc in "${REQUIRED_SERVICES[@]}"; do - echo "==> Pinning on ${svc}..." - if ipfs pin remote add --service="$svc" --name="$PIN_NAME" "$CID" 2>&1; then + # Skip services where this CID is already queued/pinning/pinned — + # Pinata rejects duplicate `pin remote add` calls with + # DUPLICATE_OBJECT (400), and resubmitting on Filebase just makes a + # second queue entry. + if ipfs pin remote ls --service="$svc" --cid="$CID" \ + --status=queued,pinning,pinned 2>/dev/null | grep -q .; then + echo "==> Already pinned (or in flight) on ${svc}; skipping" + continue + fi + + if [[ -n "$BACKGROUND" ]]; then + echo "==> Queueing pin on ${svc} (background)..." + else + echo "==> Pinning on ${svc}..." + fi + if ipfs pin remote add --service="$svc" --name="$PIN_NAME" $BACKGROUND "$CID" 2>&1; then echo " OK: ${svc}" else echo " FAILED: ${svc}" >&2 @@ -199,11 +227,11 @@ done if [[ ${#FAILED_PINS[@]} -gt 0 ]]; then echo "" >&2 - echo "ERROR: Remote pin failed for: ${FAILED_PINS[*]}" >&2 + echo "ERROR: Remote pin submission failed for: ${FAILED_PINS[*]}" >&2 echo " The original file has NOT been modified." >&2 echo " Fix the issue and retry, or pin manually:" >&2 for failed_svc in "${FAILED_PINS[@]}"; do - echo " ipfs pin remote add --service=${failed_svc} --name=\"${PIN_NAME}\" ${CID}" >&2 + echo " ipfs pin remote add --service=${failed_svc} --name=\"${PIN_NAME}\" ${BACKGROUND} ${CID}" >&2 done exit 1 fi From af4064aea30db3b05b9b43da6ccab20785939663 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 23 Apr 2026 13:27:52 -0400 Subject: [PATCH 04/23] STYLE: Normalize AnisotropicDiffusionLBR test data to CID content links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert the 24 `.md5` content links in Modules/Filtering/AnisotropicDiffusionLBR/test/{Input,Baseline}/ to `.cid` links under the UnixFS v1 2025 profile, produced by `Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh --hash-only --background`. Bytes were fetched through the gateway templates in CMake/ITKExternalData.cmake, verified against each declared MD5 hash, and re-uploaded; all new CIDs are pinned locally plus on `itk-pinata` and `itk-filebase`. Record the 24 new CIDs in Testing/Data/content-links.manifest along with two additional entries picked up as a `--cid-only` sampling run (CurvatureAnisotropicDiffusionImageFilter.2.png and warp3D.nii.gz), both of which re-hashed to identical CIDs — confirming existing `.cid` links in the tree are already compatible with the 2025 profile. No test semantics change: `CMake/ITKExternalData.cmake` resolves `DATA{...}` references by whichever `.md5` / `.sha256` / `.cid` link sits next to the referenced path, so the filter tests continue to fetch the same bytes. --- .../test/Baseline/Cos3D_cCED.vtk.cid | 1 + .../test/Baseline/Cos3D_cCED.vtk.md5 | 1 - .../test/Baseline/FingerPrint_I_20.png.cid | 1 + .../test/Baseline/FingerPrint_I_20.png.md5 | 1 - .../test/Baseline/FingerPrint_cCED_20.png.cid | 1 + .../test/Baseline/FingerPrint_cCED_20.png.md5 | 1 - .../test/Baseline/FingerPrint_cEED_20.png.cid | 1 + .../test/Baseline/FingerPrint_cEED_20.png.md5 | 1 - .../test/Baseline/Lena_Detail_I_2.png.cid | 1 + .../test/Baseline/Lena_Detail_I_2.png.md5 | 1 - .../test/Baseline/Lena_Detail_cCED_2.png.cid | 1 + .../test/Baseline/Lena_Detail_cCED_2.png.md5 | 1 - .../test/Baseline/Lena_Detail_cEED_2.png.cid | 1 + .../test/Baseline/Lena_Detail_cEED_2.png.md5 | 1 - .../test/Baseline/Oscillations1_CED.png.cid | 1 + .../test/Baseline/Oscillations1_CED.png.md5 | 1 - .../test/Baseline/Oscillations1_cCED.png.cid | 1 + .../test/Baseline/Oscillations1_cCED.png.md5 | 1 - .../test/Baseline/PacMan_I.png.cid | 1 + .../test/Baseline/PacMan_I.png.md5 | 1 - .../test/Baseline/PacMan_cCED.png.cid | 1 + .../test/Baseline/PacMan_cCED.png.md5 | 1 - .../test/Baseline/PacMan_cEED.png.cid | 1 + .../test/Baseline/PacMan_cEED.png.md5 | 1 - .../test/Baseline/Triangle_EED.png.cid | 1 + .../test/Baseline/Triangle_EED.png.md5 | 1 - .../test/Baseline/Triangle_cEED.png.cid | 1 + .../test/Baseline/Triangle_cEED.png.md5 | 1 - .../Baseline/VectorField_Circle_cEED.vtk.cid | 1 + .../Baseline/VectorField_Circle_cEED.vtk.md5 | 1 - .../test/Baseline/mrbrain_cEED.vtk.cid | 1 + .../test/Baseline/mrbrain_cEED.vtk.md5 | 1 - .../test/Input/Cos3D_Noisy.vtk.cid | 1 + .../test/Input/Cos3D_Noisy.vtk.md5 | 1 - .../test/Input/FingerPrint.png.cid | 1 + .../test/Input/FingerPrint.png.md5 | 1 - .../test/Input/Lena_Detail.png.cid | 1 + .../test/Input/Lena_Detail.png.md5 | 1 - .../test/Input/Oscillations_Noisy1.png.cid | 1 + .../test/Input/Oscillations_Noisy1.png.md5 | 1 - .../test/Input/PacMan.png.cid | 1 + .../test/Input/PacMan.png.md5 | 1 - .../test/Input/Triangle.png.cid | 1 + .../test/Input/Triangle.png.md5 | 1 - .../Input/VectorField_CircleOpposites.vtk.cid | 1 + .../Input/VectorField_CircleOpposites.vtk.md5 | 1 - .../test/Input/mrbrain_noisy.vtk.cid | 1 + .../test/Input/mrbrain_noisy.vtk.md5 | 1 - Testing/Data/content-links.manifest | 26 +++++++++++++++++++ 49 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.md5 create mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.cid delete mode 100644 Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.md5 diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.cid new file mode 100644 index 00000000000..e493e31b03b --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.cid @@ -0,0 +1 @@ +bafkreifmtmpjuppizngftzcnt3ilufa66dajy3i6xogn3jfirveqw63cwu diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.md5 deleted file mode 100644 index 3df854dded2..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -df95fdb0657f7f8472bdc16c73c5bed0 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.cid new file mode 100644 index 00000000000..45edb5677d4 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.cid @@ -0,0 +1 @@ +bafkreif4yuyueovggfvnjj3qrnct54nrm52pfconktlvavzq7kt64jo3ji diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.md5 deleted file mode 100644 index 3b5dbe8354c..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png.md5 +++ /dev/null @@ -1 +0,0 @@ -e4e5e233b434ea4c85059d7c62f15554 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.cid new file mode 100644 index 00000000000..e3ec6f7a548 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.cid @@ -0,0 +1 @@ +bafkreicjpqxemmg3lgvigudscqqaiy3mjrgm3tm3ep7ngskw3is3fix2qi diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.md5 deleted file mode 100644 index 750c29db86b..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png.md5 +++ /dev/null @@ -1 +0,0 @@ -07435f1d44aeb66fd98e642945437662 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.cid new file mode 100644 index 00000000000..fae7f8f2427 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.cid @@ -0,0 +1 @@ +bafkreigxse36jyrc4cs6w77vi6qfd223dhnhrf6v2yuipxcl2wq2h2xjky diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.md5 deleted file mode 100644 index 76c2e516e80..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png.md5 +++ /dev/null @@ -1 +0,0 @@ -5e752e3fa0e46bb530fedc94c7794c73 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.cid new file mode 100644 index 00000000000..a82e5548b05 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.cid @@ -0,0 +1 @@ +bafkreigh7wfs6kgfhqwxcnbt22c4panshoarkda5tdmykstolnwzvkw26m diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.md5 deleted file mode 100644 index b80ed7eb732..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png.md5 +++ /dev/null @@ -1 +0,0 @@ -ff36663855e6794712b081689aac70e5 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.cid new file mode 100644 index 00000000000..9a9b0f36397 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.cid @@ -0,0 +1 @@ +bafkreicbrlzmtr2t3a22hgudfnbicgmvikg2hioxzpzxvw5ncwzmdlwpeq diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.md5 deleted file mode 100644 index f6a2c0d79ae..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png.md5 +++ /dev/null @@ -1 +0,0 @@ -b741b80ce65e20c59f286244f621344a \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.cid new file mode 100644 index 00000000000..7b2b845692d --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.cid @@ -0,0 +1 @@ +bafkreigcrzclz5tri2yhsu63lax4kxabjna652kayppzqp7u3hilwgadte diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.md5 deleted file mode 100644 index d529c7f1aa4..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png.md5 +++ /dev/null @@ -1 +0,0 @@ -c606fea9c82019d1b4e80d351b803d92 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.cid new file mode 100644 index 00000000000..bdd66c9283b --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.cid @@ -0,0 +1 @@ +bafkreibpqafrxnmo2m2gixrkml6g54hvzgiyiyaafxug7zyameeulrpiua diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.md5 deleted file mode 100644 index b5cb7d21602..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -50da37ff706c93536c0f33390da4287c \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.cid new file mode 100644 index 00000000000..4404e61996e --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.cid @@ -0,0 +1 @@ +bafkreihnab2o426g2ffmwj42a4wlrusk5fzev3jwxxjmgw3z4hgq3rosmu diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.md5 deleted file mode 100644 index 35dfbe815ba..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -21e83dc09f4c58a44eeb676e49ec3d99 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.cid new file mode 100644 index 00000000000..54757b866fd --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.cid @@ -0,0 +1 @@ +bafkreiafl54ccpviaq4nm7vufz3wfceoxl5y2bosbvtkyb45btihrgt6ae diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.md5 deleted file mode 100644 index 6a1cf5d0156..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png.md5 +++ /dev/null @@ -1 +0,0 @@ -c5b358267defea8babcfebbc66c9fa8b \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.cid new file mode 100644 index 00000000000..75fd56c7753 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.cid @@ -0,0 +1 @@ +bafkreib2z57ja7aqbz4ddzpprpgxwj3vojaeaijbmeddnbdon65y52536u diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.md5 deleted file mode 100644 index 223ef256a52..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -fd8d652016508d93ee861c1db83f3ed4 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.cid new file mode 100644 index 00000000000..4589307d9e9 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.cid @@ -0,0 +1 @@ +bafkreihod4nsri7yzrd7h354snfk24xenhwaqy4rpt356vqcuqupwrcu3a diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.md5 deleted file mode 100644 index a08c69480fd..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -edf293e2cce2eae1df4f8598e8179641 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.cid new file mode 100644 index 00000000000..224854e8b33 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.cid @@ -0,0 +1 @@ +bafkreiaslkugrrcu3wvgfvhyqyt4p4voolthjbrjlwwyhvppsmdb4sb2au diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.md5 deleted file mode 100644 index 09f2a9ab526..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -f823b62e9135a37c7438fa07a9e54096 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.cid new file mode 100644 index 00000000000..5098a3e9e4a --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.cid @@ -0,0 +1 @@ +bafkreicwjq4f2xajppwq3kye2cc2mnkvn5dfqlc7uoexm7qbftya6sxbcm diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.md5 deleted file mode 100644 index ff3bfe4ac73..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png.md5 +++ /dev/null @@ -1 +0,0 @@ -12473a0cb8d3afa0f8d7eb4f61e6216b \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.cid new file mode 100644 index 00000000000..24ac0cfdf01 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.cid @@ -0,0 +1 @@ +bafkreib2k7buke3tmpvugklmy56q2a466thyegmzn5jdhz4y4jm5bhwuiy diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.md5 deleted file mode 100644 index 77458bed992..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -23c4495de1a746648418abc144972e92 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.cid new file mode 100644 index 00000000000..a741f6bcf1a --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.cid @@ -0,0 +1 @@ +bafybeiffbnw2lggwcdgjuanqhhmur7ntoc7f5wgypbm5cjab2bkjtkjnvy diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.md5 deleted file mode 100644 index 9e91116b83f..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -db41c262fba84a75eb399e1e154a5974 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.cid new file mode 100644 index 00000000000..5030d3f4b37 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.cid @@ -0,0 +1 @@ +bafkreiew5kj3pus2c3cis7t57cfiiekkzdhfgt44ygfoafsaebk2kvxike diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.md5 deleted file mode 100644 index c48093eec6b..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -3a7d9131a732794fcb4100909cd3fd1c \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.cid new file mode 100644 index 00000000000..5cbf09ebca5 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.cid @@ -0,0 +1 @@ +bafkreig2pwvdimswvimhz43bmhrrcozyf233wn7txir5hx6jtykws5qzvm diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.md5 deleted file mode 100644 index 2992b7a556c..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png.md5 +++ /dev/null @@ -1 +0,0 @@ -ed7342b4598d44574b2714834b705cad \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.cid new file mode 100644 index 00000000000..0cd60fda78f --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.cid @@ -0,0 +1 @@ +bafkreic5pnb5dbbpbo6fgjk3atkjzdafuqbtzpfxeq7dfc724zsjnggvcu diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.md5 deleted file mode 100644 index 2d8222d7362..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png.md5 +++ /dev/null @@ -1 +0,0 @@ -45a1845c6fa452c7465bebda5bbe9b0f \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.cid new file mode 100644 index 00000000000..80613d5c325 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.cid @@ -0,0 +1 @@ +bafkreiae437zhanhbgmn2oxy2xyzee3ux5s2eyek6hsgk5bzd7lhwz6yzm diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.md5 deleted file mode 100644 index 4797a352a96..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png.md5 +++ /dev/null @@ -1 +0,0 @@ -75818e9d765fb6838a8cf5845ac19b9a \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.cid new file mode 100644 index 00000000000..8569b10850a --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.cid @@ -0,0 +1 @@ +bafkreibhkebc4kkb5ysuelc2kfllixc2xq3looqfkvrq6f3qx5a42cvm5q diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.md5 deleted file mode 100644 index 0abec1e6758..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png.md5 +++ /dev/null @@ -1 +0,0 @@ -d7955368c6f49cbb451d8901aa40add6 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.cid new file mode 100644 index 00000000000..5881f9b832c --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.cid @@ -0,0 +1 @@ +bafkreicey264ntq4ew4wnlyoy23cu5k3cmxwvlm7fg4r5skcbtwhsh5jfe diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.md5 deleted file mode 100644 index c5594b80c04..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png.md5 +++ /dev/null @@ -1 +0,0 @@ -bce40d3af4f491d728aaba8bb8c9ede9 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.cid new file mode 100644 index 00000000000..7ff05bad9e0 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.cid @@ -0,0 +1 @@ +bafkreics5ulkrwki4epnu6l4umam3on7ovr5ao4yfva7f2odkkp25j26gm diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.md5 deleted file mode 100644 index e664c2ad407..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -0a9e85b2b8dfadb4ab25b828a0f23852 \ No newline at end of file diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.cid b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.cid new file mode 100644 index 00000000000..ebd35daafb0 --- /dev/null +++ b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.cid @@ -0,0 +1 @@ +bafybeid6ongwkdpv3manmr4qpu22zybq4frslcqj3ysmkxc5tmps2aqnfu diff --git a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.md5 b/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.md5 deleted file mode 100644 index 2e105fba437..00000000000 --- a/Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk.md5 +++ /dev/null @@ -1 +0,0 @@ -ff88f04e75dc478b283ecdf39d8d7687 \ No newline at end of file diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index d9d6fca9994..10e3f127b37 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -12,3 +12,29 @@ # Paths must not contain whitespace (the manifest uses a single space as # the field delimiter). Data lines are kept sorted by path; comment lines # above the first data line are preserved on re-write. +bafkreifmtmpjuppizngftzcnt3ilufa66dajy3i6xogn3jfirveqw63cwu Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk +bafkreif4yuyueovggfvnjj3qrnct54nrm52pfconktlvavzq7kt64jo3ji Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png +bafkreicjpqxemmg3lgvigudscqqaiy3mjrgm3tm3ep7ngskw3is3fix2qi Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png +bafkreigxse36jyrc4cs6w77vi6qfd223dhnhrf6v2yuipxcl2wq2h2xjky Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cEED_20.png +bafkreigh7wfs6kgfhqwxcnbt22c4panshoarkda5tdmykstolnwzvkw26m Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_I_2.png +bafkreicbrlzmtr2t3a22hgudfnbicgmvikg2hioxzpzxvw5ncwzmdlwpeq Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cCED_2.png +bafkreigcrzclz5tri2yhsu63lax4kxabjna652kayppzqp7u3hilwgadte Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Lena_Detail_cEED_2.png +bafkreibpqafrxnmo2m2gixrkml6g54hvzgiyiyaafxug7zyameeulrpiua Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_CED.png +bafkreihnab2o426g2ffmwj42a4wlrusk5fzev3jwxxjmgw3z4hgq3rosmu Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Oscillations1_cCED.png +bafkreiafl54ccpviaq4nm7vufz3wfceoxl5y2bosbvtkyb45btihrgt6ae Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_I.png +bafkreib2z57ja7aqbz4ddzpprpgxwj3vojaeaijbmeddnbdon65y52536u Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cCED.png +bafkreihod4nsri7yzrd7h354snfk24xenhwaqy4rpt356vqcuqupwrcu3a Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/PacMan_cEED.png +bafkreiaslkugrrcu3wvgfvhyqyt4p4voolthjbrjlwwyhvppsmdb4sb2au Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_EED.png +bafkreicwjq4f2xajppwq3kye2cc2mnkvn5dfqlc7uoexm7qbftya6sxbcm Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Triangle_cEED.png +bafkreib2k7buke3tmpvugklmy56q2a466thyegmzn5jdhz4y4jm5bhwuiy Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/VectorField_Circle_cEED.vtk +bafybeiffbnw2lggwcdgjuanqhhmur7ntoc7f5wgypbm5cjab2bkjtkjnvy Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/mrbrain_cEED.vtk +bafkreiew5kj3pus2c3cis7t57cfiiekkzdhfgt44ygfoafsaebk2kvxike Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Cos3D_Noisy.vtk +bafkreig2pwvdimswvimhz43bmhrrcozyf233wn7txir5hx6jtykws5qzvm Modules/Filtering/AnisotropicDiffusionLBR/test/Input/FingerPrint.png +bafkreic5pnb5dbbpbo6fgjk3atkjzdafuqbtzpfxeq7dfc724zsjnggvcu Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Lena_Detail.png +bafkreiae437zhanhbgmn2oxy2xyzee3ux5s2eyek6hsgk5bzd7lhwz6yzm Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Oscillations_Noisy1.png +bafkreibhkebc4kkb5ysuelc2kfllixc2xq3looqfkvrq6f3qx5a42cvm5q Modules/Filtering/AnisotropicDiffusionLBR/test/Input/PacMan.png +bafkreicey264ntq4ew4wnlyoy23cu5k3cmxwvlm7fg4r5skcbtwhsh5jfe Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png +bafkreics5ulkrwki4epnu6l4umam3on7ovr5ao4yfva7f2odkkp25j26gm Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk +bafybeid6ongwkdpv3manmr4qpu22zybq4frslcqj3ysmkxc5tmps2aqnfu Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk +bafkreia52ajz3mxwv5rusp33a6mcl7mphp772zkzqthc2xwlb7rmn6fsyy Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.2.png +bafybeidgydpaoeu6qv4jupn3apal7ri47zr2q2qar435d3l4mdri66opby Wrapping/images/warp3D.nii.gz From 730e1f51271d06d961a948b26eb08695fb6ae3fc Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 23 Apr 2026 13:33:24 -0400 Subject: [PATCH 05/23] ENH: macOS hash-tool fallback + trim pre-check to md5/sha512 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In content-link-normalize.sh, the prerequisite warning pre-check was iterating every sha variant (sha1/224/256/384/512) and requiring GNU coreutils `*sum` binaries. Two issues: 1. ITK content links in practice are only .md5 (legacy) and .sha512 (current), so warning about missing sha224/sha384 tools was noise. Narrow the pre-check to md5 and sha512. 2. macOS ships BSD `md5` and `shasum`, not coreutils `md5sum` / `sha512sum`. Warning on their absence was a false positive for macOS contributors, and the verification path invoked them by name ("$tool" "$file") so it would actually fail. Replace `hash_tool_for_ext` (name-only) with `hash_cmd_for_ext` that returns a full command line — preferring GNU `md5sum` / `shaNsum` when present, falling back to `md5 -r` (BSD md5 with md5sum-compatible output) and `shasum -a NNN` (BSD shasum). `verify_bytes` uses intentional word-splitting so the multi-word fallback (e.g. "shasum -a 256") expands to distinct argv entries. Addresses review at https://github.com/InsightSoftwareConsortium/ITK/pull/6111/files#r3132434963 --- .../content-link-normalize.sh | 66 +++++++++++++------ 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh index 93187d735f7..0b3a3fbaa9a 100755 --- a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +++ b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh @@ -102,9 +102,46 @@ fi command -v curl >/dev/null 2>&1 || die "curl is required" command -v ipfs >/dev/null 2>&1 || die "ipfs is required (for CID recomputation)" -# Hash tools are only needed for links we actually encounter, but fail fast. -for tool in md5sum sha1sum sha224sum sha256sum sha384sum sha512sum; do - command -v "$tool" >/dev/null 2>&1 || warn "$tool not found; any matching content links will fail to verify" +# Resolve the local command that computes a digest for an algorithm. +# Returns a command line (possibly multi-word, e.g. "shasum -a 256") whose +# first whitespace-delimited token on stdout is the hex digest. +# +# Prefers GNU coreutils (`md5sum`, `shaNNNsum`) when present; falls back to +# the BSD/macOS tools that ship by default on macOS: `md5 -r` (output format +# matches md5sum) and `shasum -a NNN`. On macOS you can install coreutils +# via `brew install coreutils` to get the `*sum` variants as well. +hash_cmd_for_ext() { + case "$1" in + md5) + if command -v md5sum >/dev/null 2>&1; then + echo "md5sum" + elif command -v md5 >/dev/null 2>&1; then + # BSD md5; -r prints ` ` like md5sum. + echo "md5 -r" + else + return 1 + fi + ;; + sha1|sha224|sha256|sha384|sha512) + if command -v "${1}sum" >/dev/null 2>&1; then + echo "${1}sum" + elif command -v shasum >/dev/null 2>&1; then + echo "shasum -a ${1#sha}" + else + return 1 + fi + ;; + *) + return 1 + ;; + esac +} + +# ITK content links in practice use `.md5` (legacy) or `.sha512` (current); +# other sha variants are supported for completeness but not pre-checked. +for alg in md5 sha512; do + hash_cmd_for_ext "$alg" >/dev/null 2>&1 \ + || warn "no tool available to compute ${alg}; any .${alg} content links will fail to verify" done # --------------------------------------------------------------------------- @@ -195,18 +232,6 @@ algo_uc_for_ext() { esac } -hash_tool_for_ext() { - case "$1" in - md5) echo "md5sum" ;; - sha1) echo "sha1sum" ;; - sha224) echo "sha224sum" ;; - sha256) echo "sha256sum" ;; - sha384) echo "sha384sum" ;; - sha512) echo "sha512sum" ;; - *) return 1 ;; - esac -} - # Substitute %(algo) / %(hash) in a URL template. render_url() { local template="$1" algo="$2" hash="$3" @@ -301,10 +326,13 @@ verify_bytes() { return 1 fi - local tool actual - tool="$(hash_tool_for_ext "$ext")" || return 1 - command -v "$tool" >/dev/null 2>&1 || return 1 - actual="$("$tool" "$file" | awk '{print $1}')" + local cmd actual + cmd="$(hash_cmd_for_ext "$ext")" || return 1 + # Word-splitting is intentional — a fallback command like "shasum -a 256" + # expands to multiple argv entries, while the coreutils "md5sum" stays + # as a single argv entry. + # shellcheck disable=SC2086 + actual="$($cmd "$file" | awk '{print $1}')" [[ "${actual,,}" == "${expected,,}" ]] } From 68802f93d1dc80c41a9f432ff82cf5ebe80ace8f Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 23 Apr 2026 13:44:06 -0400 Subject: [PATCH 06/23] DOC: Update binary-data contributor guides for ExternalDataUpload skill Rewrite Documentation/docs/contributing/upload_binary_data.md and data.md to describe the new Kubo + pinning-service workflow driven by Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh, replacing the obsolete web3.storage / w3cli and content-link-upload.itk.org instructions. Document the one-time Kubo + itk-pinata / itk-filebase setup, the upload script's behavior (CIDv1 under the UnixFS v1 2025 profile, synchronous vs. --background pinning, manifest update), the optional --testing-data-repo mirror step with the 50 MB GitHub limit, and the content-link-normalize.sh conversion workflow for legacy .md5 / .sha256 / .sha512 links. Refresh the storage-location list and testing-data figure caption to match the gateways enumerated in CMake/ITKExternalData.cmake, and remove the now-orphaned content-link-upload.png screenshot of the retired web app. --- .../docs/contributing/content-link-upload.png | Bin 73800 -> 0 bytes Documentation/docs/contributing/data.md | 33 ++- .../docs/contributing/upload_binary_data.md | 190 +++++++++++------- 3 files changed, 143 insertions(+), 80 deletions(-) delete mode 100644 Documentation/docs/contributing/content-link-upload.png diff --git a/Documentation/docs/contributing/content-link-upload.png b/Documentation/docs/contributing/content-link-upload.png deleted file mode 100644 index 32df15aa48602f9a545d38a3375405c53ad622b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73800 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

9`O!jq^vfY1nO0Os& zhzuvjnj9jfBz6a9^*p`uKP&)Qte+D}AmLZp^FS{__U_c2ENEjmF|_>8tKLN%^=d%6 z^g2=(7$j4FjriHue1RJwA(4Awh$|@xbtpSiVFxpLHl$!jbBU5?Q9@KKjM-2JpIRqy zN&^0=67YE8ybY2_ij9OWLJB}%v7@6}&zEX-!WSe12gG3p+K-A;UFMq?Wij9tjQIi& zASiJ;Qg0$(`e}d(>kXaKJXO>gU9g3@olONdciHmOj^UgKs*b}&B5d7V7ZE_nKRhH7 z`SmkG(qD&Rp;dGdR}VE=t8o&80UXebGZmd7Y$Khuy@foyFB zH|(H7yp|-wi4282{1;+MT20;j^e-Cz@7c_za;)RZeH4hk#3L6cShrILbfj3>osxKT z(gh<`e19PUa3qjjq+p>q2iW$i+dgiP@?Y%Ft7YMA!THX=ZJUq01q?qamt*pIq?J}s z0AYmnw+_`^JSh9oM}?Y6kSEI-G1#*elPnn;DFhbs=$!f;U@>reTWsc4MXT*+l8OO7}bEmiiw;LX-~V+-|KQcfZnq2;fvZ<&Ls97xa+` z7v_NH=*4;ZYJe!u1wFZ6WyyG;ccSsl5>x>-1-a$U$IOe^R2oq9eky53hfYo;qYo1Q z#9k02=?B=SUFoOfU|T{J%3B5oEG2vu#m50SXt#@!hSqNJEN3} z-E9&}yr0u#L;4Rrj=+%uq%oCa&=l3m^};7nqUW7GCy z%wx>L1;YOf2uN*E?#<1mHc3L$$6?VP1G^X~`{!hlQ=T}#EMDCa{(P*%*pi@~SLr*? z-<`2vtJPAmW+iuF_ngxuj9E2Y6;h@wIh*#ei0Sv~@T8Hm1F zC1tupBF##X|grJ^L^D^SP zlqTBd+!M4&#sESS=u*W}DJN3>QKHhII5(CXBp@J~pr2TL$G38)P|Sc05@wO29gfL% zk>ml)KLGRz=Zh1q-|Q|IIH1Z?LvciQGUhXss}r?A2^uom2E@}KBegoLhv2C{+gm`5 z2mSd45GOxunm@w%{JPgM2#c{SEYmx8xqNPM3GNS5^&sgZIc+sHOfU!O@+w2g#tzJ0 z<6;*LLJZ*+W(SG-0RkxvTF!;Ci6*gXECQNmY){3kX%zr{VL%XubBv42twsw<6~A~` z&&FBVfi4NYHvGr|A%;gHg40*U-U$VO6KRgleMfRKnT#qv&sd3*#nkZTJKZnx%a}v} z36GT-E|$J-PJ2p`U6DMUQ5swwCayL#VifucVT{4Em}6J;KJI#GOTou2aiKb7oLwgCC$=R=)d0K#&`>>A7S3z2<;#red7 zZDC(me;vdnRr|Q1oU;kz6dP0p+&NWA&V?ib$igigPXKU&MI%3<21sDoz;@Uq0i=-t z2pHq0tOR2es0I7jK9ogBqcGIg2AJj3p&!t$%nNQv>5b6?`j&p`gyH_tP_xlSd-8$R_p;w*LJ+=cJh!yMarT9%05Bwl{TP&UibUNALae(oI8g>n2c=3P&+eHp zRI`TWbch%z4+g)h5pQn^V%?!1F<}E{FfdOE={#RWpATh0lu1oWR`swld zfRwjRgjiaW7Y9*1Q9yX3Q>5$GhHUETEC;l^xHO%_o!%_xXV5M-GIcylD{JGQ6(-6s zia(i=56KR;4m@A#=K4mfZQX=k!}uR`XfmD$`6}e@Dl7Hjrt@!Sr?(xc{!S z&2}xC%_a-~&OG@rGQuejH|)PHovEpbf4V5R-dU->r3sa3{cXUL$SX^p^_E59tP!=Z z?UMD5s(0cs-a+I>n$S16N-$E7-st*)8$q)!{12&KIF8{mO{|9-qioO({)O75J@e=c z4@#bKN9Oy0LXu-w#3YIoEDx~0&~#KwJogIW;}UH2CuEbyLTSUn0{eV~tlcL32z%rh_~^elC3TT_VR>yd zYZ#6Zb3%<0Os$9$pbA{^MTF3vL?3_@+zBZyh;T!Gcf9Z4S=C1(=3I0g*>6MLtTz3n zB?#15^APW(6Jd}NEpWEt!%6TT_9jW!83nHYiB19Qp;&I-8G`V-z7(NR#KWR3h7PE# zSLNpp$^_WY@*F3gc4skJ55xWqz>YTAg41nb&@PpQ7o-UOforyu5i=T4e0$IfE%^** zDt(=LKB~`2wxBbS-e9Y7VqcKwDwZ(^Q7*N`MbJrZ?zTf zU1R?2_s=~}dK0XYY*L&(*BxMiNF-;eN3SL}NPzGAb?=4AMrpe>ZkOmnbvUe%gJPvs zzO!_omp3KF05W(X>4ey_#HdLE6Ad06snon56`LS9?llXrQx@V zUI%U(3@5{WTkhcj1SC=rqrFJs+zR(V4UGQ=$RrHY_4mM%X5A3~uIISWNW4#&t)2__ z=YpQh__IXHQq5&ksaj_G3Mx+a$5cr4kdh_OHG4O1sAD+AO(L=?V#a*=vL;TR23)Z} zu9X@+IK4XQM$T%wWEOv~Q0zTm27S@dki7Bo1SRL^!K`ZU1Nz2t# zWkom)qW+e|>aT^w_>A+HwO}0~u|}9CeEPw)1DY%qOvGO5<3lFr>jccCHBE!F@`^Ij z@sUx-@-3~rCaQkLSXQ)$r`9Zg*LngGlqz};qj!7ODjL4hx-dgLeJYEZxzAZOEaL4z zU9l36*CYo1^o^lmgD`$NLaz;j@3dI%ks&qefm!Hjr&g(G5XEbJg<4TVe4Qw;RWC=p zt-w_88zKmlH9{0|p=jYn$9wM2##x++ay2jPGyYK-93aw3hAvF?mZ1}X2!jKl@xQ2w zbLQ%~qeZcR@2O%&KP9o6Y008v7`Qqu)b8q`+-&1-8~*4c35S9y2M}UY5Up`sDP(n2 z7267UYiN^(&F7`34>&RrVuV|0^^?{E!oQsFGaFnPBDiPIy@DsV;>2QeG_R(SrqJVi8r}oaU_txZ-7nk{;08~Ed5gF)L)Ju81JFsToLpp z+^?XHYE&^GoPS9@{0JbzNz^Cdyw@b#29!%2N zXkf3*J&4%jkEKxi5KkMlHt7EWP;nj9bHX7G#Ok9F&e=`ENn!&BU_Q2LdU#OQ1z^}D zv<1WSB=*%Pkt_tKp?wl;Z9j)TDVLPtUUV<}$1;X!kkm1mHrGW<&1{>q(xBLjhQ+4fh34^ zDdZQZStu9QvePO=56gu7GQp|!HA>jC{{?!=i%>l0%3_Bg&W(uS<7UJVo;>}=N>Ygu z7#yL=OCQ-prJz6))Cmz&Qv}&AUGVP2gR2uj5?^U|+xYHZ)8mcAI=aFN3xHD2baHnr zqVA%c^^Sbd*p8cDX$@t5X4;+nBl;^Q*Q`+dcOgod&mPtJ5`VuX2pi;8DK*py;H=FO z6-84i4LE|J?h{d<^`j7N_X5<68{vSpUnzegE<+Y96)4l#bAJYzkbd6YX#X%ZUyQ2! z%s0%gcL@9uPI*I!0d-ebag7Pbo-|6`@6HGyBRlivjs7yP*sq0S=8v|DJuqDpY#DD* zNtqfCS82^S;iIeL4b@>muyaf6h?l*5a8I!Oi^7k2a6}zPFRU90^B3Mg5~Rd+G>_Ex z3^C}}yP4*mdrUF^Fw5XDq#thjV`#ei#d9q|Dnxo-7LI461RPuN{?7#E;SpDOQ489o zND#mgY1|Kmm{Mn1Ld~YTy)>i@L2R^=x~y_=aXl1?OR|Ljo6UNnN^f^9I{uhM+589< znHVq6MZ0fPpe@+2Dkhq|h?xKo?hX^oWOojjY8e4Bo}d2@qr(H^f1>GfBTm{StVsFm z7KXd)IDHNLoY$|6 zot2bXf)tTqYw*{9rztE2L#E>IdB6aSzr^AppXNepBQ;86k+(8cw;oDm#xTJA^fErf z07!>I6kiTF#vcfG%H~{97Bcgzzd-@MDq*&=c`~P2P!5#rh={=mu0JdU-kU>(ex$&b zvkOzg$faur_j$+-ROBHT*$R0oAh|NJ?;t_hoZhoh_U&~{aQ^Trw9xo; zka@6Em!OvKo3W&Lh~K#Y}g<_sn|2buZLT))9dYRybo6E-6sM8u=W z?AXCu9z0#gkw{%Isy+BKKe;jDVb^|e_V+#6K7;)DUGyca`vi#z5C|vyZOD@(@(3cX zIsQuwKil{GHc7e~_aX?_DuUm6npuDvD$1(X^cWx8BTGVs*82L^7CR>BGiSpW5WLRM z{@o21Kvcl3&-%H^Z~rThLGv%;`VADbje40r;F26H_+9fYkwsE>eC+cl0>FMN>67uA z|01Fu++!^3J~Z^zr0yFxrFU9*nvzef9HMg9yVoz(b-G6SHSgDXM&#?42_e@hPhd(ZV^QT#7Uu_n{|KMg^aSI)50F~1DhmV&%$9Vr8&Ea zHD#Ul^yZ$zClTy3f8cft((c^cw_Hv7<>O~lro?)c8ROp=o_0Poo}*+2a3{r*%jK#} z5;bCsKW{d3tH;9_IOg+-Xpj#JQsMx%r{azbd&`r?`=g{OiRG>UKwTw-;j6%kmV^Z9 z!$?(1%H()_yQXYGQXiI^e%rxS)j)9yqfOXShFd1;NO~V@<|8T^5ZggB7Lga2<%2T; z0n9paF5A6=hIRh-KgVutT;JxFU4aLa(+SiQU)92TLJYyg+Kz~-<_s%aD?eKv9+kkpPjwvaTbZrCw zGfZ!LDX_4X8_0Y-JNV2|J>pP3Lq{6bFxGXhaz#a0CriW?n(+`FXBBKcKU4dDV~xhX z`Z9<2YMWcUJ6@AqoSkOdQF%_=^QVf%JA60$dVGJrunk{>0l5;2)l`1B_ipJwJoXhq z+xufxCXMg%VJN(Z2u$B=_!@^-9z zT^nAcu-hFPFcY~QWvHb$5Xc(=0!bn>hu~g z#zooVuayU>#$GfAM(=4H8bWw6rzu)JX81~PPReA1?`iV{+2+lzEK!%L+xM9uS%S*4 z|Jnya0mK*8|CptGS;7ApM9BZ_rONyNv3>JzM=1@&YOL$}<6pY9R{hL=*B3hhM2Fe^ zy35c1TC#@!;moV(8GYn@2&j)>4NfQD&;BKLjnE zvNhRXg~3Z+p0@0wq`eEkK=J^%Q3jvP3+H}I}fd~Q46JSQkY20O@C zhBP!{T!1P2?dL6x3#ZO&nUIy@0RM(+pBM>N55&!GNB^qF9p|U3DqJV~j1JXysZo*s zlq9}vpUh*QrFrk4amhhyxQYDlYPGlt+p1^PbA z=}LfjSh<-;!U5)K|H&Mc7G@P}|ET>i=|PKje&YyFx29Aw``#b_cBOcUVz9`O4VLgApdl-5f@p88C0%yt_Z8)0#~ew&nF@UUW8r6=Ets{gK?SG^K-3 zI()vphd?0wty zZSWo)rFY1ka^%D@*y}5T6Kev#98G!i@v+X-fx|mHvU;t=4*}mOJ%Qf~-AO*|`uD`O zJRv!L+Z+z@#$QVLkK})^o+B(Wi1F+=hIyQ+kDIrWaDoqO8Ton9ZWa%;JHpT>Z=v`P z4_}I(qZ{cxQIg2CAdmeFd~K}NC$(2{yL>T<{~dZmpZMO=EwSmq@d|-lVKZ^|LUs2f z_UPxDaANks_4<0Xj)MTkDtYg}NJp5LAE8M5wy@De16j04x;}0D2aqiei{HJ@{5x(1 zgw)o`M6{kJx1LVrZSF>;Kd@#<;@YBaoxe1{xwS&h-|u$XVisb9ah~8VOd@mM?NhK~ z?$mtv{m?nJ^lpw_vufa0uAlMrt+dxb#|W%~nNd>}x$SLO%bS$jLoa8)DW%m;vk4VVNmUE~MF7(EH}S z!{Cmh<4O+8xn;jFTa5`6VuooGY;Z%G7>pZkPG@ucW{z%rOM^`GG?gas6a;S2@MN zSe@M3&NX`nb<3mRdVZ-U)24ew7wIIw6Kw?{$MUM<(w-AnM@DSztbX76Z7smH^nLZ< zK11?yxj*4tqc>x(bj?TvJX`2(16pQz5a2QY9Y`#AO|JO-<0?}h$=%XG>(UQz*W7^txd1rNV z!SK0>1wsw27#x$vI_+eIiZ6n2kMS_;382fS+%*wcqGcs1_qm;h`=P2bVv9Ca={R=HV0Uz>lC zg=TiuS<709=O3!|dm4U9nVnl}uXZvQ@}N59lEnjfbY5CJ_0O^#&4ET#n(!on96?suSO6tEuaqa5{BKS8w;Xp;P1x&`1W^x zl8x@wshI{oCrYyW;Kh^e4i4|LijiICR@Qg+?tgYpaMpPsfD=c-4immQv7O}r&Km4k zZ&Ag=h#$`6xkB^^x{eQvh$f^})SoNl3jj8H*RCn2ucfiBe#%MG?YExCDL0oVgsRVu zU14U46lgXSRoq88DYOLufFMIcSWtO2)^Rb-Dfy9N)8-w;7$TRs_)t2U)p2^4_XgCf zsQg(n^BDNJFQXO^`Pv=D0Z36!5i{G<9;H}ru1L8T%+0^|cE6nr%}SMfx2<}|tFTy~ zCFl`ssY_+OBO?l3R0dgDJngu(pIUmr6G0(Og*(XYykt2*3dTA19SPQm$&9g_WoBP2Q%cF3aox+AHzH7JRB1 z+d9m-KuWBO(xoxP9X@-$s9jtC?%G;CT~;NB4oi;@R8NX@ZUEntGcl0#`ZuP`>*|7p z#eJ1l2AN!*<|03uIFdtOwHCJkvl%m71FUnGX*D$IYk&q7N%ywfc>m>I%{haO0557{ z^0%ee-FZk8ToCXt-lP&kc`01tYuS!Jy@zHa@gneinN?*dlW!2+2HsZs5xmRS$z*p7 zVer;g!NkKt#N)KWN7$0X(MfN2U+*RBJEo_$&bSCbgzBl zZ0t@gowhtC;K=pLtbM@=pPIh9jH*ol@yatGcejaMW7@W62xlkVSX%qz;vW?Q{wq={ zz@LJv136O$Q^~qUUD%528!VoyEXeB*Eijm&lH`87hIu&K>I^K|6eVQGTdBROt*xN@ zwn~nwckWm0`jl=`9;B-Vyc*8qDz^bSiDE;WU~m5G+aV{liv?gm@C5gG{Q622UudBn zu9r~pIGhM-sXW?$iWi#Vj-noyvU)llftMiz#K-V{LN!;n)Rk1+&mU2a2OV;_q-3`ij|DEG=l%H|JwxW4X4u;bL3s9`xm?e@Adm zR7j>Qo3b|o04RtD1^p&}Ot$t4MsnC7G2UBiW%y->V5PTswrYyW4iAU;H^bDrv9)>W z+$3P=yU`8!S=dXe5#IkjX5rj}cIw43_>WhAMT_oVdE$Wqif$I3Ayoq$M#lH}E3%z7 zM=rV0#eb-v_?t)b-G@K*R?~P^Sx$TCyV*u70RVSzD?V1zp*F0=Ka-tgLyS7HL(yC2 z8=&)yt7}gyMr@zivN5$85di`XIQ*_qQY+-4fj^5qO%@#|Zq6r_gp1^#YidKs*40%s z6)Txm-`0P;eM@wZZLuExTlgRe3o#+hHoLP;+KZdf(jw^N058 z=}dEIf4QK_3aoFpUVK6Un{5*Ha;PtmH~Xqifdl|`&;9C7Jg*w=5{g|q?n(>M1r+bw z@@Htya~PXTY=nMgQUvCn7%{)%K2^L%BhIP3|7KVAoq6|LP>(#Op$n4-kS#Re0& znbua&dRm*b*dZ%@R|T6~(D+jz)Bp#;KsRBseF(h`pf^%m2wh1@;ZZQ_v-;e~%@`ZF zeOZt*pwOlCtYUi>m33dKbO6p{mDuLXWiXP+yxv^BwVZBF_wL5qGxr^FbOU{6+PQS>nI6sto=utbB^=GOR6h4AgwZ#ny=@~ix>hx zKK7f~8#5Y2oW|iIy?x>-zAzK#-D0|fH3YI&Hc3|ZR&&*p^<3=4?Hl3^n)$BF~0 zgnB(3=3{YdnW4Fq@ET)1 zO=%qW(`or#gJ2^h^H940>l3TGc#=u*lpX|=fSyn2-`0%#?p7n-W z{atLM_p&{5U=iAX=sqvZJcEVoJM65D-jC0uZ~!0-^m7R3>4b-;4sVf++wvW~R?Z57 z178?`tO!cDss4IfusRbPQv7_c_YQ@lsy`Ywf9QA~lZ9Ag^a;1T9Z&*Vdq{2cQF>IU zrhuRK-f?xa$6x4(UiC-WITN8rj)BJ>uOsOCw0vkTBOiU_R-A_OD?$1ujUV*h ziRHZ&lin@wQ+IL<2p5y;-G^KAXSRcqrw=Z4Mu(+|j9} zUpw=&FlqbJD86->FhK|SYY)~?5zAdNw>ak!(L0pzxjlC#*$p1Y<#t!v9fP>KO%si#}Yh|_@A+VxTVTHci&*!lYH9`yUdtFQbs|$Un>+)()h&%S4Uym;4p{4N^&+fo* z#J$%G_dAR$JFqea-5&bfx?b+Ahr2%Bn^A5&fN;Rwni^~agGA;Ui)Y~l_uyz_8TCv2 z^SmD3?v3D+_&EA`r1&)$Bla!D*{rusjQuYSLo+a-z+Ib-fTlC$5mo}#b74ZVK#o^MBbS7XY;kXJOrqKJUkNWno)_R$6c7rjIOxa#jkw9 zklVo}>)*#+D=DMp7#j_fiqV7ZzG=X>%G2URhRPb1q(zXfi5aK97xet6FjL(aCPu5|oW>o$t$fp6-Orl9B~y@R>Vd3OQISr1$0%_y zBsY`JB`+VL;+9Hw3e_6xM_Nt1tYL@1@Cwhb)*iE-*#JQ7`VKq0Cu*}?Bxc{owF6u2 z?xGk6WO(D6_tSFPwvD4oel(P_A~?is0IhRq{V77+>etSZTSi*PLtev9heqG1`U?T|7ysLd8d|rlKR4u1GhymVT_w zIx_TdPvxQS zJ!>tLH-A1(nByfsxpOPKv!$sQCy_OuXN#- zWIBC2nx1Ea0Ngiu(IB04|B!`vV-qSlhQGW7JDlchTgh44>8vz=Wq*B`4VEpGqWRzM zSuEWNyRp->Ky&D$P@2evw($R@9Zd%DCnftppESQsWvhSP>KDVBsBnvz%h3T>KFgzv z?d1NIv}(LjfIre$h~OH|<`4I2wZ;=b^Q`CmCWg1L<_Kb{wGRq#%C^K=DV#T?i}3KV z;Ggglh^ND_6qy$woS|9&bx)Gehkeb#}SsBN`%9Y>jEG9i1;~p56COp z#QCgVonBe3U;<)g;^_zQd{q5HOJI_w9Gz78A(-(`W|;-ix0gZp7=s?)(!D8BE&TLi#l-%`6=1) z9VuC@3g6Dxj=KS*S5MF(JIYl%F|?Az^%U(tt`o`F20!P-)m_hp`#Ve>`iWidb9#az zI5+tIj%ts=xzEHwbaZnd?k7Urue|xShdK4?+?XE6^yvXw+ee*`wh1%$#GEDT( z9|J9dLGs9!o;)LTku9V`kNnlA0Y{L)cyh8(j;VjA22ZF6To6?_;k7 zLhUcVo!iZ?gxewq``G z%bL&ruBvsNzq3IOXo$_wxb`t;>i@}VW$!~ep>b;U<5TDO2J5WXSxLE`r7<@T{tVKS zAhd@jvP;P9^aCGY7q0rm+}XK}#hsk+xw`Knn0fD+xwrq)XN4NjJ3e_e@oP7KZNT*C z!r1@ja{BNT(<&nNHZf>d!aQb(qF1HWsFdPb4YaT5tQvD|pbUgZzsZb*Fw8ilD18(9 zV>W`GTdvFJ%X?(45F`A3_pl3>cb-|OR&!tS>(e{dSi7Za)H1%Qbujse{^R#P6_gID z(~167gBi>!b8f_%OSfIicDZ}o;DHAbDYeKYxw;-x9HRogv#FmTIhPJarkS`GsS~K26Nz5JL?w6ClmmnN586Sc3 zoFPb^7l=1d))5nWnO)`5bEb$jR2_aj#n0^yQH;r44{q2M)goMne@M%u4;VvV7RR)v zAUDRC{{DQFt=7ruWz(pX`BGRqka}h4k}=#5yp0e90BCr(P`VYbbpu{5aAOP8En@o~ zq5rjQW!x^mMtuw`xPko8<#RoLq=_)NFSz9cw~OFiiD-PpWc*8S98ez*T*ixOdFnGP zw(}wHS*E-W$I-2Xra|1Air%XiNtc;t4nv{F7F0XP!M@@!p&&6%+I;tEzm{B^SKG#4 zYn|jg9<1|4k6=WVmxECe(OUcyZuIZzP2UP6bbS?xYfYdY1(f5z0k&xUdiSQuUwt$|&K)(>pfsFH z489jd#%N)R`4luD`v^Y7YOK2fX}wCL{AznVJFe%^pgY~eg9K(Y9>wHrfy@;YOe-LL z@4eiP?{aD&|GuKnj}el-c8{iBR@DiHyK8!IWO^HYpT@e1J=N8h%+Yx6sFVMl#0RHH zha!h|6v?>UZPC-NIa9ukW#vi8iIQt%Djdza=g8uMsrMSc_{X{=?iFbW8qz}?Kt&;qC)#$s7qtC9a%&5*gLJvu2-%5N0)6*)_Czrli9 zMgM5{Lt7oCt8=xprrudlsCcVRiSoCSAVlX=p_mD^4lWSoq-UonOgzoI;PQqN0aO zP7b-1TOJ+xS-Wd)WG-t{NEQ`E1j-T0kgJ~;wtBENRR{W2$MsW94 z+*;SunEDx_JYe-pqV?rMRttq2^b-G9X?Ok(_4Wq<{DX?f5<_IGi()L1oh;q5T?*L^ zH%11bVa#N?j6s%=WE*2&LWXQ%gt25RvJApBmO;qAGYDVzyFB*~`2O;K&hviW=l65o z@8_HsrT0WJpwaIKV&L&ez&7GwtZ+D{19R>LK#^cOpAz@s050LjRB z=6+hg-IKupv|O?pzJx#-`etw{jqa86X*D}8zQn(_Y-#tBLDr ztG7xp1hePVWc)_Omc+gJyDEB-$!bT=J_Pdkgd?wcPVQ11BvOw{B+vSE>+(HjumvD6 zJfX_E{}ZQ!!7(nz+G7bi6YU{42Rmzry3I8~q~!|3JkC#7neY}N1GG$?Zvd51J3mgM zV1}z%5yjKY@|7a-B(TJ+L)sZHyvVtqnV@S|6%*$aalwvoy3@5`JRa0X#abn^T$%j% ztR_pnZ(rTT?L<3@@xoo)8VMizrT9b<=j1Q@3zO;;$Y(=W5IyQj{O%pYoUBQEYRM6j zL-JYX8$P+*!7yM$T(6lp#eTg;pOcDFlEw&{YRvwL^PlvuT|ApCZW^5b(I9%3rvx7L^Y zTW;qYoCCgZsS7LbL`I`Y;8IiO{d&>ae)LGv__L>oC&mjJ4pQ`P4ss#`OdMwlJ(H{G zfPM}j{&zHef-O4xdUwxCF2~n=Nq6WFSr+`LC+?f^hh%mQu?ut<%s}c{ho4HRn0W7q zffBWP`1ev>hgOI&f@*^>^+vHA000fYb&N_7-yS^&gPp z%RnffPLPc^NQy~!Ex=}JOk}jNd<5ZBu={e#J(jO~WvYZ-7BIktF&dLkf++g8ca6Fa z^2GL-uLjlxs_@ah-{KjadWJ_uKJ+qqXP^KuB_Z3rW^qrK`C1>D6^YyTJ6C8|)_GC9 zjM~e!1b^*CtZmn14Wvj&^cLMuSo0L@Q?trR7d>uKJ&IaizG_jm#_*nQ0JUOM4`8(?0g#^6H9;8@yg2Z;NJ9;~!T>4$6fmkStnW1-dN zV3(#XBZl2RNc8T}AsW8I>Sa!Fn|?T?e~C{?#_z*7Q`fp=MrfamC)oIQB!jn1#|C8$ zZMU8;cSz-c!0CVuUhV?;e#%u33i+A?p3uVuhq-^DzCs4#4TI~3-XyI|eWSgJ>fXue7uhea9=tvRPoC7a5+0p|@Ps>5b zn+a3I*}Ob|zc+{|3>owF2no$x%bo9VDXK2m-8+5n9qFg^I~kh3T1qj(isDY0&PWQrn|O=!nj8ce=hSNFF~(vr(?g}vjNV;QYhd3-CuQ%w{% z2kjvxRLEBnN;jVCJ>XCuNS@a@wY}2Oj~5u{CX`seL-%f$;flPHIz*>xlxrC=kGxrR zUFt%k=XXx$7&h!T(~(JUwV%dR#6bDCVwOZt;~IxQrS~t z=c2wQe{E*v(QNMhHf#SI*I&;0AGI%|Uc|T`r5YL>L3DtDq1254OXHf5BL%FS6S6}5 za`(}ct50WGU6FiQy_YDXv#y6+gj#=jw1*%?bRzTXtr+fc%3k(kFIp8@zIJSIhB`TV z7+1RmDl9EL-w-pG9k-~1tdxUcpZ(nKbo+yGgNN+QLO9;(?FAae9G#S$Iymo5=e+}u zw$^H1Xy2Erj1bI4{~TRxR1h(@^RkLnG^Tkg$tSRd7qChvG!a zOG<2pp&M%L2}oZF>GGO**QnsRDTDHCM*gt6WL4hlA00LTAaV~k1Lqg`>w%$fjggAJ z>}X~4@m*uLUWWxkC$jyJco%PTzMZ)#RRscy`ebUE*jNo~wEzH9>;uknuE_?`X*#u6 zOpA*)7S_bhxUjNG{=X)vrLxk+ve9egP9>5Q4+GECDyI*S>zEAtso{YP zc`$<1pL{cU#TIQ}Tj?SFmS>v-Nfz(=DNoN+n7OI}->cFOB;t+) z^1k0%zJ?(?%UJSi@jA(MgbhDmzEI8d6(U}zS&0sCNX)B}F|mgpts}ahnhUt^Se#x% zZfnNib+A*`b*%%V19H?V!?FyRtzcgyg{)~Am1SF_xg&A?`bp<*ztHYB`ceJkCf6_6 z)1edZp^E@5J>x;}ZkvlX$D|he$B3{+ls8Q4-B>}-sB0XLz^6rzt5m9a_N&m zky>1mfo5;-*!!IRQu6cBoAHjRD2#%9`SQ>%tgG`kiKmJt`VNX~O9|8NsBTHxWujlS zEi2P`t2E_&D4)dL1ymcyV*vwR4T!wnmn3)-(IPPQ&ClcTuFSo|#)d8`d_WU0%z( zQk5U&Hm?+kpOAC{Sq-1F7_*YCFJk__j?01LIe*rpD>Y)Gt diff --git a/Documentation/docs/contributing/data.md b/Documentation/docs/contributing/data.md index 81eb8dc4eda..56f7716d9b6 100644 --- a/Documentation/docs/contributing/data.md +++ b/Documentation/docs/contributing/data.md @@ -11,7 +11,8 @@ generation) also applies to any other data contained in a text file that a test may require, if any. If you just want to browse and download the ITK testing images, browse the -[ITKData Datalad repository]. +[ITKTestingData repository]. Historical snapshots are also archived in +the [ITKData DataLad repository]. Setup ----- @@ -43,7 +44,29 @@ associated with these files. Generate the *.cid* content link from your test data file, *MyTest.png* in this example, with the [content-link-upload] web app. This app will upload the data to IPFS and provide a *.cid* CMake ExternalData content link file -to download. +to download. This is the easiest and recommended way to upload new test data. + +For advanced command line driven uploads, the upload script at +`Utilities/Maintenance/ExternalDataUpload/` can be used: + +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ + Modules/.../test/Baseline/MyTest.png +``` + +The script adds the file to your local IPFS node under the UnixFS v1 2025 +profile, pins it on the `itk-pinata` and `itk-filebase` remote pinning +services, and replaces the original file with `MyTest.png.cid` containing the +resulting CID. The CID and source-tree path are also recorded in +`Testing/Data/content-links.manifest`. + +For advanced CLI usage, first-time users must complete the one-time Kubo + pinning-service setup +documented in +[`Utilities/Maintenance/ExternalDataUpload/README.md`] before the script will +succeed. Contributors who cannot run a local Kubo daemon may instead use +the [content-link-upload] web app, which pins to [Filebase] and [Pinata] and returns +a `.cid` file directly — manifest and mirror updates must then be added by +hand. For more details, see the description and procedures in [Upload Binary Data]. @@ -142,5 +165,9 @@ the [InterPlanetary File System (IPFS)]. [CMake ExternalData: Using Large Files with Distributed Version Control]: https://blog.kitware.com/cmake-externaldata-using-large-files-with-distributed-version-control/ [content-link-upload]: https://content-link-upload.itk.org [InterPlanetary File System (IPFS)]: https://ipfs.tech/ -[ITKData Datalad repository]: https://gin.g-node.org/InsightSoftwareConsortium/ITKData/src/main +[ITKData DataLad repository]: https://gin.g-node.org/InsightSoftwareConsortium/ITKData/src/main +[ITKTestingData repository]: https://github.com/InsightSoftwareConsortium/ITKTestingData [Upload Binary Data]: upload_binary_data.md +[`Utilities/Maintenance/ExternalDataUpload/README.md`]: https://github.com/InsightSoftwareConsortium/ITK/blob/main/Utilities/Maintenance/ExternalDataUpload/README.md +[Filebase]: https://filebase.com/ +[Pinata]: https://pinata.cloud/ diff --git a/Documentation/docs/contributing/upload_binary_data.md b/Documentation/docs/contributing/upload_binary_data.md index 905bac11932..b94e1655b29 100644 --- a/Documentation/docs/contributing/upload_binary_data.md +++ b/Documentation/docs/contributing/upload_binary_data.md @@ -34,34 +34,47 @@ adopting Web3, we gain: - **Sustainability** Contributors to the ITK upload their data through a simple web app -that utilizes an easy-to-use, permissionless, free service, [web3.storage]. +that utilizes an easy-to-use, permissionless service, [Pinata]. Data used in the ITK Git repository is periodically tracked in a dedicated DataLad repository, the [ITKData DataLad repository]. and stored across redundant locations so it can be retrieved from any of the following: -- Local [IPFS](https://ipfs.io/) nodes -- Peer [IPFS](https://ipfs.io/) nodes -- [web3.storage](https://web3.storage/) -- [pinata.cloud](https://pinata.cloud) -- Kitware's IPFS Server -- [ITKTestingData](https://github.com/InsightSoftwareConsortium/ITKTestingData) GitHub Pages CDN +Contributors upload their data by running a small shell script that pushes +the file into [IPFS] via a local [Kubo] daemon, pins it on redundant +community-run pinning services, records the resulting CID in a manifest, and +(optionally) mirrors the bytes into the [ITKTestingData] GitHub Pages +repository. See [`Utilities/Maintenance/ExternalDataUpload/README.md`] for +the one-time developer setup and full workflow. + +Data referenced from the ITK Git repository is stored across redundant +locations so it can be retrieved from any of the following at build time: + +- Local [Kubo] gateway (typically `127.0.0.1:8080`) +- [ITKTestingData] GitHub Pages mirror +- [Pinata] (community pinning service, remote name `itk-pinata`) +- [Filebase] (community pinning service, remote name `itk-filebase`) +- Public IPFS HTTP gateways (`ipfs.io`, `dweb.link`, `cloudflare-ipfs.com`) - Kitware's Apache HTTP Server -- Local testing data cache +- Local `ExternalData_OBJECT_STORES` cache - Archive tarballs from GitHub Releases +- Historical [ITKData DataLad repository] snapshots (older content links) ![ITK testing data figure](./itk-testing-data.png) -*Testing data workflow. Testing or example data is uploaded to IPFS via the content-link-upload.itk.org web app. -This pins the data on multiple servers across the globe. -At release time, the data is also pinned on multiple servers in the USA and France and community pinners. -At release time, the data is also stored in the DataLad Git repository, served on an Apache HTTP server, and the GitHub Pages CDN. -At test time an ITK build can pull the data from a local cache, archive tarball, the Apache HTTP server, GitHub Pages CDN, or multiple IPFS HTTP gateways.* +*Testing data workflow. Testing or example data is uploaded to IPFS via the +content-link-upload.itk.org web app. New content is added with the +`Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh` script, which pushes +the bytes to a local [Kubo] node and pins them on `itk-pinata` and +`itk-filebase` for redundancy. The resulting CID is written as a `.cid` +content link in the ITK source tree and recorded in +`Testing/Data/content-links.manifest`. Files ≤ 50 MB can additionally be +mirrored into [ITKTestingData] for GitHub Pages CDN delivery. At test time an +ITK build can fetch the data from a local cache, archive tarball, the Apache +HTTP server, the GitHub Pages mirror, or any of several IPFS HTTP gateways.* -See also our [Data](data.md) guide for more information. If you just -want to browse and download the ITK testing images, see the -[ITKData DataLad repository]. +See also our [Data](data.md) guide for more information. Adding images as input to ITK sources ------------------------------------- @@ -89,88 +102,112 @@ need to be followed: Upload new testing data ----------------------- -### Prerequisites +### Web app -[web3.storage] is a decentralized IPFS storage -provider where any ITK community member can upload binary data files. -There are two primary methods available to upload data files: +The easiest, recommended way to upload data is The [Content Link Upload] browser interface. -A. The CMake ExternalData Web3 upload browser interface. -B. The w3 command line executable that - comes with the [@web3-storage/w3cli] Node.js NPM package. +### CLI one-time setup -Once files have been uploaded, they will be publicly -available and accessible since data is content addressed on the IPFS -peer-to-peer network. +The upload workflow requires: -In addition to these two methods, documented in detail below, another -possibility includes pinning the data on IPFS with [other pinning services] -and creating the content link file manually. The content link file is simply a -plan text file with a `.cid` extension whose contents are the CID file. -However, the documented two methods are recommended due to their simplicity -and in order to keep CID values consistent. +- A local [Kubo] daemon (CLI or IPFS Desktop) with the **UnixFS v1 2025** + profile applied, so CIDs are reproducible across implementations + (`ipfs config profile apply unixfs-v1-2025`, Kubo ≥ 0.40.0). +- Two remote pinning services configured under the exact names + `itk-pinata` and `itk-filebase`. The upload script looks up these names + and fails if they are missing. -At release time, the release manager uploads and archives repository data -references in other storage locations for additional redundancy. +The full step-by-step setup — installing Kubo, signing up with +[Pinata] and [Filebase], and registering each service as a remote — +is documented in +[`Utilities/Maintenance/ExternalDataUpload/README.md`]. Complete that +one-time setup before proceeding. -### Option A) Upload Via the Web Interface +### Upload a file -Use the [Content Link Upload] -tool ([Alt Link]) to -upload your data to the [IPFS] and download the -corresponding CMake content link file. +From the ITK source tree, run the upload script with the path to the file +you want to upload: -![[CMake ExternalData Web3 -Content Link Upload](https://content-link-upload.itk.org/)](./content-link-upload.png) +```bash +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ + Modules/.../test/Baseline/MyTest.png +``` -### Option B) Upload Via CMake and Node.js CLI +The script will: -Install the w3 CLI with the -[@web3-storage/w3cli] [Node.js] package: +1. Add the file to IPFS with `--cid-version=1` under the UnixFS v1 2025 + profile, producing a deterministic CID. +2. Pin locally, then on `itk-pinata` and `itk-filebase`. By default the + script waits until each remote reports `pinned`, which surfaces + failures immediately but can take minutes per file as the remote + fetches the content. For batch runs pass `--background` to submit + pins asynchronously and verify afterwards with + `ipfs pin remote ls --status=queued,pinning,pinned`. +3. Replace `MyTest.png` in the source tree with `MyTest.png.cid` — a + one-line text file containing the CID. +4. Append the CID and source-tree path to + `Testing/Data/content-links.manifest`. +5. Print the `git rm` / `git add` commands needed to stage the change. -```bash -npm install -g @web3-storage/w3cli -``` +### Mirror to ITKTestingData (optional but recommended) -Login in with your credentials. +Pass `--testing-data-repo ` to additionally copy the file into a +local clone of [ITKTestingData] at `CID/`: ```bash -w3 login +Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ + --testing-data-repo ~/src/ITKTestingData \ + Modules/.../test/Baseline/MyTest.png ``` -Create an w3externaldata bash/zsh -function: +This populates the GitHub Pages mirror gateway +(`https://insightsoftwareconsortium.github.io/ITKTestingData/CID/`) +already listed in [`CMake/ITKExternalData.cmake`]. Commit and push in +the `ITKTestingData` repo to publish. Files larger than **50 MB** are +skipped for the mirror step only (GitHub rejects pushes containing +files over 50 MB per file) — IPFS pinning on `itk-pinata` and +`itk-filebase` still proceeds for those files. -```bash -function w3externaldata() { w3 put $1 --no-wrap | tail -n 1 | awk -F "/ipfs/" '{print $2}' | tee $1.cid } -``` +### Alternative: upload via the web app + +Contributors who prefer not to run a local [Kubo] daemon can upload a file +through the [Content Link Upload] web app ([Alt Link]). The app pins the +file on [web3.storage] and returns the corresponding `.cid` content link +to download. The resulting CID is usable anywhere the script-produced CID +would be — but the manifest entry and the optional [ITKTestingData] +mirror must then be added by hand. The script-based workflow above is +preferred when available because it also updates +`Testing/Data/content-links.manifest` and pins on the ITK community +services in one step. + +### Normalize existing content links -Call the function with the file to be uploaded. This command will -generate the \.cid content -link: +Older `.md5` / `.sha256` / `.sha512` content links can be converted to +`.cid`, and existing `.cid` links can be regenerated under the UnixFS +v1 2025 profile, with: ```bash -w3externaldata - 1 file (0.3MB) -⁂ Stored 1 file -bafkreifpfhcc3gc7zo2ds3ktyyl5qrycwisyaolegp47cl27i4swxpa2ey +Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh ``` -### Add the content link to the source tree +See [`Utilities/Maintenance/ExternalDataUpload/README.md`] for the full +set of options (`--dry-run`, `--hash-only`, `--cid-only`, `--background`, +`--testing-data-repo`). -Add the file to the repository in the directory referenced by the -*CMakeLists.txt* script. Move the content link file to the **source tree** at -the location where the actual file is desired in the build tree. +### Add the content link to the source tree -Stage the new file to your commit: +The upload script prints the exact commands to stage: ```bash -git add -- path/to/file.cid +git add path/to/MyTest.png.cid +git add Testing/Data/content-links.manifest +git commit ``` -Next time CMake configuration runs, it will find the new content link. During -the next project build, the data file corresponding to the content link will -be downloaded into the build tree. +Next time CMake configuration runs, it will find the new content link. +During the next project build, the data file corresponding to the +content link will be downloaded into the build tree from the first +reachable gateway in [`CMake/ITKExternalData.cmake`]. [Alt Link]: https://content-link-upload.itk.eth.limo [Analyze format]: http://www.grahamwideman.com/gw/brain/analyze/formatdoc.htm @@ -178,18 +215,17 @@ be downloaded into the build tree. [Content Link Upload]: https://content-link-upload.itk.org [CONTRIBUTING.md]: ../CONTRIBUTING.md [CMake]: https://cmake.org/ +[`CMake/ITKExternalData.cmake`]: https://github.com/InsightSoftwareConsortium/ITK/blob/main/CMake/ITKExternalData.cmake +[Filebase]: https://filebase.com/ [Git]: https://git-scm.com/ [IPFS]: https://ipfs.io/ -[ITKData Datalad repository]: https://gin.g-node.org/InsightSoftwareConsortium/ITKData/src/main [ITK community]: https://discourse.itk.org/ [ITK Sphinx Examples]: https://itk.org/ITKExamples/index.html [ITK Software Guide]: https://itk.org/ItkSoftwareGuide.pdf +[ITKData DataLad repository]: https://gin.g-node.org/InsightSoftwareConsortium/ITKData/src/main [ITKTestingData]: https://github.com/InsightSoftwareConsortium/ITKTestingData -[MD5 hash]: https://en.wikipedia.org/wiki/MD5 +[Kubo]: https://github.com/ipfs/kubo [multiformats]: https://multiformats.io/ -[Node.js]: https://nodejs.org/ -[other pinning services]: https://docs.ipfs.tech/how-to/work-with-pinning-services/ -[SHA512 hash]: https://en.wikipedia.org/wiki/SHA-2 +[Pinata]: https://pinata.cloud/ [solution to this problem]: https://blog.kitware.com/cmake-externaldata-using-large-files-with-distributed-version-control/ -[web3.storage]: https://web3.storage/ -[@web3-storage/w3cli]: https://www.npmjs.com/package/@web3-storage/w3cli +[`Utilities/Maintenance/ExternalDataUpload/README.md`]: https://github.com/InsightSoftwareConsortium/ITK/blob/main/Utilities/Maintenance/ExternalDataUpload/README.md From 9664d8d3ee7d892d72526f5b6e460982a04651d8 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Thu, 30 Apr 2026 14:40:13 -0400 Subject: [PATCH 07/23] ENH: Make itk-pinata pinning service optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pinata's `pin remote add` endpoint (the IPFS Pinning Service API) is gated to paid plans — the free plan rejects pin-by-CID with PAID_FEATURE_ONLY (HTTP 403), as reported by @hjmjohnson while exercising the new ExternalDataUpload skill. Filebase's free tier still accepts PSA pin-by-CID, so it remains the baseline pin provider for contributors who don't have a paid Pinata account. ipfs-upload.sh now splits its remote-pinning configuration into a required list (`itk-filebase`) and an optional list (`itk-pinata`): the script aborts if Filebase isn't registered, but logs an informational notice and continues if Pinata isn't. The remote-pin loop walks the merged ACTIVE_SERVICES list so Pinata is still pinned to whenever it is configured. The reorder also surfaces Filebase first in every user-facing list (storage locations, log lines, manifest-skipped warnings, README setup section, contributor docs) to match the new "required first, optional second" hierarchy. Documentation in README.md, SKILL.md, Documentation/docs/contributing/ upload_binary_data.md, and Documentation/docs/contributing/data.md is updated to reorder Filebase ahead of Pinata, mark Pinata as optional, and explain the paid-plan restriction. README.md gains a troubleshooting entry for the PAID_FEATURE_ONLY error pointing at `ipfs pin remote service rm itk-pinata` as the cleanest fix when no paid plan is available. Agent-Session-Id: 40f8eba4-dc94-4d4f-94bd-ff3d2fccf04f Co-Authored-By: Claude Opus 4.7 --- Documentation/docs/contributing/data.md | 8 +- .../docs/contributing/upload_binary_data.md | 49 +++++---- .../Maintenance/ExternalDataUpload/README.md | 101 +++++++++++------- .../Maintenance/ExternalDataUpload/SKILL.md | 19 +++- .../content-link-normalize.sh | 5 +- .../ExternalDataUpload/ipfs-pin-all.sh | 4 +- .../ExternalDataUpload/ipfs-upload.sh | 41 +++++-- 7 files changed, 149 insertions(+), 78 deletions(-) diff --git a/Documentation/docs/contributing/data.md b/Documentation/docs/contributing/data.md index 56f7716d9b6..b1b2c9d3aa8 100644 --- a/Documentation/docs/contributing/data.md +++ b/Documentation/docs/contributing/data.md @@ -55,9 +55,11 @@ Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ ``` The script adds the file to your local IPFS node under the UnixFS v1 2025 -profile, pins it on the `itk-pinata` and `itk-filebase` remote pinning -services, and replaces the original file with `MyTest.png.cid` containing the -resulting CID. The CID and source-tree path are also recorded in +profile, pins it on the `itk-filebase` remote pinning service (and on +`itk-pinata` when that service is configured — Pinata is optional because +its pin-by-CID endpoint requires a paid plan), and replaces the original +file with `MyTest.png.cid` containing the resulting CID. The CID and +source-tree path are also recorded in `Testing/Data/content-links.manifest`. For advanced CLI usage, first-time users must complete the one-time Kubo + pinning-service setup diff --git a/Documentation/docs/contributing/upload_binary_data.md b/Documentation/docs/contributing/upload_binary_data.md index b94e1655b29..9e3f7a46be2 100644 --- a/Documentation/docs/contributing/upload_binary_data.md +++ b/Documentation/docs/contributing/upload_binary_data.md @@ -53,8 +53,9 @@ locations so it can be retrieved from any of the following at build time: - Local [Kubo] gateway (typically `127.0.0.1:8080`) - [ITKTestingData] GitHub Pages mirror -- [Pinata] (community pinning service, remote name `itk-pinata`) - [Filebase] (community pinning service, remote name `itk-filebase`) +- [Pinata] (community pinning service, remote name `itk-pinata`, + *optional* — pin-by-CID requires a paid Pinata plan) - Public IPFS HTTP gateways (`ipfs.io`, `dweb.link`, `cloudflare-ipfs.com`) - Kitware's Apache HTTP Server - Local `ExternalData_OBJECT_STORES` cache @@ -65,14 +66,15 @@ locations so it can be retrieved from any of the following at build time: *Testing data workflow. Testing or example data is uploaded to IPFS via the content-link-upload.itk.org web app. New content is added with the -`Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh` script, which pushes -the bytes to a local [Kubo] node and pins them on `itk-pinata` and -`itk-filebase` for redundancy. The resulting CID is written as a `.cid` -content link in the ITK source tree and recorded in -`Testing/Data/content-links.manifest`. Files ≤ 50 MB can additionally be -mirrored into [ITKTestingData] for GitHub Pages CDN delivery. At test time an -ITK build can fetch the data from a local cache, archive tarball, the Apache -HTTP server, the GitHub Pages mirror, or any of several IPFS HTTP gateways.* +`Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh` script, which +pushes the bytes to a local [Kubo] node and pins them on `itk-filebase` +(and `itk-pinata` if a paid Pinata plan is configured) for redundancy. The +resulting CID is written as a `.cid` content link in the ITK source tree +and recorded in `Testing/Data/content-links.manifest`. Files ≤ 50 MB can +additionally be mirrored into [ITKTestingData] for GitHub Pages CDN +delivery. At test time an ITK build can fetch the data from a local cache, +archive tarball, the Apache HTTP server, the GitHub Pages mirror, or any +of several IPFS HTTP gateways.* See also our [Data](data.md) guide for more information. @@ -113,13 +115,17 @@ The upload workflow requires: - A local [Kubo] daemon (CLI or IPFS Desktop) with the **UnixFS v1 2025** profile applied, so CIDs are reproducible across implementations (`ipfs config profile apply unixfs-v1-2025`, Kubo ≥ 0.40.0). -- Two remote pinning services configured under the exact names - `itk-pinata` and `itk-filebase`. The upload script looks up these names - and fails if they are missing. +- The [Filebase] remote pinning service registered as `itk-filebase`. This + is **required** — it works on Filebase's free tier. +- Optionally, the [Pinata] remote pinning service registered as + `itk-pinata`. Pinata's pin-by-CID endpoint requires a **paid plan** + (the free plan rejects PSA `pin remote add` with `PAID_FEATURE_ONLY`), + so configure this only if you have a paid Pinata account; the upload + script skips it with a notice when it isn't registered. The full step-by-step setup — installing Kubo, signing up with -[Pinata] and [Filebase], and registering each service as a remote — -is documented in +[Filebase] (and optionally [Pinata]), and registering each service +as a remote — is documented in [`Utilities/Maintenance/ExternalDataUpload/README.md`]. Complete that one-time setup before proceeding. @@ -137,11 +143,12 @@ The script will: 1. Add the file to IPFS with `--cid-version=1` under the UnixFS v1 2025 profile, producing a deterministic CID. -2. Pin locally, then on `itk-pinata` and `itk-filebase`. By default the - script waits until each remote reports `pinned`, which surfaces - failures immediately but can take minutes per file as the remote - fetches the content. For batch runs pass `--background` to submit - pins asynchronously and verify afterwards with +2. Pin locally, then on `itk-filebase` (and on `itk-pinata` if it is + registered — otherwise the script logs a notice and continues). By + default the script waits until each remote reports `pinned`, which + surfaces failures immediately but can take minutes per file as the + remote fetches the content. For batch runs pass `--background` to + submit pins asynchronously and verify afterwards with `ipfs pin remote ls --status=queued,pinning,pinned`. 3. Replace `MyTest.png` in the source tree with `MyTest.png.cid` — a one-line text file containing the CID. @@ -165,8 +172,8 @@ This populates the GitHub Pages mirror gateway already listed in [`CMake/ITKExternalData.cmake`]. Commit and push in the `ITKTestingData` repo to publish. Files larger than **50 MB** are skipped for the mirror step only (GitHub rejects pushes containing -files over 50 MB per file) — IPFS pinning on `itk-pinata` and -`itk-filebase` still proceeds for those files. +files over 50 MB per file) — IPFS pinning on `itk-filebase` (and on +`itk-pinata` when configured) still proceeds for those files. ### Alternative: upload via the web app diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index 33a01c28283..c7175fcf514 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -84,32 +84,16 @@ References: ### 3. Configure Remote Pinning Services -The upload script pins content on two remote services for redundancy, matching -the gateways declared in `CMake/ITKExternalData.cmake`. Both services must be -configured under the **exact names `itk-pinata` and `itk-filebase`** — the -upload script looks up those names and fails if they are missing. +The upload script pins content on community-run remote services for +redundancy alongside the GitHub Pages mirror, matching the gateways +declared in `CMake/ITKExternalData.cmake`. Use the **exact service names** +`itk-filebase` (required) and `itk-pinata` (optional) — the upload script +looks up those names. -#### Pinata (service name: `itk-pinata`) +#### Filebase (service name: `itk-filebase`, **required**) -1. Sign up at -2. Create an API key at - - Enable **pinByHash** and **pinFileToIPFS** permissions -3. Copy the JWT token and add the service (use a prompt to avoid leaking - the token into shell history): - -```bash -printf "Pinata JWT: " && read -rs PINATA_JWT && echo -ipfs pin remote service add itk-pinata https://api.pinata.cloud/psa "$PINATA_JWT" -``` - -4. Verify: - -```bash -ipfs pin remote service ls -# Should show: itk-pinata https://api.pinata.cloud/psa -``` - -#### Filebase (service name: `itk-filebase`) +Filebase's IPFS Pinning Service endpoint accepts pin-by-CID on the free +tier, so this is the baseline pinning provider for ITK. 1. Sign up at 2. Create an **IPFS bucket** at @@ -129,6 +113,34 @@ ipfs pin remote service ls # Should show: itk-filebase https://api.filebase.io/v1/ipfs ``` +#### Pinata (service name: `itk-pinata`, **optional — paid plan**) + +Pinata's `pin remote add` endpoint (the IPFS Pinning Service API) is +restricted to **paid plans** — the free plan rejects pin-by-CID with +`PAID_FEATURE_ONLY` (HTTP 403). Configure this service only if you have a +paid Pinata plan; otherwise leave it out and the upload script will skip +it with an informational message. Filebase + the GitHub Pages mirror still +provide redundancy. + +1. Sign up at and select a paid plan that includes + pin-by-CID +2. Create an API key at + - Enable **pinByHash** and **pinFileToIPFS** permissions +3. Copy the JWT token and add the service (use a prompt to avoid leaking + the token into shell history): + +```bash +printf "Pinata JWT: " && read -rs PINATA_JWT && echo +ipfs pin remote service add itk-pinata https://api.pinata.cloud/psa "$PINATA_JWT" +``` + +4. Verify: + +```bash +ipfs pin remote service ls +# Should show: itk-pinata https://api.pinata.cloud/psa +``` + ## Usage ### Upload a single file @@ -141,7 +153,8 @@ The script will: 1. Add the file to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) 2. Pin it locally -3. Pin it on `itk-pinata` and `itk-filebase` +3. Pin it on `itk-filebase` (and on `itk-pinata` if that service is + configured; otherwise the script logs a notice and continues) 4. Replace the original file with `.cid` containing the CID 5. Append/update an entry in `Testing/Data/content-links.manifest` 6. Print the `git rm` / `git add` commands to stage the change @@ -164,9 +177,9 @@ Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ **GitHub 50 MB file size limit.** `ITKTestingData` is hosted on GitHub, which hard-rejects pushes containing files larger than **50 MB** per file. The upload script checks the file size before mirroring and refuses to copy files over -50 MB into the `ITKTestingData` tree. IPFS pinning (local + `itk-pinata` + -`itk-filebase`) still proceeds for oversized files — the mirror step is the -only one that gets skipped, with a clear warning. +50 MB into the `ITKTestingData` tree. IPFS pinning (local + `itk-filebase`, +plus `itk-pinata` when configured) still proceeds for oversized files — the +mirror step is the only one that gets skipped, with a clear warning. Commit the staged `CID/` file in `ITKTestingData` and push; the `gh-pages` workflow on that repo republishes the new file at the GitHub Pages @@ -212,10 +225,10 @@ The script will, for each content link under the given path: link is left untouched and reported. 3. Re-materialize the actual file next to the content link, then invoke `ipfs-upload.sh` on it so the new CID is produced under the UnixFS v1 2025 - profile, pinned locally and on `itk-pinata` / `itk-filebase`, and (if - `--testing-data-repo` is passed) mirrored into `ITKTestingData`. The old - `.md5` / `.sha256` / `.sha512` link is removed; a `.cid` link is written in - its place. + profile, pinned locally and on `itk-filebase` (and `itk-pinata` if + configured), and (if `--testing-data-repo` is passed) mirrored into + `ITKTestingData`. The old `.md5` / `.sha256` / `.sha512` link is removed; + a `.cid` link is written in its place. Common options: @@ -247,8 +260,9 @@ queues the pin and fetches the content itself, and the script returns right away. Check final pin state with: ```bash -ipfs pin remote ls --service=itk-pinata --status=queued,pinning,pinned ipfs pin remote ls --service=itk-filebase --status=queued,pinning,pinned +# Only when itk-pinata is configured (paid Pinata plan): +ipfs pin remote ls --service=itk-pinata --status=queued,pinning,pinned ``` Both scripts also pre-check each remote for an existing pin on the same @@ -321,13 +335,26 @@ Start the daemon: `ipfs daemon` in a separate terminal, or launch IPFS Desktop. The script tests the connection with `ipfs swarm peers`, which requires an active daemon. -### `Required pinning service 'itk-pinata' is not configured` +### `Required pinning service 'itk-filebase' is not configured` Run `ipfs pin remote service ls` to see configured services. Re-add with the commands in step 3 above. Tokens may have expired if you revoked the API key. -The script intentionally refuses to upload if either `itk-pinata` or -`itk-filebase` is missing: a single pin provider is not enough redundancy for -test data CI relies on. +The script intentionally refuses to upload if `itk-filebase` is missing — it +is the baseline pin provider that works on the free tier. `itk-pinata` is +optional (paid plan only); if it isn't registered the script prints a +notice and continues. + +### `PAID_FEATURE_ONLY` / `403 Forbidden` from Pinata + +Pinata's free plan no longer accepts pin-by-CID via the IPFS Pinning Service +API; their `pin remote add` endpoint is gated to paid plans. If you don't +have a paid plan, remove the service so the upload script skips it cleanly: + +```bash +ipfs pin remote service rm itk-pinata +``` + +Filebase + the GitHub Pages mirror still provide redundancy. ### Remote pin failed diff --git a/Utilities/Maintenance/ExternalDataUpload/SKILL.md b/Utilities/Maintenance/ExternalDataUpload/SKILL.md index 77c1d8ed0b6..78d983ebf9e 100644 --- a/Utilities/Maintenance/ExternalDataUpload/SKILL.md +++ b/Utilities/Maintenance/ExternalDataUpload/SKILL.md @@ -2,8 +2,10 @@ name: external-data-upload description: > Upload ITK test data to IPFS and produce .cid content links, pin on - itk-pinata and itk-filebase, optionally mirror into ITKTestingData, and - normalize existing .md5 / .sha256 / .cid content links. Use when the + itk-filebase (and itk-pinata if configured — Pinata is optional because + pin-by-CID requires a paid plan there), optionally mirror into + ITKTestingData, and normalize existing .md5 / .sha256 / .cid content + links. Use when the user wants to add test images, baseline data, or model files under Testing/Data/ or a module's data/ directory, or when asked to convert hash-based content links to CID. @@ -28,8 +30,14 @@ Required: - IPFS daemon running (`ipfs daemon` or IPFS Desktop) - UnixFS v1 2025 profile applied (`ipfs config profile apply unixfs-v1-2025`) -- `itk-pinata` remote pinning service configured -- `itk-filebase` remote pinning service configured +- `itk-filebase` remote pinning service configured (works on the free tier) + +Optional: + +- `itk-pinata` remote pinning service configured. Pinata's pin-by-CID + endpoint is **paid-only** — the free plan rejects PSA `pin remote add` + with `PAID_FEATURE_ONLY` (403). The upload script skips this service + with a notice if it isn't registered. ## Tasks this skill handles @@ -53,7 +61,8 @@ Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ The script will: 1. Add to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) -2. Pin locally, on `itk-pinata`, and on `itk-filebase` +2. Pin locally and on `itk-filebase`; also on `itk-pinata` if registered + (skipped with a notice when only Filebase is configured) 3. If `--testing-data-repo` given and file ≤ 50 MB, copy to `/CID/` and `git add` it there. Files over 50 MB are skipped for the mirror step only (GitHub rejects > 50 MB) — IPFS pinning still diff --git a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh index 0b3a3fbaa9a..6c49720b5b4 100755 --- a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +++ b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh @@ -10,8 +10,9 @@ set -euo pipefail # 2. Verifies the bytes against the declared hash or CID. # 3. Re-materialises the actual file alongside the link, then invokes # ipfs-upload.sh on it so a fresh CID is produced under the UnixFS -# v1 2025 profile, pinned on itk-pinata and itk-filebase, and -# (optionally) mirrored into ITKTestingData. +# v1 2025 profile, pinned on itk-filebase (and on itk-pinata if +# configured — see ipfs-upload.sh), and (optionally) mirrored +# into ITKTestingData. # # Usage: # content-link-normalize.sh [options] diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh index 9286a4f83cd..add07fd3188 100755 --- a/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh +++ b/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh @@ -2,7 +2,9 @@ set -euo pipefail # Batch-pin every CID in Testing/Data/content-links.manifest locally and on -# every configured remote pinning service (itk-pinata, itk-filebase, ...). +# every configured remote pinning service (itk-filebase, plus itk-pinata or +# any other PSA-compatible remote if registered with `ipfs pin remote +# service add`). # # Usage: ipfs-pin-all.sh [--background] # diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh index 621464be36c..fb1cb27ba2c 100755 --- a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +++ b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh @@ -2,9 +2,11 @@ set -euo pipefail # Upload a file to IPFS (CIDv1, UnixFS v1 2025 profile), pin it on the -# itk-pinata and itk-filebase remote pinning services, and replace the -# original with a .cid content link. Optionally mirror the bytes into a -# local ITKTestingData checkout at CID/. +# itk-filebase remote pinning service (and on itk-pinata if it is +# configured — Pinata is optional because pin-by-CID is a paid-plan +# feature there), and replace the original with a .cid content link. +# Optionally mirror the bytes into a local ITKTestingData checkout at +# CID/. # # Usage: # ipfs-upload.sh [--testing-data-repo ] [--background] @@ -30,15 +32,25 @@ set -euo pipefail # - Kubo (go-ipfs) installed and `ipfs` on PATH # - IPFS daemon running (ipfs daemon, or IPFS Desktop) # - UnixFS v1 2025 profile applied: `ipfs config profile apply unixfs-v1-2025` -# - `itk-pinata` and `itk-filebase` remote pinning services configured +# - `itk-filebase` remote pinning service configured (required) +# - `itk-pinata` remote pinning service configured (optional — Pinata's +# pin-by-CID endpoint is paid-only, so configure it only if you have +# a paid plan) # # See README.md in this directory for full setup. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" -# Required remote pinning services — script errors if not configured. -REQUIRED_SERVICES=(itk-pinata itk-filebase) +# Required pinning service — Filebase's free tier supports pin-by-CID +# via the IPFS Pinning Service API, so we always need this one. +REQUIRED_SERVICES=(itk-filebase) + +# Optional pinning service — Pinata's pin-by-CID endpoint requires a paid +# plan (their free tier rejects PSA `pin remote add` with +# PAID_FEATURE_ONLY/403). Pinned to if configured, skipped with a notice +# if not. +OPTIONAL_SERVICES=(itk-pinata) # GitHub hard-rejects pushes containing any file > 50 MB. The ITKTestingData # mirror step is skipped for files over this limit. @@ -164,7 +176,9 @@ if ! ipfs swarm peers &>/dev/null; then exit 1 fi -# Check required remote pinning services are configured. +# Check required remote pinning services are configured. Optional services +# are recorded so they're attempted in addition to the required ones; a +# missing optional service is reported but does not abort the upload. CONFIGURED_SERVICES="$(ipfs pin remote service ls 2>/dev/null || true)" for svc in "${REQUIRED_SERVICES[@]}"; do if ! echo "$CONFIGURED_SERVICES" | grep -q "^${svc} "; then @@ -174,6 +188,15 @@ for svc in "${REQUIRED_SERVICES[@]}"; do fi done +ACTIVE_SERVICES=("${REQUIRED_SERVICES[@]}") +for svc in "${OPTIONAL_SERVICES[@]}"; do + if echo "$CONFIGURED_SERVICES" | grep -q "^${svc} "; then + ACTIVE_SERVICES+=("$svc") + else + echo "==> Optional pinning service '${svc}' is not configured; skipping." + fi +done + # --------------------------------------------------------------------------- # Add to IPFS # --------------------------------------------------------------------------- @@ -201,7 +224,7 @@ ipfs pin add "$CID" >/dev/null FAILED_PINS=() -for svc in "${REQUIRED_SERVICES[@]}"; do +for svc in "${ACTIVE_SERVICES[@]}"; do # Skip services where this CID is already queued/pinning/pinned — # Pinata rejects duplicate `pin remote add` calls with # DUPLICATE_OBJECT (400), and resubmitting on Filebase just makes a @@ -248,7 +271,7 @@ if [[ -n "$TESTING_DATA_REPO" ]]; then echo "WARNING: ${PIN_NAME} is ${FILE_SIZE_BYTES} bytes (> 50 MB)." >&2 echo " GitHub rejects pushes containing files > 50 MB, so it" >&2 echo " will NOT be mirrored to ITKTestingData." >&2 - echo " IPFS pin (local + itk-pinata + itk-filebase) succeeded;" >&2 + echo " IPFS pin (local + ${ACTIVE_SERVICES[*]}) succeeded;" >&2 echo " the .cid content link will still be produced." >&2 else MIRROR_DIR="$TESTING_DATA_REPO/CID" From 61a5d513b8047533c015dc582b72b9a374c0e2be Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Fri, 1 May 2026 16:45:38 -0400 Subject: [PATCH 08/23] ENH: Replace Kubo + PSA workflow with Filebase S3 + ipfs-car MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drops the local Kubo / IPFS-Desktop daemon, the `ipfs config profile apply unixfs-v1-2025` setup step, the `ipfs pin remote service add` PSA registrations (`itk-filebase`, `itk-pinata`), and the bash upload trio (`ipfs-upload.sh`, `content-link-normalize.sh`, `ipfs-pin-all.sh`) that drove them. The new contributor flow is pure Python on top of a small pixi environment: 1. `npx ipfs-car pack --no-wrap` builds a CARv1 locally. ipfs-car v1+ defaults (1 MiB chunks, 1024 children, raw leaves, CIDv1) match the unixfs-v1-2025 / IPIP-0499 profile, so no extra flags are needed to produce a reproducible CID. 2. `boto3` PUTs the CAR to a Filebase IPFS bucket through Filebase's S3-compatible REST API with `x-amz-meta-import: car`. Filebase imports the CAR server-side and exposes the resulting CID via `head_object` metadata. 3. The local CID and the CID Filebase reports are compared, and on success the file is replaced with `.cid`, the manifest at `Testing/Data/content-links.manifest` is updated, and the optional `--testing-data-repo` mirror step still copies the bytes into a local ITKTestingData clone (subject to the same 50 MB GitHub push limit as before). Concretely: - Add `boto3`, `nodejs`, and `requests` to a new `[tool.pixi.feature.external-data-upload]` feature plus an `external-data-upload` environment in `pyproject.toml`. Run `pixi install -e external-data-upload` once, then `pixi run -e external-data-upload python ...` for every upload. - New `Utilities/Maintenance/ExternalDataUpload/upload.py` is the single-file uploader: input validation (in-repo, no whitespace, not already a content link), CAR build, boto3 put_object with the `import: car` metadata header, head_object CID round-trip, manifest update, optional ITKTestingData mirror, and the same `git rm` / `git add` instructions as before. - New `Utilities/Maintenance/ExternalDataUpload/normalize.py` parses `ExternalData_URL_TEMPLATES` from `CMake/ITKExternalData.cmake` with a paren-aware scanner (the `%(hash)` / `%(algo)` substrings break naive `re.DOTALL` lazy matching), fetches each `.md5` / `.shaNNN` / `.cid` link via the gateway templates, verifies the bytes algorithmically (or via the `/ipfs/` server-side guarantee for CID links), and re-uploads through `upload.upload_file_to_filebase`. - `Utilities/Maintenance/ExternalDataUpload/README.md` is rewritten end to end: pixi setup, Filebase S3-key creation, `FILEBASE_ACCESS_KEY` / `FILEBASE_SECRET_KEY` / `FILEBASE_BUCKET` env-var contract, new troubleshooting section (missing npx, missing credentials, Filebase did not return a CID, CID mismatch). - `Utilities/Maintenance/ExternalDataUpload/SKILL.md` updated to describe the same flow for the AI agent: pixi env + Filebase credentials prerequisites; no Kubo, no PSA service registration. - `Documentation/docs/contributing/upload_binary_data.md` and `Documentation/docs/contributing/data.md` rewrite the one-time-setup, upload-a-file, mirror, and normalize sections around the pixi + Filebase workflow. The storage-locations list and testing-data-figure caption are reworded so Filebase appears as the upload destination and Kubo / Pinata only show up as build-time read paths (gateways, not pinning targets). - `Testing/Data/content-links.manifest` header rewritten to credit `upload.py` as the maintainer (previously named `ipfs-upload.sh`). The Filebase free tier supports the S3 import-as-CAR path used here, so the workflow needs no paid subscription — addressing the original Pinata \`PAID_FEATURE_ONLY\` blocker reported by @hjmjohnson — and CI runners can use the same env-var contract via GitHub Actions secrets. --- Documentation/docs/contributing/data.md | 35 +- .../docs/contributing/upload_binary_data.md | 154 +++--- Testing/Data/content-links.manifest | 8 +- .../Maintenance/ExternalDataUpload/README.md | 327 +++++-------- .../Maintenance/ExternalDataUpload/SKILL.md | 90 ++-- .../content-link-normalize.sh | 456 ------------------ .../ExternalDataUpload/ipfs-pin-all.sh | 178 ------- .../ExternalDataUpload/ipfs-upload.sh | 359 -------------- .../ExternalDataUpload/normalize.py | 319 ++++++++++++ .../Maintenance/ExternalDataUpload/upload.py | 341 +++++++++++++ pyproject.toml | 6 + 11 files changed, 914 insertions(+), 1359 deletions(-) delete mode 100755 Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh delete mode 100755 Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh delete mode 100755 Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh create mode 100755 Utilities/Maintenance/ExternalDataUpload/normalize.py create mode 100755 Utilities/Maintenance/ExternalDataUpload/upload.py diff --git a/Documentation/docs/contributing/data.md b/Documentation/docs/contributing/data.md index b1b2c9d3aa8..adab0e5e701 100644 --- a/Documentation/docs/contributing/data.md +++ b/Documentation/docs/contributing/data.md @@ -46,29 +46,31 @@ this example, with the [content-link-upload] web app. This app will upload the data to IPFS and provide a *.cid* CMake ExternalData content link file to download. This is the easiest and recommended way to upload new test data. -For advanced command line driven uploads, the upload script at -`Utilities/Maintenance/ExternalDataUpload/` can be used: +For command-line uploads, run the Python helper at +`Utilities/Maintenance/ExternalDataUpload/upload.py` from the +`external-data-upload` pixi environment: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py \ Modules/.../test/Baseline/MyTest.png ``` -The script adds the file to your local IPFS node under the UnixFS v1 2025 -profile, pins it on the `itk-filebase` remote pinning service (and on -`itk-pinata` when that service is configured — Pinata is optional because -its pin-by-CID endpoint requires a paid plan), and replaces the original -file with `MyTest.png.cid` containing the resulting CID. The CID and -source-tree path are also recorded in -`Testing/Data/content-links.manifest`. +The helper packs the file into a CARv1 with `npx ipfs-car` (defaults +match the unixfs-v1-2025 / IPIP-0499 profile so CIDs are reproducible), +uploads the CAR to your [Filebase] IPFS bucket via Filebase's S3-compatible +REST API, verifies the CID Filebase reports back matches what was computed +locally, and replaces the original file with `MyTest.png.cid` containing +that CID. The CID and source-tree path are also recorded in +`Testing/Data/content-links.manifest`. A local IPFS daemon is **not** +required. -For advanced CLI usage, first-time users must complete the one-time Kubo + pinning-service setup +First-time CLI users must complete the one-time pixi + Filebase setup documented in -[`Utilities/Maintenance/ExternalDataUpload/README.md`] before the script will -succeed. Contributors who cannot run a local Kubo daemon may instead use -the [content-link-upload] web app, which pins to [Filebase] and [Pinata] and returns -a `.cid` file directly — manifest and mirror updates must then be added by -hand. +[`Utilities/Maintenance/ExternalDataUpload/README.md`] before the helper +will succeed. Contributors who prefer not to run any local tooling can +instead use the [content-link-upload] web app, which returns a `.cid` +file directly — manifest and mirror updates must then be added by hand. For more details, see the description and procedures in [Upload Binary Data]. @@ -172,4 +174,3 @@ the [InterPlanetary File System (IPFS)]. [Upload Binary Data]: upload_binary_data.md [`Utilities/Maintenance/ExternalDataUpload/README.md`]: https://github.com/InsightSoftwareConsortium/ITK/blob/main/Utilities/Maintenance/ExternalDataUpload/README.md [Filebase]: https://filebase.com/ -[Pinata]: https://pinata.cloud/ diff --git a/Documentation/docs/contributing/upload_binary_data.md b/Documentation/docs/contributing/upload_binary_data.md index 9e3f7a46be2..fa08fe7978b 100644 --- a/Documentation/docs/contributing/upload_binary_data.md +++ b/Documentation/docs/contributing/upload_binary_data.md @@ -33,30 +33,25 @@ adopting Web3, we gain: - **Scalability** - **Sustainability** -Contributors to the ITK upload their data through a simple web app -that utilizes an easy-to-use, permissionless service, [Pinata]. +Contributors upload their data by running a small Python helper that packs +the file into a [CARv1] using `npx ipfs-car`, uploads the CAR to a [Filebase] +IPFS bucket through Filebase's S3-compatible REST API, records the resulting +CID in a manifest, and (optionally) mirrors the bytes into the [ITKTestingData] +GitHub Pages repository. A local [Kubo] daemon, IPFS Desktop, or any +`ipfs pin remote` PSA service is **not** required. See +[`Utilities/Maintenance/ExternalDataUpload/README.md`] for the one-time +developer setup and full workflow. -Data used in the ITK Git repository is periodically tracked in a -dedicated DataLad repository, the [ITKData DataLad repository]. -and stored across redundant locations so it can be retrieved from any of -the following: - -Contributors upload their data by running a small shell script that pushes -the file into [IPFS] via a local [Kubo] daemon, pins it on redundant -community-run pinning services, records the resulting CID in a manifest, and -(optionally) mirrors the bytes into the [ITKTestingData] GitHub Pages -repository. See [`Utilities/Maintenance/ExternalDataUpload/README.md`] for -the one-time developer setup and full workflow. +[CARv1]: https://ipld.io/specs/transport/car/carv1/ Data referenced from the ITK Git repository is stored across redundant locations so it can be retrieved from any of the following at build time: -- Local [Kubo] gateway (typically `127.0.0.1:8080`) +- [Filebase] IPFS gateway (where uploads land) - [ITKTestingData] GitHub Pages mirror -- [Filebase] (community pinning service, remote name `itk-filebase`) -- [Pinata] (community pinning service, remote name `itk-pinata`, - *optional* — pin-by-CID requires a paid Pinata plan) -- Public IPFS HTTP gateways (`ipfs.io`, `dweb.link`, `cloudflare-ipfs.com`) +- Public IPFS HTTP gateways (`ipfs.io`, `dweb.link`, `cloudflare-ipfs.com`, + `gateway.pinata.cloud`) +- Local [Kubo] gateway (typically `127.0.0.1:8080`) when present - Kitware's Apache HTTP Server - Local `ExternalData_OBJECT_STORES` cache - Archive tarballs from GitHub Releases @@ -64,17 +59,19 @@ locations so it can be retrieved from any of the following at build time: ![ITK testing data figure](./itk-testing-data.png) -*Testing data workflow. Testing or example data is uploaded to IPFS via the -content-link-upload.itk.org web app. New content is added with the -`Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh` script, which -pushes the bytes to a local [Kubo] node and pins them on `itk-filebase` -(and `itk-pinata` if a paid Pinata plan is configured) for redundancy. The -resulting CID is written as a `.cid` content link in the ITK source tree -and recorded in `Testing/Data/content-links.manifest`. Files ≤ 50 MB can -additionally be mirrored into [ITKTestingData] for GitHub Pages CDN -delivery. At test time an ITK build can fetch the data from a local cache, -archive tarball, the Apache HTTP server, the GitHub Pages mirror, or any -of several IPFS HTTP gateways.* +*Testing data workflow. New content is added with the +`Utilities/Maintenance/ExternalDataUpload/upload.py` helper, which packs +the file into a CAR with `npx ipfs-car` (defaults match the +unixfs-v1-2025 / IPIP-0499 profile so CIDs are reproducible) and uploads +the CAR to a [Filebase] IPFS bucket via boto3 against Filebase's +S3-compatible API. The CID Filebase reports back from `head_object` is +verified against the locally computed CID, written as a `.cid` content +link in the ITK source tree, and recorded in +`Testing/Data/content-links.manifest`. Files ≤ 50 MB can additionally be +mirrored into [ITKTestingData] for GitHub Pages CDN delivery. At test +time an ITK build can fetch the data from a local cache, archive tarball, +the Apache HTTP server, the GitHub Pages mirror, or any of several public +IPFS HTTP gateways.* See also our [Data](data.md) guide for more information. @@ -104,52 +101,53 @@ need to be followed: Upload new testing data ----------------------- -### Web app - -The easiest, recommended way to upload data is The [Content Link Upload] browser interface. +### One-time setup -### CLI one-time setup +The upload workflow needs: -The upload workflow requires: +- The `external-data-upload` pixi environment installed + (`pixi install -e external-data-upload`). It provides Python 3, [boto3], + and Node.js (which makes `npx ipfs-car` available without a separate + global install). +- A [Filebase] IPFS bucket and an S3 access key for that bucket. Filebase's + free tier is sufficient — the upload uses the S3 import-as-CAR path, + not the legacy IPFS Pinning Service API. +- The credentials exported as environment variables before running the + helper: -- A local [Kubo] daemon (CLI or IPFS Desktop) with the **UnixFS v1 2025** - profile applied, so CIDs are reproducible across implementations - (`ipfs config profile apply unixfs-v1-2025`, Kubo ≥ 0.40.0). -- The [Filebase] remote pinning service registered as `itk-filebase`. This - is **required** — it works on Filebase's free tier. -- Optionally, the [Pinata] remote pinning service registered as - `itk-pinata`. Pinata's pin-by-CID endpoint requires a **paid plan** - (the free plan rejects PSA `pin remote add` with `PAID_FEATURE_ONLY`), - so configure this only if you have a paid Pinata account; the upload - script skips it with a notice when it isn't registered. +```bash +export FILEBASE_ACCESS_KEY=... +export FILEBASE_SECRET_KEY=... +export FILEBASE_BUCKET=itk-data +``` -The full step-by-step setup — installing Kubo, signing up with -[Filebase] (and optionally [Pinata]), and registering each service -as a remote — is documented in +The full step-by-step setup is documented in [`Utilities/Maintenance/ExternalDataUpload/README.md`]. Complete that one-time setup before proceeding. +[boto3]: https://boto3.amazonaws.com/ + ### Upload a file -From the ITK source tree, run the upload script with the path to the file +From the ITK source tree, run the upload helper with the path to the file you want to upload: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py \ Modules/.../test/Baseline/MyTest.png ``` -The script will: - -1. Add the file to IPFS with `--cid-version=1` under the UnixFS v1 2025 - profile, producing a deterministic CID. -2. Pin locally, then on `itk-filebase` (and on `itk-pinata` if it is - registered — otherwise the script logs a notice and continues). By - default the script waits until each remote reports `pinned`, which - surfaces failures immediately but can take minutes per file as the - remote fetches the content. For batch runs pass `--background` to - submit pins asynchronously and verify afterwards with - `ipfs pin remote ls --status=queued,pinning,pinned`. +The helper will: + +1. Pack the file into a CARv1 with `npx ipfs-car pack --no-wrap` — + ipfs-car v1+ defaults to 1 MiB chunks, 1024 children per node, raw + leaves, CIDv1, which is the unixfs-v1-2025 profile, so the CID is + reproducible across implementations. +2. PUT the CAR to your Filebase IPFS bucket with + `x-amz-meta-import: car` so Filebase imports it server-side, then + read the imported CID back via `head_object` and verify it matches + the locally computed CID. 3. Replace `MyTest.png` in the source tree with `MyTest.png.cid` — a one-line text file containing the CID. 4. Append the CID and source-tree path to @@ -162,7 +160,8 @@ Pass `--testing-data-repo ` to additionally copy the file into a local clone of [ITKTestingData] at `CID/`: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py \ --testing-data-repo ~/src/ITKTestingData \ Modules/.../test/Baseline/MyTest.png ``` @@ -172,40 +171,40 @@ This populates the GitHub Pages mirror gateway already listed in [`CMake/ITKExternalData.cmake`]. Commit and push in the `ITKTestingData` repo to publish. Files larger than **50 MB** are skipped for the mirror step only (GitHub rejects pushes containing -files over 50 MB per file) — IPFS pinning on `itk-filebase` (and on -`itk-pinata` when configured) still proceeds for those files. +files over 50 MB per file) — the Filebase upload still proceeds for +those files. ### Alternative: upload via the web app -Contributors who prefer not to run a local [Kubo] daemon can upload a file +Contributors who prefer not to run any local tooling can upload a file through the [Content Link Upload] web app ([Alt Link]). The app pins the -file on [web3.storage] and returns the corresponding `.cid` content link -to download. The resulting CID is usable anywhere the script-produced CID -would be — but the manifest entry and the optional [ITKTestingData] -mirror must then be added by hand. The script-based workflow above is -preferred when available because it also updates -`Testing/Data/content-links.manifest` and pins on the ITK community -services in one step. +file and returns the corresponding `.cid` content link to download. The +resulting CID is usable anywhere the helper-produced CID would be — but +the manifest entry and the optional [ITKTestingData] mirror must then be +added by hand. The helper above is preferred when available because it +also updates `Testing/Data/content-links.manifest` in one step. ### Normalize existing content links Older `.md5` / `.sha256` / `.sha512` content links can be converted to -`.cid`, and existing `.cid` links can be regenerated under the UnixFS -v1 2025 profile, with: +`.cid`, and existing `.cid` links can be regenerated under the +unixfs-v1-2025 profile, with: ```bash -Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py ``` See [`Utilities/Maintenance/ExternalDataUpload/README.md`] for the full -set of options (`--dry-run`, `--hash-only`, `--cid-only`, `--background`, -`--testing-data-repo`). +set of options (`--dry-run`, `--hash-only`, `--cid-only`, +`--testing-data-repo`, `--bucket`). ### Add the content link to the source tree -The upload script prints the exact commands to stage: +The upload helper prints the exact commands to stage: ```bash +git rm path/to/MyTest.png git add path/to/MyTest.png.cid git add Testing/Data/content-links.manifest git commit @@ -233,6 +232,5 @@ reachable gateway in [`CMake/ITKExternalData.cmake`]. [ITKTestingData]: https://github.com/InsightSoftwareConsortium/ITKTestingData [Kubo]: https://github.com/ipfs/kubo [multiformats]: https://multiformats.io/ -[Pinata]: https://pinata.cloud/ [solution to this problem]: https://blog.kitware.com/cmake-externaldata-using-large-files-with-distributed-version-control/ [`Utilities/Maintenance/ExternalDataUpload/README.md`]: https://github.com/InsightSoftwareConsortium/ITK/blob/main/Utilities/Maintenance/ExternalDataUpload/README.md diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index 10e3f127b37..62dd0827cb9 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -3,11 +3,9 @@ # One entry per line, format: # # Maintained automatically by -# Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh -# and used by -# Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh -# to batch-pin every CID on the local Kubo node and every configured -# remote pinning service (itk-pinata, itk-filebase, ...). +# Utilities/Maintenance/ExternalDataUpload/upload.py +# which packs each file into a CARv1 (unixfs-v1-2025 profile) and uploads +# the CAR to a Filebase IPFS bucket via boto3. # # Paths must not contain whitespace (the manifest uses a single space as # the field delimiter). Data lines are kept sorted by path; comment lines diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index c7175fcf514..7c670b97c60 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -1,6 +1,7 @@ # ITK External Data Upload -Upload large test images and baselines to IPFS, optionally mirror them into the +Upload large test images and baselines to [Filebase] IPFS storage, optionally +mirror them into the [`ITKTestingData`](https://github.com/InsightSoftwareConsortium/ITKTestingData) repository, and replace the original with a lightweight `.cid` content link committed to the ITK source tree. @@ -11,153 +12,99 @@ which fetches content at test configure time from the gateways listed there gateway, `ipfs.io`, `gateway.pinata.cloud`, `cloudflare-ipfs.com`, `dweb.link`). -## One-Time Developer Setup - -### 1. Install Kubo (IPFS) - -You need the Kubo IPFS implementation. Choose one method: - -**IPFS Desktop** (recommended — bundles the Kubo daemon with a GUI, with a -system-tray icon, peer/bandwidth statistics, a file browser for your MFS, and -one-click start/stop): - -Download from . IPFS Desktop -auto-starts the daemon on login and exposes the same HTTP API that the `ipfs` -CLI uses (default `127.0.0.1:5001`), so every command in this guide works -identically whether you started the daemon from the command line or from the -tray. - -**CLI only** (macOS): - -```bash -brew install ipfs -``` - -**CLI only** (Linux): - -Download the latest release from , then: - -```bash -tar xvfz kubo_*_linux-amd64.tar.gz -cd kubo && sudo bash install.sh -``` +## How the upload works -After installation, verify `ipfs` is on your PATH: +Uploads go directly to a Filebase IPFS bucket over Filebase's +S3-compatible REST API. A local +[Kubo](https://github.com/ipfs/kubo) daemon, IPFS Desktop, or any +configured `ipfs pin remote` PSA service is **not** required. -```bash -ipfs --version -``` +For each upload the helper script: -### 2. Initialize and Start the Daemon +1. Packs the file into a CARv1 with `npx ipfs-car pack --no-wrap`. ipfs-car + v1+ defaults to **1 MiB chunks, 1024 children per node, raw leaves, + CIDv1**, which is exactly the [unixfs-v1-2025] / IPIP-0499 profile, so + the CID is reproducible across implementations and matches what other + contributors and CI compute for the same content. +2. PUTs the CAR to the configured Filebase bucket with the + `x-amz-meta-import: car` header. Filebase imports the CAR and pins the + resulting CID server-side, exposing it via `head_object` metadata. +3. Reads the CID back from `head_object` and verifies it matches the local + CID. A mismatch aborts the upload. +4. Writes `.cid`, removes the original file, appends/updates an entry + in `Testing/Data/content-links.manifest`, and (with + `--testing-data-repo`) copies the bytes into a local `ITKTestingData` + clone for the GitHub Pages CDN mirror. -```bash -# One-time initialization (creates ~/.ipfs) -ipfs init +[unixfs-v1-2025]: https://github.com/ipfs/specs/blob/main/IPIP/0499-unixfs-v1-2025-profile.md -# Start the daemon (keep running in a separate terminal, or use IPFS Desktop) -ipfs daemon -``` +## One-Time Developer Setup -### 2a. Apply the UnixFS v1 2025 Profile +### 1. Install the pixi environment -Requires **Kubo v0.40.0 or later**. Apply once per node, before your first -upload: +The upload helpers run on top of a small pixi environment that brings in +[boto3] for the Filebase S3 calls, Node.js for `npx ipfs-car`, and +`requests` for the gateway-fetch verification path used by `normalize.py`. +From the ITK source tree: ```bash -ipfs config profile apply unixfs-v1-2025 +pixi install -e external-data-upload ``` -This pins the UnixFS importer settings (chunker, layout, raw-leaves, HAMT -directory thresholds) to standardized values for reproducible CIDs. Without it, -`ipfs add` defaults may drift across Kubo patch releases and across -implementations (Helia, rust-ipfs, boxo), so two contributors uploading the -same file can produce different CIDs — which breaks the `.cid` content-link -contract ITK relies on. - -The profile applies to **new adds only**; existing pinned content and -already-committed `.cid` files are unaffected. - -References: +[boto3]: https://boto3.amazonaws.com/ -- [Kubo v0.40.0 release notes](https://github.com/ipfs/kubo/releases/tag/v0.40.0) -- [Reproducible CIDs — IPFS blog, March 2026](https://blog.ipfs.tech/2026-03-reproducible-cids/) - -### 3. Configure Remote Pinning Services - -The upload script pins content on community-run remote services for -redundancy alongside the GitHub Pages mirror, matching the gateways -declared in `CMake/ITKExternalData.cmake`. Use the **exact service names** -`itk-filebase` (required) and `itk-pinata` (optional) — the upload script -looks up those names. - -#### Filebase (service name: `itk-filebase`, **required**) - -Filebase's IPFS Pinning Service endpoint accepts pin-by-CID on the free -tier, so this is the baseline pinning provider for ITK. - -1. Sign up at -2. Create an **IPFS bucket** at -3. Go to , select your IPFS bucket in the - "IPFS Pinning Service API Endpoint" section, and copy the generated token -4. Add the service: +That installs everything into `.pixi/envs/external-data-upload/`. Verify: ```bash -printf "Filebase token: " && read -rs FILEBASE_TOKEN && echo -ipfs pin remote service add itk-filebase https://api.filebase.io/v1/ipfs "$FILEBASE_TOKEN" +pixi run -e external-data-upload python --version +pixi run -e external-data-upload node --version +pixi run -e external-data-upload npx --yes ipfs-car --version ``` -5. Verify: +The first `npx ipfs-car` invocation downloads the package into the npm +cache; subsequent runs are offline. -```bash -ipfs pin remote service ls -# Should show: itk-filebase https://api.filebase.io/v1/ipfs -``` +### 2. Create a Filebase IPFS bucket and S3 keys -#### Pinata (service name: `itk-pinata`, **optional — paid plan**) +1. Sign up at (the free tier supports + pin-by-CID via the S3 import path). +2. Create an **IPFS bucket** at . + The bucket name is local to your account — the published CID is the + only thing other contributors need to retrieve the bytes. +3. Create an S3 access key for that bucket at + . Filebase ties keys to a single + bucket, so the access key + secret you receive can only see and + write to that bucket. -Pinata's `pin remote add` endpoint (the IPFS Pinning Service API) is -restricted to **paid plans** — the free plan rejects pin-by-CID with -`PAID_FEATURE_ONLY` (HTTP 403). Configure this service only if you have a -paid Pinata plan; otherwise leave it out and the upload script will skip -it with an informational message. Filebase + the GitHub Pages mirror still -provide redundancy. +### 3. Export the credentials -1. Sign up at and select a paid plan that includes - pin-by-CID -2. Create an API key at - - Enable **pinByHash** and **pinFileToIPFS** permissions -3. Copy the JWT token and add the service (use a prompt to avoid leaking - the token into shell history): +The helper scripts read three environment variables: ```bash -printf "Pinata JWT: " && read -rs PINATA_JWT && echo -ipfs pin remote service add itk-pinata https://api.pinata.cloud/psa "$PINATA_JWT" +export FILEBASE_ACCESS_KEY=... # S3 access key +export FILEBASE_SECRET_KEY=... # S3 secret key +export FILEBASE_BUCKET=itk-data # bucket name from step 2 ``` -4. Verify: - -```bash -ipfs pin remote service ls -# Should show: itk-pinata https://api.pinata.cloud/psa -``` +Add the exports to your shell profile or a `.env` file you source before +uploads. **Do not** commit credentials to the repository. ## Usage ### Upload a single file ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py ``` The script will: -1. Add the file to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) -2. Pin it locally -3. Pin it on `itk-filebase` (and on `itk-pinata` if that service is - configured; otherwise the script logs a notice and continues) -4. Replace the original file with `.cid` containing the CID -5. Append/update an entry in `Testing/Data/content-links.manifest` -6. Print the `git rm` / `git add` commands to stage the change +1. Pack the file into a CAR (CIDv1, unixfs-v1-2025 profile) +2. Upload the CAR to your Filebase IPFS bucket and verify the CID +3. Replace the original file with `.cid` containing the CID +4. Append/update an entry in `Testing/Data/content-links.manifest` +5. Print the `git rm` / `git add` commands to stage the change ### Also mirror the bytes to `ITKTestingData` @@ -169,7 +116,8 @@ at `CID/` and `git add` it there. This populates the gateway already listed in `CMake/ITKExternalData.cmake`. ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py \ --testing-data-repo ~/src/ITKTestingData \ Testing/Data/Input/brain.nii.gz ``` @@ -177,99 +125,56 @@ Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ **GitHub 50 MB file size limit.** `ITKTestingData` is hosted on GitHub, which hard-rejects pushes containing files larger than **50 MB** per file. The upload script checks the file size before mirroring and refuses to copy files over -50 MB into the `ITKTestingData` tree. IPFS pinning (local + `itk-filebase`, -plus `itk-pinata` when configured) still proceeds for oversized files — the -mirror step is the only one that gets skipped, with a clear warning. +50 MB into the `ITKTestingData` tree. The Filebase upload still proceeds for +oversized files — the mirror step is the only one that gets skipped, with a +clear warning. Commit the staged `CID/` file in `ITKTestingData` and push; the `gh-pages` workflow on that repo republishes the new file at the GitHub Pages mirror gateway. -### Batch-pin every CID in the manifest - -```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh -``` - -Reads `Testing/Data/content-links.manifest` and pins every CID locally plus on -every configured remote pinning service. Useful for: - -- Bootstrapping a new local Kubo node with all ITK test content -- Re-pinning everything after rotating a pinning provider -- Verifying all pinned content is still reachable - -Use `--background` to queue remote pins asynchronously (the remote services -then fetch the content themselves): - -```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh --background -``` - ### Normalize existing content links to CID `.md5` / `.sha256` / `.sha512` content links can be converted to `.cid`, and -existing `.cid` links can be regenerated under the UnixFS v1 2025 profile (in +existing `.cid` links can be regenerated under the unixfs-v1-2025 profile (in case they were originally produced with older chunker defaults). ```bash -Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py ``` The script will, for each content link under the given path: -1. Fetch the bytes through the gateways in `CMake/ITKExternalData.cmake` (same - order the build uses, so a gateway CI can't reach is a gateway this script - won't accept). +1. Fetch the bytes through the gateways in `CMake/ITKExternalData.cmake` + (same order the build uses, so a gateway CI can't reach is a gateway + this script won't accept). 2. Verify the fetched bytes against the declared hash (for `.md5` / `.shaNNN` - links) or the declared CID (for `.cid` links). If verification fails the - link is left untouched and reported. -3. Re-materialize the actual file next to the content link, then invoke - `ipfs-upload.sh` on it so the new CID is produced under the UnixFS v1 2025 - profile, pinned locally and on `itk-filebase` (and `itk-pinata` if - configured), and (if `--testing-data-repo` is passed) mirrored into - `ITKTestingData`. The old `.md5` / `.sha256` / `.sha512` link is removed; - a `.cid` link is written in its place. + links) or the declared CID (for `.cid` links — accepted only when fetched + via an IPFS HTTP gateway, which verifies server-side). +3. Re-materialize the actual file next to the content link, then call the + Filebase uploader so the new CID is produced under the unixfs-v1-2025 + profile and (if `--testing-data-repo` is passed) mirrored into + `ITKTestingData`. The old `.md5` / `.sha256` / `.sha512` link is + removed; a `.cid` link is written in its place. Common options: ```bash # Dry run — report what would change, modify nothing. -content-link-normalize.sh Modules/Filtering/Foo --dry-run +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py Modules/Filtering/Foo --dry-run # Also mirror bytes into a local ITKTestingData checkout. -content-link-normalize.sh Testing/Data/Input --testing-data-repo ~/src/ITKTestingData +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py Testing/Data/Input \ + --testing-data-repo ~/src/ITKTestingData # Only process files that are currently .md5 / .shaNNN (skip existing .cid). -content-link-normalize.sh Modules --hash-only - -# Batch run with asynchronous remote pinning (returns without waiting for -# each remote to reach 'pinned'). Verify afterwards with `ipfs pin remote ls`. -content-link-normalize.sh Modules --hash-only --background +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py Modules --hash-only ``` -### Synchronous vs. asynchronous remote pinning - -Both `ipfs-upload.sh` and `content-link-normalize.sh` default to -**synchronous** remote pinning: `ipfs pin remote add` blocks until the -remote reports `pinned`, which surfaces failures immediately and is -safest for one-off uploads. Remote fetch can take minutes per file, -however, which is impractical for batch runs. - -Pass `--background` to submit pin requests asynchronously — the remote -queues the pin and fetches the content itself, and the script returns -right away. Check final pin state with: - -```bash -ipfs pin remote ls --service=itk-filebase --status=queued,pinning,pinned -# Only when itk-pinata is configured (paid Pinata plan): -ipfs pin remote ls --service=itk-pinata --status=queued,pinning,pinned -``` - -Both scripts also pre-check each remote for an existing pin on the same -CID and skip the `pin remote add` call if one is already queued, pinning, -or pinned — this prevents `DUPLICATE_OBJECT` (400) errors on Pinata when -re-running on already-uploaded content. - ## Content Link Manifest `Testing/Data/content-links.manifest` is a plain-text index of every CID the @@ -291,9 +196,9 @@ Rules: - `` is a repo-relative path and **must not contain whitespace** — the manifest uses a single space as the field delimiter. Rename files with spaces before uploading. -- `ipfs-upload.sh` maintains this file automatically: entries are added on - first upload and replaced on re-upload. The data lines are sorted by path - for a minimal review diff; comment lines at the top are preserved. +- `upload.py` maintains this file automatically: entries are added on first + upload and replaced on re-upload. The data lines are sorted by path for a + minimal review diff; comment lines at the top are preserved. - The manifest should be committed alongside the `.cid` files the upload produced. @@ -322,45 +227,31 @@ CID, and the cache lookup misses. ## Troubleshooting -### `ipfs command not found on PATH` +### `ERROR: 'npx' not found on PATH` -Install Kubo (see step 1 above). If using IPFS Desktop on macOS, the app -installs `/usr/local/bin/ipfs` automatically; on Linux, IPFS Desktop does not -install a CLI symlink, so either add Kubo separately or point your shell at -the bundled binary inside the AppImage. +The pixi environment is not active. Run the helpers via `pixi run -e +external-data-upload python ...`, or activate the environment first with +`pixi shell -e external-data-upload`. -### `IPFS daemon does not appear to be running` +### `ERROR: Missing Filebase credentials` -Start the daemon: `ipfs daemon` in a separate terminal, or launch IPFS -Desktop. The script tests the connection with `ipfs swarm peers`, which -requires an active daemon. +Export `FILEBASE_ACCESS_KEY`, `FILEBASE_SECRET_KEY`, and `FILEBASE_BUCKET` +(or pass `--bucket`) before running the upload script. See setup step 3. -### `Required pinning service 'itk-filebase' is not configured` - -Run `ipfs pin remote service ls` to see configured services. Re-add with the -commands in step 3 above. Tokens may have expired if you revoked the API key. -The script intentionally refuses to upload if `itk-filebase` is missing — it -is the baseline pin provider that works on the free tier. `itk-pinata` is -optional (paid plan only); if it isn't registered the script prints a -notice and continues. - -### `PAID_FEATURE_ONLY` / `403 Forbidden` from Pinata - -Pinata's free plan no longer accepts pin-by-CID via the IPFS Pinning Service -API; their `pin remote add` endpoint is gated to paid plans. If you don't -have a paid plan, remove the service so the upload script skips it cleanly: - -```bash -ipfs pin remote service rm itk-pinata -``` +### `Filebase did not return a CID for ...` -Filebase + the GitHub Pages mirror still provide redundancy. +The CAR was uploaded but Filebase did not import it. Common causes: -### Remote pin failed +- The bucket is a regular S3 bucket, not an **IPFS** bucket — recreate at + . +- The S3 access key is read-only or scoped to a different bucket. +- Filebase rate-limited the request — retry after a few seconds. -The script prints retry commands for any failed pins. Common causes: +### `CID mismatch: local=... filebase=...` -- **Expired API token** — regenerate at the service dashboard -- **Rate limiting** — wait a moment and retry -- **Large file timeout** — the file may take time to transfer; retry the - printed `ipfs pin remote add` command manually +The CID this client computed (via `npx ipfs-car`) and the CID Filebase +reported after import disagree. This indicates a chunker/profile drift +between the local ipfs-car version and Filebase's importer. Confirm +`pixi run -e external-data-upload npx ipfs-car --version` is v1 or newer, +then retry; if the mismatch persists, file an issue and include both CIDs +in the report. diff --git a/Utilities/Maintenance/ExternalDataUpload/SKILL.md b/Utilities/Maintenance/ExternalDataUpload/SKILL.md index 78d983ebf9e..f90bb573430 100644 --- a/Utilities/Maintenance/ExternalDataUpload/SKILL.md +++ b/Utilities/Maintenance/ExternalDataUpload/SKILL.md @@ -1,14 +1,13 @@ --- name: external-data-upload description: > - Upload ITK test data to IPFS and produce .cid content links, pin on - itk-filebase (and itk-pinata if configured — Pinata is optional because - pin-by-CID requires a paid plan there), optionally mirror into - ITKTestingData, and normalize existing .md5 / .sha256 / .cid content - links. Use when the - user wants to add test images, baseline data, or model files under - Testing/Data/ or a module's data/ directory, or when asked to convert - hash-based content links to CID. + Upload ITK test data to Filebase IPFS storage and produce .cid content + links via the S3 REST API + npx ipfs-car (no Kubo daemon required), + optionally mirror into ITKTestingData, and normalize existing + .md5 / .sha256 / .cid content links. Use when the user wants to add + test images, baseline data, or model files under Testing/Data/ or a + module's data/ directory, or when asked to convert hash-based content + links to CID. allowed-tools: - Bash - Read @@ -16,75 +15,73 @@ allowed-tools: # ITK External Data Upload -Upload a file to IPFS and replace it with a `.cid` content link, maintain the -`Testing/Data/content-links.manifest`, and (optionally) mirror the bytes into -`ITKTestingData` for the GitHub Pages gateway. Also: regenerate existing -`.md5` / `.sha256` / `.cid` content links under the UnixFS v1 2025 profile. +Upload a file to Filebase IPFS storage and replace it with a `.cid` content +link, maintain `Testing/Data/content-links.manifest`, and (optionally) mirror +the bytes into `ITKTestingData` for the GitHub Pages gateway. Also: regenerate +existing `.md5` / `.sha256` / `.cid` content links under the unixfs-v1-2025 +profile. ## Prerequisites -The developer must have IPFS and pinning services configured. If not, direct -them to [`README.md`](./README.md) in this directory. +The developer must have the `external-data-upload` pixi environment installed +and Filebase credentials exported. If not, direct them to +[`README.md`](./README.md) in this directory. Required: -- IPFS daemon running (`ipfs daemon` or IPFS Desktop) -- UnixFS v1 2025 profile applied (`ipfs config profile apply unixfs-v1-2025`) -- `itk-filebase` remote pinning service configured (works on the free tier) +- pixi environment installed: `pixi install -e external-data-upload` +- Filebase IPFS bucket with an S3 access key +- Environment variables exported: `FILEBASE_ACCESS_KEY`, + `FILEBASE_SECRET_KEY`, `FILEBASE_BUCKET` -Optional: - -- `itk-pinata` remote pinning service configured. Pinata's pin-by-CID - endpoint is **paid-only** — the free plan rejects PSA `pin remote add` - with `PAID_FEATURE_ONLY` (403). The upload script skips this service - with a notice if it isn't registered. +A local Kubo daemon, IPFS Desktop, or any `ipfs pin remote` PSA service is +**not** required — the upload talks to Filebase's S3 REST API directly and +relies on `npx ipfs-car` (installed via Node.js in the pixi environment) for +local CAR construction. ## Tasks this skill handles ### 1. Upload a single file -Run the upload script: +Run the upload script via pixi: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py ``` If the user mentions `ITKTestingData` or asks you to mirror the bytes to GitHub Pages, pass `--testing-data-repo `: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh \ +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py \ --testing-data-repo \ ``` The script will: -1. Add to IPFS with `--cid-version=1` (UnixFS v1 2025 profile) -2. Pin locally and on `itk-filebase`; also on `itk-pinata` if registered - (skipped with a notice when only Filebase is configured) +1. Pack the file into a CARv1 with `npx ipfs-car pack --no-wrap` + (defaults match the unixfs-v1-2025 profile) +2. Upload the CAR to the Filebase IPFS bucket via boto3 with + `Metadata={"import": "car"}` and verify the CID returned by + `head_object` matches the local CID 3. If `--testing-data-repo` given and file ≤ 50 MB, copy to `/CID/` and `git add` it there. Files over 50 MB are skipped - for the mirror step only (GitHub rejects > 50 MB) — IPFS pinning still + for the mirror step only (GitHub rejects > 50 MB) — Filebase pinning still succeeds. 4. Replace the source file with `.cid` 5. Update `Testing/Data/content-links.manifest` -### 2. Pin every CID from the manifest - -```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh -``` - -Use for bootstrapping a new IPFS node or re-pinning after rotating a provider. - -### 3. Normalize existing content links +### 2. Normalize existing content links Use when the user wants to convert `.md5` / `.sha256` / `.sha512` links to -`.cid`, or re-generate `.cid` links under the UnixFS v1 2025 profile. +`.cid`, or re-generate `.cid` links under the unixfs-v1-2025 profile. ```bash -Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/normalize.py ``` Useful options: @@ -92,16 +89,13 @@ Useful options: - `--dry-run` — report what would change - `--hash-only` — only touch `.md5` / `.shaNNN` links, leave `.cid` alone - `--cid-only` — only re-hash existing `.cid` links under the new profile -- `--testing-data-repo ` — forwarded to `ipfs-upload.sh` -- `--background` — forwarded to `ipfs-upload.sh`; submit remote pins - asynchronously instead of waiting for each to reach `pinned`. Use for - batch runs where synchronous pinning would take minutes per file. - Verify final state afterwards with `ipfs pin remote ls`. +- `--testing-data-repo ` — forwarded to the upload helper +- `--bucket ` — Filebase bucket override (default: `$FILEBASE_BUCKET`) The normalize script fetches bytes through the gateway templates in `CMake/ITKExternalData.cmake` (same order as the build), verifies them -against the declared hash or CID, and invokes `ipfs-upload.sh` to produce -the new `.cid`. +against the declared hash or CID, and calls `upload.upload_file_to_filebase` +to produce the new `.cid`. ## After Upload diff --git a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh b/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh deleted file mode 100755 index 6c49720b5b4..00000000000 --- a/Utilities/Maintenance/ExternalDataUpload/content-link-normalize.sh +++ /dev/null @@ -1,456 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Normalize ITK content links: convert .md5 / .shaNNN links to .cid and -# regenerate existing .cid links under the UnixFS v1 2025 profile. -# -# For each content link found, the script: -# 1. Fetches the bytes via the gateway templates declared in -# CMake/ITKExternalData.cmake (identical order to the build). -# 2. Verifies the bytes against the declared hash or CID. -# 3. Re-materialises the actual file alongside the link, then invokes -# ipfs-upload.sh on it so a fresh CID is produced under the UnixFS -# v1 2025 profile, pinned on itk-filebase (and on itk-pinata if -# configured — see ipfs-upload.sh), and (optionally) mirrored -# into ITKTestingData. -# -# Usage: -# content-link-normalize.sh [options] -# -# Options: -# --testing-data-repo Forwarded to ipfs-upload.sh. Local -# ITKTestingData clone to mirror bytes into. -# --background Forwarded to ipfs-upload.sh. Submit remote -# pin requests asynchronously; useful for -# batch runs where waiting for each pin to -# reach 'pinned' status (minutes per file) -# is impractical. Verify final pin state -# afterwards with `ipfs pin remote ls`. -# --dry-run List what would change without modifying. -# --hash-only Process only .md5 / .shaNNN links -# (leave existing .cid links alone). -# --cid-only Process only .cid links -# (re-hash under UnixFS v1 2025 profile). -# -h|--help Show this help. -# -# Exit codes: -# 0 — all content links normalized -# 1 — usage / environment error -# 2 — one or more links failed to fetch, verify, or re-upload - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" -CMAKE_FILE="$REPO_ROOT/CMake/ITKExternalData.cmake" -UPLOAD_SCRIPT="$SCRIPT_DIR/ipfs-upload.sh" - -info() { printf '==> %s\n' "$*"; } -warn() { printf 'WARN: %s\n' "$*" >&2; } -die() { printf 'ERROR: %s\n' "$*" >&2; exit 1; } - -show_help() { - sed -n '3,/^$/{ s/^# \?//; p }' "$0" - exit 0 -} - -# --------------------------------------------------------------------------- -# Argument parsing -# --------------------------------------------------------------------------- - -TESTING_DATA_REPO="" -BACKGROUND=false -DRY_RUN=false -HASH_ONLY=false -CID_ONLY=false -TARGET="" - -while [[ $# -gt 0 ]]; do - case "$1" in - -h|--help) show_help ;; - --dry-run) DRY_RUN=true; shift ;; - --hash-only) HASH_ONLY=true; shift ;; - --cid-only) CID_ONLY=true; shift ;; - --background) BACKGROUND=true; shift ;; - --testing-data-repo) - TESTING_DATA_REPO="${2:?--testing-data-repo requires a path}" - shift 2 - ;; - --testing-data-repo=*) - TESTING_DATA_REPO="${1#--testing-data-repo=}" - shift - ;; - -*) die "Unknown option: $1" ;; - *) - [[ -z "$TARGET" ]] || die "Unexpected positional arg: $1" - TARGET="$1" - shift - ;; - esac -done - -[[ -n "$TARGET" ]] || die "Path or file required. Example: content-link-normalize.sh Testing/Data/Input" -[[ -e "$TARGET" ]] || die "Not found: $TARGET" -[[ -f "$CMAKE_FILE" ]] || die "Cannot find $CMAKE_FILE" -[[ -x "$UPLOAD_SCRIPT" ]] || die "Cannot find or execute $UPLOAD_SCRIPT" - -if $HASH_ONLY && $CID_ONLY; then - die "--hash-only and --cid-only are mutually exclusive" -fi - -# --------------------------------------------------------------------------- -# Prerequisites -# --------------------------------------------------------------------------- - -command -v curl >/dev/null 2>&1 || die "curl is required" -command -v ipfs >/dev/null 2>&1 || die "ipfs is required (for CID recomputation)" - -# Resolve the local command that computes a digest for an algorithm. -# Returns a command line (possibly multi-word, e.g. "shasum -a 256") whose -# first whitespace-delimited token on stdout is the hex digest. -# -# Prefers GNU coreutils (`md5sum`, `shaNNNsum`) when present; falls back to -# the BSD/macOS tools that ship by default on macOS: `md5 -r` (output format -# matches md5sum) and `shasum -a NNN`. On macOS you can install coreutils -# via `brew install coreutils` to get the `*sum` variants as well. -hash_cmd_for_ext() { - case "$1" in - md5) - if command -v md5sum >/dev/null 2>&1; then - echo "md5sum" - elif command -v md5 >/dev/null 2>&1; then - # BSD md5; -r prints ` ` like md5sum. - echo "md5 -r" - else - return 1 - fi - ;; - sha1|sha224|sha256|sha384|sha512) - if command -v "${1}sum" >/dev/null 2>&1; then - echo "${1}sum" - elif command -v shasum >/dev/null 2>&1; then - echo "shasum -a ${1#sha}" - else - return 1 - fi - ;; - *) - return 1 - ;; - esac -} - -# ITK content links in practice use `.md5` (legacy) or `.sha512` (current); -# other sha variants are supported for completeness but not pre-checked. -for alg in md5 sha512; do - hash_cmd_for_ext "$alg" >/dev/null 2>&1 \ - || warn "no tool available to compute ${alg}; any .${alg} content links will fail to verify" -done - -# --------------------------------------------------------------------------- -# Parse ExternalData_URL_TEMPLATES from CMake/ITKExternalData.cmake -# --------------------------------------------------------------------------- -# -# Matches the order in the .cmake file exactly. The block we want looks like: -# -# list( -# APPEND -# ExternalData_URL_TEMPLATES -# # comment -# "https://.../%(hash)" -# ... -# ) -# -# Strategy: join the whole file into one logical string, locate the -# `list(... ExternalData_URL_TEMPLATES ... )` invocation by matching -# balanced parentheses, then print every quoted template inside it that -# contains %(hash). - -readarray -t URL_TEMPLATES < <( - awk ' - BEGIN { depth = 0; in_block = 0 } - { - line = $0 - # Trim leading whitespace. - sub(/^[[:space:]]+/, "", line) - - # Enter the block when we see `list(` followed somewhere by - # `ExternalData_URL_TEMPLATES` at depth 1. We buffer tokens - # at depth 1 until we are sure. - if (!in_block && line ~ /^list[[:space:]]*\(/) { - pending_list = 1 - depth = 1 - next - } - if (pending_list) { - if (line ~ /ExternalData_URL_TEMPLATES/) { - in_block = 1 - pending_list = 0 - next - } - # Track depth so we know when the list(...) we rejected ends. - n_open = gsub(/\(/, "(", line) - n_close = gsub(/\)/, ")", line) - depth += n_open - n_close - if (depth <= 0) { pending_list = 0; depth = 0 } - next - } - - if (in_block) { - if (line ~ /^#/) next - if (line ~ /^\)/) { in_block = 0; depth = 0; next } - if (match(line, /"[^"]+"/)) { - tmpl = substr(line, RSTART + 1, RLENGTH - 2) - if (tmpl ~ /%\(hash\)/) print tmpl - } - } - } - ' "$CMAKE_FILE" -) - -if [[ ${#URL_TEMPLATES[@]} -eq 0 ]]; then - die "Failed to parse ExternalData_URL_TEMPLATES from $CMAKE_FILE" -fi - -info "Loaded ${#URL_TEMPLATES[@]} gateway template(s) from CMake/ITKExternalData.cmake" - -# --------------------------------------------------------------------------- -# Helpers -# --------------------------------------------------------------------------- - -# Algorithm mapping: extension -> uppercase algorithm name for %(algo). -# Matches CMake ExternalData.cmake's _ExternalData_link_content behaviour. -algo_uc_for_ext() { - case "$1" in - md5) echo "MD5" ;; - sha1) echo "SHA1" ;; - sha224) echo "SHA224" ;; - sha256) echo "SHA256" ;; - sha384) echo "SHA384" ;; - sha512) echo "SHA512" ;; - # CID uses a lowercase override in ITKExternalData.cmake - # (ExternalData_URL_ALGO_CID_lower = cid). - cid) echo "cid" ;; - *) return 1 ;; - esac -} - -# Substitute %(algo) / %(hash) in a URL template. -render_url() { - local template="$1" algo="$2" hash="$3" - local url="${template//%(algo)/$algo}" - url="${url//%(hash)/$hash}" - printf '%s\n' "$url" -} - -# Fetch a content link into a tempfile, verifying the bytes correspond to -# the declared digest or CID. Prints the path of the verified tempfile on -# success. -# -# For CID links: `ipfs cat` is the primary fetch path because the daemon -# verifies the returned bytes server-side against the requested CID. -# Public IPFS HTTP gateways (paths containing /ipfs/) also verify -# server-side, so fetches from those URLs are accepted without local -# recomputation. Local `ipfs add --only-hash` is NOT used for verification -# because it can produce a different CID from the stored one when the -# original upload used non-default chunker or hash parameters — chunker -# drift is exactly what the UnixFS v1 2025 profile is meant to fix, so a -# mismatch would be expected, not an error. -# -# For hash links (.md5, .shaNNN): non-IPFS gateways only serve bytes by -# name, so we recompute the digest locally and compare. -fetch_and_verify() { - local ext="$1" # cid / md5 / shaNNN - local value="$2" # the actual hash or CID - local out - out="$(mktemp -t itk-content-link.XXXXXX)" - - local algo_uc - algo_uc="$(algo_uc_for_ext "$ext")" || { - warn "Unknown content-link extension: .${ext}" - rm -f "$out" - return 1 - } - - # Fast path for .cid: fetch via the running daemon. Verification is - # implicit — the daemon refuses to return bytes that do not hash back - # to the CID. - if [[ "$ext" == "cid" ]]; then - if ipfs cat "$value" > "$out" 2>/dev/null && [[ -s "$out" ]]; then - printf '%s\n' "$out" - return 0 - fi - fi - - local template rendered - for template in "${URL_TEMPLATES[@]}"; do - rendered="$(render_url "$template" "$algo_uc" "$value")" - - # IPFS gateway templates (path contains /ipfs/) only make sense for CIDs. - if [[ "$ext" != "cid" && "$rendered" == *"/ipfs/"* ]]; then - continue - fi - - if ! curl -sfL --connect-timeout 10 --max-time 120 -o "$out" "$rendered"; then - continue - fi - - if verify_bytes "$ext" "$value" "$out" "$rendered"; then - printf '%s\n' "$out" - return 0 - else - warn " content from ${rendered} did not verify; trying next gateway" - fi - done - - rm -f "$out" - return 1 -} - -# Verify that the fetched bytes at $file correspond to the declared link. -# -# For CID links: trust only fetches from IPFS HTTP gateways, which verify -# server-side (a CID-indexed path the server actually serves is by -# definition a path whose bytes hash to that CID). -# -# For hash links: recompute the digest and compare case-insensitively. -verify_bytes() { - local ext="$1" expected="$2" file="$3" source_url="${4:-}" - if [[ "$ext" == "cid" ]]; then - # IPFS HTTP gateways do server-side verification; accept those. - if [[ "$source_url" == *"/ipfs/"* ]]; then - [[ -s "$file" ]] - return - fi - # Non-IPFS origin (e.g. GitHub Pages mirror at .../CID/) — - # we cannot verify locally without risking chunker-drift false - # negatives, so reject. The `ipfs cat` fast path in - # fetch_and_verify is the canonical way to resolve a .cid. - return 1 - fi - - local cmd actual - cmd="$(hash_cmd_for_ext "$ext")" || return 1 - # Word-splitting is intentional — a fallback command like "shasum -a 256" - # expands to multiple argv entries, while the coreutils "md5sum" stays - # as a single argv entry. - # shellcheck disable=SC2086 - actual="$($cmd "$file" | awk '{print $1}')" - [[ "${actual,,}" == "${expected,,}" ]] -} - -# --------------------------------------------------------------------------- -# Enumerate targets -# --------------------------------------------------------------------------- - -if [[ -f "$TARGET" ]]; then - LINKS=("$TARGET") -else - LINKS=() - readarray -t LINKS < <( - find "$TARGET" -type f \( \ - -name "*.cid" \ - -o -name "*.md5" \ - -o -name "*.sha1" \ - -o -name "*.sha224" \ - -o -name "*.sha256" \ - -o -name "*.sha384" \ - -o -name "*.sha512" \ - \) | LC_ALL=C sort - ) -fi - -# Filter by --hash-only / --cid-only. Iterate defensively so `set -u` on an -# empty LINKS array (e.g. directory with no content links) does not error -# out on bash versions before 4.4. -FILTERED=() -if [[ ${#LINKS[@]} -gt 0 ]]; then - for link in "${LINKS[@]}"; do - ext="${link##*.}" - if $HASH_ONLY && [[ "$ext" == "cid" ]]; then continue; fi - if $CID_ONLY && [[ "$ext" != "cid" ]]; then continue; fi - FILTERED+=("$link") - done -fi - -if [[ ${#FILTERED[@]} -eq 0 ]]; then - info "No matching content links under ${TARGET}. Nothing to do." - exit 0 -fi - -LINKS=("${FILTERED[@]}") - -info "Processing ${#LINKS[@]} content link(s)..." -$DRY_RUN && info "(--dry-run: no files will be modified)" - -# --------------------------------------------------------------------------- -# Main loop -# --------------------------------------------------------------------------- - -UPLOAD_ARGS=() -if [[ -n "$TESTING_DATA_REPO" ]]; then - UPLOAD_ARGS+=(--testing-data-repo "$TESTING_DATA_REPO") -fi -if $BACKGROUND; then - UPLOAD_ARGS+=(--background) -fi - -FAIL=0 - -for link in "${LINKS[@]}"; do - ext="${link##*.}" - value="$(tr -d '[:space:]' < "$link")" - real_file="${link%.${ext}}" - - if [[ -z "$value" ]]; then - printf 'FAIL %s empty-content-link\n' "$link" >&2 - FAIL=$((FAIL + 1)) - continue - fi - - if $DRY_RUN; then - printf 'WOULD-NORMALIZE %s (%s=%s) -> %s.cid\n' \ - "$link" "$ext" "$value" "$real_file" - continue - fi - - info "Normalizing ${link} (${ext}=${value})" - - if [[ -e "$real_file" ]]; then - die "Refusing to normalize: ${real_file} already exists on disk. Delete or move it first." - fi - - tmp_bytes="" - if ! tmp_bytes="$(fetch_and_verify "$ext" "$value")"; then - printf 'FAIL %s fetch-or-verify-failed\n' "$link" >&2 - FAIL=$((FAIL + 1)) - continue - fi - - # Stage the real file next to the link, then re-upload via ipfs-upload.sh. - mv "$tmp_bytes" "$real_file" - - # Remove the old content link BEFORE running ipfs-upload.sh — the upload - # script rejects inputs that look like content links (defensive guard), - # but we also want a clean working tree if the upload fails. - rm -f "$link" - - if ! "$UPLOAD_SCRIPT" "${UPLOAD_ARGS[@]}" "$real_file"; then - printf 'FAIL %s upload-failed\n' "$link" >&2 - # Best-effort recovery: restore the original link file from its value. - # ipfs-upload.sh writes the .cid file and removes the data file before - # updating the manifest, so a failure in the manifest step can leave a - # .cid orphan alongside the restored original link — clean it up too. - printf '%s\n' "$value" > "$link" - rm -f "$real_file" "${real_file}.cid" - FAIL=$((FAIL + 1)) - continue - fi - - printf 'NORMALIZE %s (%s) -> %s.cid\n' "$link" "$ext" "$real_file" -done - -if (( FAIL > 0 )); then - warn "${FAIL} content link(s) failed to normalize." - exit 2 -fi - -info "Done. Review changes and commit as a STYLE: commit (see Documentation/AI/git-commits.md)." diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh deleted file mode 100755 index add07fd3188..00000000000 --- a/Utilities/Maintenance/ExternalDataUpload/ipfs-pin-all.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Batch-pin every CID in Testing/Data/content-links.manifest locally and on -# every configured remote pinning service (itk-filebase, plus itk-pinata or -# any other PSA-compatible remote if registered with `ipfs pin remote -# service add`). -# -# Usage: ipfs-pin-all.sh [--background] -# -# Options: -# --background Queue remote pins asynchronously (faster, no wait). - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" -MANIFEST="$REPO_ROOT/Testing/Data/content-links.manifest" - -BACKGROUND="" -while [[ $# -gt 0 ]]; do - case "$1" in - --background) - BACKGROUND="--background" - shift - ;; - -h|--help) - sed -n '4,11p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//' - exit 0 - ;; - *) - echo "ERROR: Unknown argument: $1" >&2 - echo "Usage: $(basename "${BASH_SOURCE[0]}") [--background]" >&2 - exit 2 - ;; - esac -done - -# --------------------------------------------------------------------------- -# Validate manifest -# --------------------------------------------------------------------------- - -if [[ ! -f "$MANIFEST" ]]; then - echo "ERROR: Manifest not found: $MANIFEST" >&2 - exit 1 -fi - -ENTRY_COUNT="$(grep -Evc '^(#|$)' "$MANIFEST" || true)" -if [[ "$ENTRY_COUNT" -eq 0 ]]; then - echo "Manifest is empty — nothing to pin." - exit 0 -fi - -# --------------------------------------------------------------------------- -# Prerequisites -# --------------------------------------------------------------------------- - -if ! command -v ipfs &>/dev/null; then - echo "ERROR: 'ipfs' command not found on PATH." >&2 - echo " Install Kubo: https://docs.ipfs.tech/install/command-line/" >&2 - exit 1 -fi - -if ! ipfs swarm peers &>/dev/null; then - echo "ERROR: IPFS daemon does not appear to be running." >&2 - echo " Start with: ipfs daemon" >&2 - exit 1 -fi - -# Discover configured remote services (none required for batch pinning). -CONFIGURED_SERVICES="$(ipfs pin remote service ls 2>/dev/null || true)" -SERVICES=() -while IFS= read -r line; do - svc="$(echo "$line" | awk '{print $1}')" - if [[ -n "$svc" ]]; then - SERVICES+=("$svc") - fi -done <<< "$CONFIGURED_SERVICES" - -if [[ ${#SERVICES[@]} -eq 0 ]]; then - echo "WARNING: No remote pinning services configured." >&2 - echo " Only local pinning will be performed." >&2 -fi - -# --------------------------------------------------------------------------- -# Pin each CID -# --------------------------------------------------------------------------- - -TOTAL=0 -LOCAL_FAILED=0 -LOCAL_FAILED_ENTRIES=() -REMOTE_FAILED=0 -REMOTE_FAILED_ENTRIES=() - -echo "==> Pinning ${ENTRY_COUNT} CIDs from manifest..." -if [[ -n "$BACKGROUND" ]]; then - echo " (remote pins queued in background)" -fi -echo "" - -while IFS= read -r line; do - # Skip comments and empty lines. - [[ "$line" =~ ^# ]] && continue - [[ -z "$line" ]] && continue - - CID="$(echo "$line" | awk '{print $1}')" - FILEPATH="$(echo "$line" | awk '{print $2}')" - - # Skip malformed lines (missing CID or filepath). - if [[ -z "$CID" || -z "$FILEPATH" ]]; then - echo "WARNING: Skipping malformed manifest line: $line" >&2 - continue - fi - - PIN_NAME="$(basename "$FILEPATH")" - TOTAL=$((TOTAL + 1)) - - echo "==> [${TOTAL}/${ENTRY_COUNT}] ${FILEPATH}" - echo " CID: ${CID}" - - # Local pin. - if ! ipfs pin add "$CID" >/dev/null 2>&1; then - echo " FAILED: local pin" >&2 - LOCAL_FAILED=$((LOCAL_FAILED + 1)) - LOCAL_FAILED_ENTRIES+=("$FILEPATH") - continue - fi - echo " OK: local" - - # Remote pins. - for svc in "${SERVICES[@]}"; do - # Skip services where this CID is already queued/pinning/pinned — - # Pinata rejects duplicate `pin remote add` calls with - # DUPLICATE_OBJECT (400). Same guard as ipfs-upload.sh. - if ipfs pin remote ls --service="$svc" --cid="$CID" \ - --status=queued,pinning,pinned 2>/dev/null | grep -q .; then - echo " OK: ${svc} (already pinned)" - continue - fi - - if ipfs pin remote add --service="$svc" --name="$PIN_NAME" $BACKGROUND "$CID" >/dev/null 2>&1; then - echo " OK: ${svc}" - else - echo " FAILED: ${svc}" >&2 - REMOTE_FAILED=$((REMOTE_FAILED + 1)) - if ! printf '%s\n' "${REMOTE_FAILED_ENTRIES[@]+"${REMOTE_FAILED_ENTRIES[@]}"}" | grep -qxF "$FILEPATH"; then - REMOTE_FAILED_ENTRIES+=("$FILEPATH") - fi - fi - done -done < "$MANIFEST" - -# --------------------------------------------------------------------------- -# Summary -# --------------------------------------------------------------------------- - -echo "" -echo "==> Batch pin complete: ${TOTAL} CIDs processed." - -EXIT_CODE=0 - -if [[ $LOCAL_FAILED -gt 0 ]]; then - echo "" >&2 - echo "ERROR: ${LOCAL_FAILED} CID(s) failed local pinning:" >&2 - for entry in "${LOCAL_FAILED_ENTRIES[@]}"; do - echo " - ${entry}" >&2 - done - EXIT_CODE=1 -fi - -if [[ $REMOTE_FAILED -gt 0 ]]; then - echo "" >&2 - echo "WARNING: ${REMOTE_FAILED} remote pin submission(s) failed:" >&2 - for entry in "${REMOTE_FAILED_ENTRIES[@]}"; do - echo " - ${entry}" >&2 - done - EXIT_CODE=1 -fi - -exit $EXIT_CODE diff --git a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh b/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh deleted file mode 100755 index fb1cb27ba2c..00000000000 --- a/Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +++ /dev/null @@ -1,359 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Upload a file to IPFS (CIDv1, UnixFS v1 2025 profile), pin it on the -# itk-filebase remote pinning service (and on itk-pinata if it is -# configured — Pinata is optional because pin-by-CID is a paid-plan -# feature there), and replace the original with a .cid content link. -# Optionally mirror the bytes into a local ITKTestingData checkout at -# CID/. -# -# Usage: -# ipfs-upload.sh [--testing-data-repo ] [--background] -# -# Options: -# --testing-data-repo Path to a local clone of -# https://github.com/InsightSoftwareConsortium/ITKTestingData -# The uploaded bytes are copied to -# /CID/ and `git add`ed there. -# Skipped with a warning for files > 50 MB, -# which GitHub rejects. -# --background Submit remote pin requests asynchronously -# (pins queue at itk-pinata / itk-filebase and -# the script returns without waiting). Useful -# for batch workflows. Default is synchronous, -# which blocks until each remote reports -# 'pinned' — safer for one-off uploads because -# failures surface immediately, but can take -# minutes per file as the remote fetches the -# content. -# -# Prerequisites: -# - Kubo (go-ipfs) installed and `ipfs` on PATH -# - IPFS daemon running (ipfs daemon, or IPFS Desktop) -# - UnixFS v1 2025 profile applied: `ipfs config profile apply unixfs-v1-2025` -# - `itk-filebase` remote pinning service configured (required) -# - `itk-pinata` remote pinning service configured (optional — Pinata's -# pin-by-CID endpoint is paid-only, so configure it only if you have -# a paid plan) -# -# See README.md in this directory for full setup. - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" - -# Required pinning service — Filebase's free tier supports pin-by-CID -# via the IPFS Pinning Service API, so we always need this one. -REQUIRED_SERVICES=(itk-filebase) - -# Optional pinning service — Pinata's pin-by-CID endpoint requires a paid -# plan (their free tier rejects PSA `pin remote add` with -# PAID_FEATURE_ONLY/403). Pinned to if configured, skipped with a notice -# if not. -OPTIONAL_SERVICES=(itk-pinata) - -# GitHub hard-rejects pushes containing any file > 50 MB. The ITKTestingData -# mirror step is skipped for files over this limit. -GITHUB_FILE_LIMIT_BYTES=$((50 * 1024 * 1024)) - -# --------------------------------------------------------------------------- -# Argument parsing -# --------------------------------------------------------------------------- - -TESTING_DATA_REPO="" -BACKGROUND="" -FILE="" - -while [[ $# -gt 0 ]]; do - case "$1" in - --testing-data-repo) - TESTING_DATA_REPO="${2:?--testing-data-repo requires a path}" - shift 2 - ;; - --testing-data-repo=*) - TESTING_DATA_REPO="${1#--testing-data-repo=}" - shift - ;; - --background) - BACKGROUND="--background" - shift - ;; - -h|--help) - sed -n '3,/^$/{ s/^# \?//; p }' "$0" - exit 0 - ;; - -*) - echo "ERROR: Unknown option: $1" >&2 - exit 1 - ;; - *) - if [[ -n "$FILE" ]]; then - echo "ERROR: Unexpected positional argument: $1" >&2 - exit 1 - fi - FILE="$1" - shift - ;; - esac -done - -if [[ -z "$FILE" ]]; then - echo "Usage: $0 [--testing-data-repo ] " >&2 - exit 1 -fi - -if [[ ! -f "$FILE" ]]; then - echo "ERROR: File not found: $FILE" >&2 - exit 1 -fi - -# Guard: reject symlinks (realpath would resolve to the target, and rm would -# delete the target file rather than the symlink itself). -if [[ -L "$FILE" ]]; then - echo "ERROR: Symlink paths are not supported: $FILE" >&2 - echo " Pass the real file path instead." >&2 - exit 1 -fi - -ABSOLUTE_FILE="$(realpath "$FILE")" - -# Guard: file must be inside the repository. -if [[ "$ABSOLUTE_FILE" != "$REPO_ROOT"/* ]]; then - echo "ERROR: File must be inside the repository: $ABSOLUTE_FILE" >&2 - exit 1 -fi - -# Guard: reject files that are already content links. -for ext in cid md5 sha1 sha224 sha256 sha384 sha512; do - if [[ "$FILE" == *."${ext}" ]]; then - echo "ERROR: File is already a .${ext} content link: $FILE" >&2 - exit 1 - fi -done - -REL_FILE="${ABSOLUTE_FILE#"$REPO_ROOT/"}" - -# Guard: reject paths with whitespace (manifest format uses space as delimiter). -if [[ "$REL_FILE" =~ [[:space:]] ]]; then - echo "ERROR: Filepath contains whitespace, which is not supported: $REL_FILE" >&2 - echo " Rename the file to remove spaces before uploading." >&2 - exit 1 -fi - -PIN_NAME="$(basename "$ABSOLUTE_FILE")" - -# --------------------------------------------------------------------------- -# Validate --testing-data-repo path (before any IPFS work) -# --------------------------------------------------------------------------- - -if [[ -n "$TESTING_DATA_REPO" ]]; then - if [[ ! -d "$TESTING_DATA_REPO" ]]; then - echo "ERROR: --testing-data-repo path is not a directory: $TESTING_DATA_REPO" >&2 - exit 1 - fi - if [[ ! -d "$TESTING_DATA_REPO/.git" ]]; then - echo "ERROR: --testing-data-repo is not a git checkout: $TESTING_DATA_REPO" >&2 - exit 1 - fi - TESTING_DATA_REPO="$(realpath "$TESTING_DATA_REPO")" -fi - -# --------------------------------------------------------------------------- -# Prerequisites -# --------------------------------------------------------------------------- - -if ! command -v ipfs &>/dev/null; then - echo "ERROR: 'ipfs' command not found on PATH." >&2 - echo " Install Kubo: https://docs.ipfs.tech/install/command-line/" >&2 - echo " See: Utilities/Maintenance/ExternalDataUpload/README.md" >&2 - exit 1 -fi - -if ! ipfs swarm peers &>/dev/null; then - echo "ERROR: IPFS daemon does not appear to be running." >&2 - echo " Start with: ipfs daemon" >&2 - echo " Or launch IPFS Desktop." >&2 - exit 1 -fi - -# Check required remote pinning services are configured. Optional services -# are recorded so they're attempted in addition to the required ones; a -# missing optional service is reported but does not abort the upload. -CONFIGURED_SERVICES="$(ipfs pin remote service ls 2>/dev/null || true)" -for svc in "${REQUIRED_SERVICES[@]}"; do - if ! echo "$CONFIGURED_SERVICES" | grep -q "^${svc} "; then - echo "ERROR: Required pinning service '${svc}' is not configured." >&2 - echo " See: Utilities/Maintenance/ExternalDataUpload/README.md" >&2 - exit 1 - fi -done - -ACTIVE_SERVICES=("${REQUIRED_SERVICES[@]}") -for svc in "${OPTIONAL_SERVICES[@]}"; do - if echo "$CONFIGURED_SERVICES" | grep -q "^${svc} "; then - ACTIVE_SERVICES+=("$svc") - else - echo "==> Optional pinning service '${svc}' is not configured; skipping." - fi -done - -# --------------------------------------------------------------------------- -# Add to IPFS -# --------------------------------------------------------------------------- - -echo "==> Adding ${PIN_NAME} to IPFS (CIDv1, UnixFS v1 2025 profile)..." -CID="$(ipfs add --cid-version=1 --quieter "$ABSOLUTE_FILE")" - -if [[ -z "$CID" ]]; then - echo "ERROR: ipfs add returned an empty CID." >&2 - exit 1 -fi - -echo " CID: ${CID}" - -# --------------------------------------------------------------------------- -# Pin locally (ipfs add already pins, but be explicit) -# --------------------------------------------------------------------------- - -echo "==> Pinning locally..." -ipfs pin add "$CID" >/dev/null - -# --------------------------------------------------------------------------- -# Pin on remote services -# --------------------------------------------------------------------------- - -FAILED_PINS=() - -for svc in "${ACTIVE_SERVICES[@]}"; do - # Skip services where this CID is already queued/pinning/pinned — - # Pinata rejects duplicate `pin remote add` calls with - # DUPLICATE_OBJECT (400), and resubmitting on Filebase just makes a - # second queue entry. - if ipfs pin remote ls --service="$svc" --cid="$CID" \ - --status=queued,pinning,pinned 2>/dev/null | grep -q .; then - echo "==> Already pinned (or in flight) on ${svc}; skipping" - continue - fi - - if [[ -n "$BACKGROUND" ]]; then - echo "==> Queueing pin on ${svc} (background)..." - else - echo "==> Pinning on ${svc}..." - fi - if ipfs pin remote add --service="$svc" --name="$PIN_NAME" $BACKGROUND "$CID" 2>&1; then - echo " OK: ${svc}" - else - echo " FAILED: ${svc}" >&2 - FAILED_PINS+=("$svc") - fi -done - -if [[ ${#FAILED_PINS[@]} -gt 0 ]]; then - echo "" >&2 - echo "ERROR: Remote pin submission failed for: ${FAILED_PINS[*]}" >&2 - echo " The original file has NOT been modified." >&2 - echo " Fix the issue and retry, or pin manually:" >&2 - for failed_svc in "${FAILED_PINS[@]}"; do - echo " ipfs pin remote add --service=${failed_svc} --name=\"${PIN_NAME}\" ${BACKGROUND} ${CID}" >&2 - done - exit 1 -fi - -# --------------------------------------------------------------------------- -# Mirror into ITKTestingData (optional, size-gated) -# --------------------------------------------------------------------------- - -FILE_SIZE_BYTES="$(stat -c '%s' "$ABSOLUTE_FILE" 2>/dev/null || stat -f '%z' "$ABSOLUTE_FILE")" - -if [[ -n "$TESTING_DATA_REPO" ]]; then - if (( FILE_SIZE_BYTES > GITHUB_FILE_LIMIT_BYTES )); then - echo "" >&2 - echo "WARNING: ${PIN_NAME} is ${FILE_SIZE_BYTES} bytes (> 50 MB)." >&2 - echo " GitHub rejects pushes containing files > 50 MB, so it" >&2 - echo " will NOT be mirrored to ITKTestingData." >&2 - echo " IPFS pin (local + ${ACTIVE_SERVICES[*]}) succeeded;" >&2 - echo " the .cid content link will still be produced." >&2 - else - MIRROR_DIR="$TESTING_DATA_REPO/CID" - MIRROR_PATH="$MIRROR_DIR/$CID" - mkdir -p "$MIRROR_DIR" - echo "==> Mirroring to ITKTestingData: CID/${CID}" - cp "$ABSOLUTE_FILE" "$MIRROR_PATH" - if ! git -C "$TESTING_DATA_REPO" add "CID/$CID"; then - echo "ERROR: Failed to 'git add CID/$CID' in $TESTING_DATA_REPO" >&2 - rm -f "$MIRROR_PATH" - exit 1 - fi - fi -fi - -# --------------------------------------------------------------------------- -# Replace original file with .cid content link -# (only reached after all required remote pins succeeded) -# -# Ordering hazard: the .cid file is written and the original data file is -# removed BEFORE the manifest update below. If the process is killed or hits -# a disk-full error between here and the `mv` of "${MANIFEST}.tmp", the -# original is gone, the .cid link exists, but the manifest is not updated. -# content-link-normalize.sh's recovery block restores the original link and -# also removes any orphan .cid in that case. A standalone `ipfs-upload.sh` -# crash here leaves the working tree consistent (CID file present, original -# absent) but the manifest stale; the user can re-run after repairing. -# --------------------------------------------------------------------------- - -CID_FILE="${ABSOLUTE_FILE}.cid" -REL_CID="${CID_FILE#"$REPO_ROOT/"}" -printf '%s\n' "$CID" > "$CID_FILE" -rm "$ABSOLUTE_FILE" - -# --------------------------------------------------------------------------- -# Update content link manifest -# --------------------------------------------------------------------------- - -MANIFEST="$REPO_ROOT/Testing/Data/content-links.manifest" - -if [[ -f "$MANIFEST" ]]; then - # Remove existing entry for this filepath (re-upload case). - # Use awk for exact string match (grep would treat dots as wildcards). - awk -v path="$REL_FILE" '$2 != path' "$MANIFEST" > "${MANIFEST}.tmp" - mv "${MANIFEST}.tmp" "$MANIFEST" -else - # Seed a fresh manifest with a brief header. - cat > "$MANIFEST" <<'EOF' -# ITK content-link manifest -# One CID per line, format: -# Maintained by Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh -EOF -fi - -# Append the new entry. -printf '%s %s\n' "$CID" "$REL_FILE" >> "$MANIFEST" - -# Sort data lines by filepath; preserve comment header at top. -{ - grep '^#' "$MANIFEST" || true - grep -v '^#' "$MANIFEST" | grep -v '^$' | LC_ALL=C sort -k2 -} > "${MANIFEST}.tmp" -mv "${MANIFEST}.tmp" "$MANIFEST" - -echo "" -echo "==> Upload complete." -echo " CID: ${CID}" -echo " Link: ${CID_FILE}" - -# --------------------------------------------------------------------------- -# Suggest git commands -# --------------------------------------------------------------------------- - -echo "" -echo "Next steps (ITK repository):" -echo " git rm \"${REL_FILE}\"" -echo " git add \"${REL_CID}\"" -echo " git add Testing/Data/content-links.manifest" - -if [[ -n "$TESTING_DATA_REPO" && $FILE_SIZE_BYTES -le $GITHUB_FILE_LIMIT_BYTES ]]; then - echo "" - echo "Next steps (ITKTestingData repository at ${TESTING_DATA_REPO}):" - echo " git -C \"${TESTING_DATA_REPO}\" commit -m \"Add ${PIN_NAME} (${CID})\"" - echo " git -C \"${TESTING_DATA_REPO}\" push" -fi diff --git a/Utilities/Maintenance/ExternalDataUpload/normalize.py b/Utilities/Maintenance/ExternalDataUpload/normalize.py new file mode 100755 index 00000000000..6590b7a6672 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/normalize.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python3 +"""Normalize ITK content links: convert ``.md5`` / ``.shaNNN`` links to ``.cid``. + +For each content link found, the script: + +1. Fetches bytes via the gateway templates declared in + ``CMake/ITKExternalData.cmake`` (identical order to the build). +2. Verifies the bytes against the declared hash or CID. +3. Re-materializes the file alongside the link, then runs the Filebase + uploader from ``upload.py`` so a fresh CID is produced under the + ``unixfs-v1-2025`` profile and pinned on Filebase. The old + ``.md5`` / ``.shaNNN`` link is removed; a ``.cid`` link is written + in its place. + +For ``.cid`` content links, this re-uploads under the current +``unixfs-v1-2025`` profile so a CID produced years ago with a different +chunker is regenerated to match the build pipeline. +""" + +from __future__ import annotations + +import argparse +import hashlib +import re +import subprocess +import sys +import tempfile +import urllib.parse +from pathlib import Path + +import upload as upload_module +from upload import ( + REPO_ROOT, + upload_file_to_filebase, + update_manifest, + mirror_to_testing_data, + CIDV1_RE, +) + +CMAKE_FILE = REPO_ROOT / "CMake" / "ITKExternalData.cmake" + +ALGO_UC = { + "md5": "MD5", + "sha1": "SHA1", + "sha224": "SHA224", + "sha256": "SHA256", + "sha384": "SHA384", + "sha512": "SHA512", + "cid": "cid", +} + + +def parse_url_templates(cmake_file: Path) -> list[str]: + """Extract URL templates from the ``ExternalData_URL_TEMPLATES`` list(). + + Locates the ``list(APPEND ExternalData_URL_TEMPLATES ...)`` invocation, + walks its argument list with a paren-aware scanner (templates contain + ``%(hash)`` / ``%(algo)``, so naive ``.*?`` regex closes the match + prematurely on those inner parens), and returns every quoted argument + that contains ``%(hash)`` in declaration order. + """ + text = cmake_file.read_text() + anchor = re.search( + r"list\s*\(\s*APPEND\s+ExternalData_URL_TEMPLATES\s", + text, + ) + if anchor is None: + sys.exit( + f"ERROR: failed to find ExternalData_URL_TEMPLATES list() in " + f"{cmake_file}" + ) + + depth = 1 + i = anchor.end() + in_string = False + end_idx: int | None = None + while i < len(text): + ch = text[i] + if in_string: + if ch == "\\": + i += 2 + continue + if ch == '"': + in_string = False + else: + if ch == '"': + in_string = True + elif ch == "(": + depth += 1 + elif ch == ")": + depth -= 1 + if depth == 0: + end_idx = i + break + i += 1 + + if end_idx is None: + sys.exit( + f"ERROR: unterminated ExternalData_URL_TEMPLATES list() in " + f"{cmake_file}" + ) + + body = text[anchor.end() : end_idx] + return [t for t in re.findall(r'"([^"]+)"', body) if "%(hash)" in t] + + +def render_url(template: str, algo: str, value: str) -> str: + return template.replace("%(algo)", algo).replace("%(hash)", value) + + +def hash_bytes(ext: str, data: bytes) -> str: + return hashlib.new(ext, data).hexdigest() + + +def fetch_and_verify(ext: str, value: str, templates: list[str]) -> Path: + """Download bytes from the first gateway whose response verifies; return tempfile path. + + For ``.cid`` links, accept any successful HTTP fetch from a path containing + ``/ipfs/`` because IPFS HTTP gateways verify CIDs server-side. For hash + links, recompute the digest locally. + """ + import requests # imported lazily so --help works without the env active + + algo_uc = ALGO_UC.get(ext) + if algo_uc is None: + raise RuntimeError(f"Unknown content-link extension: .{ext}") + + last_error: Exception | None = None + for template in templates: + rendered = render_url(template, algo_uc, value) + if ext != "cid" and "/ipfs/" in urllib.parse.urlparse(rendered).path: + continue + try: + response = requests.get(rendered, timeout=(10, 120)) + response.raise_for_status() + except requests.RequestException as exc: + last_error = exc + continue + + body = response.content + if not body: + continue + + if ext == "cid": + if "/ipfs/" not in urllib.parse.urlparse(rendered).path: + # Non-IPFS origin (e.g. GitHub Pages mirror). We can't verify + # locally without risking chunker-drift false negatives, so + # we keep looking for an IPFS gateway entry. + continue + else: + actual = hash_bytes(ext, body) + if actual.lower() != value.lower(): + print( + f"WARN: content from {rendered} did not verify; " + "trying next gateway", + file=sys.stderr, + ) + continue + + out = Path(tempfile.mkstemp(prefix="itk-content-link.")[1]) + out.write_bytes(body) + return out + + raise RuntimeError( + f"Failed to fetch and verify {ext}={value} from any gateway" + + (f" (last error: {last_error})" if last_error else "") + ) + + +def enumerate_links(target: Path, hash_only: bool, cid_only: bool) -> list[Path]: + if target.is_file(): + return [target] + exts = {f".{e}" for e in upload_module.CONTENT_LINK_EXTS} + found = sorted(p for p in target.rglob("*") if p.is_file() and p.suffix in exts) + filtered: list[Path] = [] + for link in found: + ext = link.suffix.lstrip(".") + if hash_only and ext == "cid": + continue + if cid_only and ext != "cid": + continue + filtered.append(link) + return filtered + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser( + description=( + "Normalize ITK content links: convert .md5 / .shaNNN to .cid and " + "regenerate existing .cid under the unixfs-v1-2025 profile." + ), + ) + parser.add_argument("target", help="Path or directory to process") + parser.add_argument( + "--testing-data-repo", + metavar="PATH", + help="Forwarded to upload.py; mirror bytes into a local ITKTestingData clone.", + ) + parser.add_argument( + "--bucket", + help="Filebase IPFS bucket (default: $FILEBASE_BUCKET).", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="List what would change, modify nothing.", + ) + mode = parser.add_mutually_exclusive_group() + mode.add_argument( + "--hash-only", + action="store_true", + help="Process only .md5 / .shaNNN links; leave .cid alone.", + ) + mode.add_argument( + "--cid-only", + action="store_true", + help="Process only .cid links (re-hash under unixfs-v1-2025).", + ) + args = parser.parse_args(argv) + + target = Path(args.target) + if not target.exists(): + sys.exit(f"ERROR: not found: {args.target}") + if not CMAKE_FILE.exists(): + sys.exit(f"ERROR: cannot find {CMAKE_FILE}") + + upload_module._check_node_available() + access_key, secret_key, bucket = upload_module._credentials(args) + + testing_data_repo: Path | None = None + if args.testing_data_repo: + testing_data_repo = Path(args.testing_data_repo).resolve() + if not (testing_data_repo / ".git").exists(): + sys.exit( + f"ERROR: --testing-data-repo is not a git checkout: " + f"{args.testing_data_repo}" + ) + + templates = parse_url_templates(CMAKE_FILE) + print(f"==> Loaded {len(templates)} gateway template(s) from {CMAKE_FILE}") + + links = enumerate_links(target, args.hash_only, args.cid_only) + if not links: + print(f"No matching content links under {target}. Nothing to do.") + return 0 + print(f"==> Processing {len(links)} content link(s)...") + if args.dry_run: + print("(--dry-run: no files will be modified)") + + fail = 0 + for link in links: + ext = link.suffix.lstrip(".") + value = link.read_text().strip() + real_file = link.with_suffix("") + if not value: + print(f"FAIL {link} empty-content-link", file=sys.stderr) + fail += 1 + continue + if ext == "cid" and not CIDV1_RE.match(value): + print(f"FAIL {link} invalid-cid", file=sys.stderr) + fail += 1 + continue + + if args.dry_run: + print( + f"WOULD-NORMALIZE {link} ({ext}={value}) -> {real_file}.cid" + ) + continue + + print(f"==> Normalizing {link} ({ext}={value})") + + if real_file.exists(): + sys.exit( + f"ERROR: refusing to normalize: {real_file} already exists. " + "Delete or move it first." + ) + + try: + tmp_bytes = fetch_and_verify(ext, value, templates) + except RuntimeError as exc: + print(f"FAIL {link} {exc}", file=sys.stderr) + fail += 1 + continue + + tmp_bytes.rename(real_file) + link.unlink() + + try: + cid = upload_file_to_filebase(real_file, bucket, access_key, secret_key) + except (subprocess.CalledProcessError, RuntimeError) as exc: + print(f"FAIL {link} upload-failed: {exc}", file=sys.stderr) + link.write_text(value + "\n") + real_file.unlink(missing_ok=True) + fail += 1 + continue + + if testing_data_repo is not None: + mirror_to_testing_data(real_file, cid, testing_data_repo) + + cid_path = real_file.with_name(real_file.name + ".cid") + cid_path.write_text(cid + "\n") + real_file.unlink() + rel_path = real_file.relative_to(REPO_ROOT).as_posix() + update_manifest(cid, rel_path) + print(f"NORMALIZE {link} ({ext}) -> {cid_path}") + + if fail: + print(f"WARN: {fail} content link(s) failed to normalize.", file=sys.stderr) + return 2 + + print( + "Done. Review changes and commit as a STYLE: commit " + "(see Documentation/AI/git-commits.md)." + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Utilities/Maintenance/ExternalDataUpload/upload.py b/Utilities/Maintenance/ExternalDataUpload/upload.py new file mode 100755 index 00000000000..b6716035407 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/upload.py @@ -0,0 +1,341 @@ +#!/usr/bin/env python3 +"""Upload a file to Filebase IPFS storage and replace it with a .cid content link. + +Builds a CARv1 of the input via ``npx ipfs-car pack`` (defaults: 1 MiB chunks, +1024 children per node, raw leaves, CIDv1 — matches the ``unixfs-v1-2025`` / +IPIP-0499 profile so CIDs are reproducible across implementations) and uploads +the CAR to a Filebase IPFS bucket through its S3-compatible REST API with the +``import: car`` user metadata header. Filebase imports the CAR server-side and +returns the resulting CID in object metadata, which is read back via +``head_object`` and compared against the locally computed root CID. + +The ``.cid`` content link, the manifest entry in +``Testing/Data/content-links.manifest``, and (optionally) a mirror of the bytes +in a local ITKTestingData clone are all produced in the same invocation. +""" + +from __future__ import annotations + +import argparse +import os +import re +import shutil +import subprocess +import sys +import tempfile +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parents[3] +MANIFEST = REPO_ROOT / "Testing" / "Data" / "content-links.manifest" +GITHUB_FILE_LIMIT_BYTES = 50 * 1024 * 1024 +FILEBASE_ENDPOINT = "https://s3.filebase.com" + +CONTENT_LINK_EXTS = ("cid", "md5", "sha1", "sha224", "sha256", "sha384", "sha512") +CIDV1_RE = re.compile(r"^baf[a-z0-9]{50,}$") + + +def build_car(input_path: Path, output_car: Path) -> str: + """Pack ``input_path`` into a CARv1 at ``output_car`` and return its root CID. + + Uses ``npx ipfs-car pack`` with ``--no-wrap`` (single-file upload, no + wrapping directory). ipfs-car v1+ defaults match the unixfs-v1-2025 profile + (1 MiB chunks, 1024 links/node, raw leaves, CIDv1), so no extra flags are + needed to produce a reproducible CID. + """ + result = subprocess.run( + [ + "npx", + "--yes", + "ipfs-car", + "pack", + str(input_path), + "--no-wrap", + "--output", + str(output_car), + ], + capture_output=True, + text=True, + check=True, + ) + for line in reversed(result.stdout.splitlines()): + token = line.strip().split()[-1] if line.strip() else "" + if CIDV1_RE.match(token): + return token + raise RuntimeError( + f"Could not parse CID from `npx ipfs-car pack` output:\n{result.stdout}" + ) + + +def upload_car_to_filebase( + car_path: Path, + bucket: str, + object_key: str, + access_key: str, + secret_key: str, +) -> str: + """Upload a CAR to a Filebase IPFS bucket and return the CID Filebase reports. + + Setting ``Metadata={"import": "car"}`` tells Filebase to import the CAR + server-side; the imported root CID is then exposed via + ``head_object()['Metadata']['cid']``. ``put_object`` is used directly + rather than ``upload_file`` because the latter's multipart code path can + strip user metadata on small payloads. + """ + import boto3 # imported lazily so --help works without the env active + + s3 = boto3.client( + "s3", + endpoint_url=FILEBASE_ENDPOINT, + aws_access_key_id=access_key, + aws_secret_access_key=secret_key, + region_name="us-east-1", + ) + with car_path.open("rb") as f: + s3.put_object( + Bucket=bucket, + Key=object_key, + Body=f, + Metadata={"import": "car"}, + ) + head = s3.head_object(Bucket=bucket, Key=object_key) + return head.get("Metadata", {}).get("cid", "") + + +def upload_file_to_filebase( + input_path: Path, + bucket: str, + access_key: str, + secret_key: str, +) -> str: + """End-to-end: build CAR for ``input_path``, upload it, verify, return CID.""" + object_key = input_path.name + ".car" + with tempfile.NamedTemporaryFile(suffix=".car", delete=False) as tmp: + car_path = Path(tmp.name) + try: + local_cid = build_car(input_path, car_path) + remote_cid = upload_car_to_filebase( + car_path, bucket, object_key, access_key, secret_key + ) + if not remote_cid: + raise RuntimeError( + f"Filebase did not return a CID for {object_key}. The CAR may " + "not have been recognised — check the bucket is an IPFS bucket " + "and the access key has write permission." + ) + if local_cid != remote_cid: + raise RuntimeError( + f"CID mismatch: local={local_cid}, filebase={remote_cid}. " + "This indicates a chunker/profile drift between this client " + "and Filebase — file an issue." + ) + return local_cid + finally: + car_path.unlink(missing_ok=True) + + +def update_manifest(cid: str, rel_path: str) -> None: + """Insert/replace ``cid `` in Testing/Data/content-links.manifest.""" + MANIFEST.parent.mkdir(parents=True, exist_ok=True) + + header_lines: list[str] = [] + data_lines: list[str] = [] + if MANIFEST.exists(): + for line in MANIFEST.read_text().splitlines(): + if line.startswith("#"): + header_lines.append(line) + elif line.strip(): + fields = line.split() + if len(fields) >= 2 and fields[1] == rel_path: + continue + data_lines.append(line) + else: + header_lines = [ + "# ITK content-link manifest", + "# One CID per line, format: ", + "# Maintained by Utilities/Maintenance/ExternalDataUpload/upload.py", + ] + + data_lines.append(f"{cid} {rel_path}") + data_lines.sort(key=lambda s: s.split()[1]) + + MANIFEST.write_text("\n".join(header_lines + data_lines) + "\n") + + +def mirror_to_testing_data( + file_path: Path, cid: str, testing_data_repo: Path +) -> bool: + """Copy ``file_path`` to ``/CID/`` and ``git add`` it. + + Returns False (with a warning) for files over GitHub's 50 MB push limit; + True after a successful copy + stage. + """ + size = file_path.stat().st_size + if size > GITHUB_FILE_LIMIT_BYTES: + print( + f"WARNING: {file_path.name} is {size} bytes (> 50 MB). GitHub " + "rejects pushes containing files > 50 MB, so it will NOT be " + "mirrored to ITKTestingData. The Filebase upload still succeeded; " + "the .cid content link will still be produced.", + file=sys.stderr, + ) + return False + + mirror_dir = testing_data_repo / "CID" + mirror_dir.mkdir(parents=True, exist_ok=True) + mirror_path = mirror_dir / cid + print(f"==> Mirroring to ITKTestingData: CID/{cid}") + shutil.copy2(file_path, mirror_path) + try: + subprocess.run( + ["git", "-C", str(testing_data_repo), "add", f"CID/{cid}"], + check=True, + ) + except subprocess.CalledProcessError: + mirror_path.unlink(missing_ok=True) + raise + return True + + +def _validate_input(file_arg: str) -> Path: + file_path = Path(file_arg) + if not file_path.exists(): + sys.exit(f"ERROR: File not found: {file_arg}") + if file_path.is_symlink(): + sys.exit( + f"ERROR: Symlink paths are not supported: {file_arg}\n" + " Pass the real file path instead." + ) + if not file_path.is_file(): + sys.exit(f"ERROR: Not a regular file: {file_arg}") + + abs_path = file_path.resolve() + try: + abs_path.relative_to(REPO_ROOT) + except ValueError: + sys.exit(f"ERROR: File must be inside the repository: {abs_path}") + + suffix = abs_path.suffix.lstrip(".") + if suffix in CONTENT_LINK_EXTS: + sys.exit(f"ERROR: File is already a .{suffix} content link: {file_arg}") + + rel = abs_path.relative_to(REPO_ROOT).as_posix() + if any(c.isspace() for c in rel): + sys.exit( + f"ERROR: Filepath contains whitespace, which is not supported: {rel}\n" + " Rename the file to remove spaces before uploading." + ) + + return abs_path + + +def _credentials(args: argparse.Namespace) -> tuple[str, str, str]: + access_key = os.environ.get("FILEBASE_ACCESS_KEY", "") + secret_key = os.environ.get("FILEBASE_SECRET_KEY", "") + bucket = args.bucket or os.environ.get("FILEBASE_BUCKET", "") + missing = [ + name + for name, value in [ + ("FILEBASE_ACCESS_KEY", access_key), + ("FILEBASE_SECRET_KEY", secret_key), + ("FILEBASE_BUCKET (or --bucket)", bucket), + ] + if not value + ] + if missing: + sys.exit( + "ERROR: Missing Filebase credentials: " + ", ".join(missing) + "\n" + " See: Utilities/Maintenance/ExternalDataUpload/README.md" + ) + return access_key, secret_key, bucket + + +def _check_node_available() -> None: + if shutil.which("npx") is None: + sys.exit( + "ERROR: 'npx' not found on PATH (Node.js required for ipfs-car).\n" + " Run inside the pixi environment:\n" + " pixi run -e external-data-upload python " + "Utilities/Maintenance/ExternalDataUpload/upload.py " + ) + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser( + description=( + "Upload a file to Filebase IPFS storage; produce a .cid content " + "link, update Testing/Data/content-links.manifest, and optionally " + "mirror the bytes into ITKTestingData." + ), + ) + parser.add_argument("file", help="Path to the file to upload") + parser.add_argument( + "--testing-data-repo", + metavar="PATH", + help=( + "Local clone of github.com/InsightSoftwareConsortium/ITKTestingData; " + "files ≤ 50 MB are copied to /CID/ and `git add`ed." + ), + ) + parser.add_argument( + "--bucket", + help="Filebase IPFS bucket (default: $FILEBASE_BUCKET).", + ) + args = parser.parse_args(argv) + + _check_node_available() + abs_path = _validate_input(args.file) + access_key, secret_key, bucket = _credentials(args) + + testing_data_repo: Path | None = None + if args.testing_data_repo: + testing_data_repo = Path(args.testing_data_repo).resolve() + if not testing_data_repo.is_dir(): + sys.exit( + f"ERROR: --testing-data-repo path is not a directory: " + f"{args.testing_data_repo}" + ) + if not (testing_data_repo / ".git").exists(): + sys.exit( + f"ERROR: --testing-data-repo is not a git checkout: " + f"{args.testing_data_repo}" + ) + + rel_path = abs_path.relative_to(REPO_ROOT).as_posix() + print(f"==> Packing {abs_path.name} into a CAR (unixfs-v1-2025 profile)...") + print(f"==> Uploading to Filebase bucket {bucket!r}...") + cid = upload_file_to_filebase(abs_path, bucket, access_key, secret_key) + print(f" CID: {cid}") + + mirrored = False + if testing_data_repo is not None: + mirrored = mirror_to_testing_data(abs_path, cid, testing_data_repo) + + cid_path = abs_path.with_name(abs_path.name + ".cid") + cid_path.write_text(cid + "\n") + abs_path.unlink() + + update_manifest(cid, rel_path) + + rel_cid = cid_path.relative_to(REPO_ROOT).as_posix() + print() + print("==> Upload complete.") + print(f" CID: {cid}") + print(f" Link: {cid_path}") + print() + print("Next steps (ITK repository):") + print(f' git rm "{rel_path}"') + print(f' git add "{rel_cid}"') + print(" git add Testing/Data/content-links.manifest") + if mirrored and testing_data_repo is not None: + print() + print(f"Next steps (ITKTestingData repository at {testing_data_repo}):") + print( + f' git -C "{testing_data_repo}" commit ' + f'-m "Add {abs_path.name} ({cid})"' + ) + print(f' git -C "{testing_data_repo}" push') + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pyproject.toml b/pyproject.toml index 2a30796a550..b968a542210 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,11 @@ clean = { cmd = "git clean -fdx", description = "Clean the repository" } [tool.pixi.dependencies] python = ">=3.13.5,<3.14" +[tool.pixi.feature.external-data-upload.dependencies] +boto3 = ">=1.34" +nodejs = ">=20" +requests = ">=2.32" + [tool.pixi.feature.pre-commit.dependencies] pre-commit = ">=4.1.0,<5" @@ -195,3 +200,4 @@ dev = ["dev"] cxx = ["dev", "cxx"] python = ["python", "dev"] pre-commit = ["pre-commit"] +external-data-upload = ["external-data-upload"] From 3b9750c95091acfdeea30d8abcdd86a996c410d4 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 16:22:24 -0400 Subject: [PATCH 09/23] ENH: Add Filebase public gateway We upload data to filebase storage. Add their gateway. --- CMake/ITKExternalData.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMake/ITKExternalData.cmake b/CMake/ITKExternalData.cmake index e1c56f6fd44..0d199022c92 100644 --- a/CMake/ITKExternalData.cmake +++ b/CMake/ITKExternalData.cmake @@ -59,6 +59,8 @@ if(NOT ITK_FORBID_DOWNLOADS) "http://127.0.0.1:8080/ipfs/%(hash)" # Protocol Labs gateway "https://ipfs.io/ipfs/%(hash)" + # Filebase gateway + "https://ipfs.filebase.io/ipfs/%(hash)" # Gateway for data pinned on pinata "https://gateway.pinata.cloud/ipfs/%(hash)" # Cloudflare gateway From 46f09c6a7ad91181958a647e33d5f146617f9c71 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 16:24:08 -0400 Subject: [PATCH 10/23] PERF: Improve external data url order for gateways that are used data.kitware.com are only there for older external and remote modules that might use MD5 or SHA512 hashes. --- CMake/ITKExternalData.cmake | 8 ++++---- Utilities/Maintenance/ExternalDataUpload/README.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMake/ITKExternalData.cmake b/CMake/ITKExternalData.cmake index 0d199022c92..f071731df0d 100644 --- a/CMake/ITKExternalData.cmake +++ b/CMake/ITKExternalData.cmake @@ -51,10 +51,6 @@ if(NOT ITK_FORBID_DOWNLOADS) ExternalData_URL_TEMPLATES # Data published on GitHub Pages "https://insightsoftwareconsortium.github.io/ITKTestingData/%(algo)/%(hash)" - # Data published on Girder - "https://data.kitware.com:443/api/v1/file/hashsum/%(algo)/%(hash)/download" - # Data published by developers using git-gerrit-push. - "https://itk.org/files/ExternalData/%(algo)/%(hash)" # Local IPFS gateway "http://127.0.0.1:8080/ipfs/%(hash)" # Protocol Labs gateway @@ -67,6 +63,10 @@ if(NOT ITK_FORBID_DOWNLOADS) "https://cloudflare-ipfs.com/ipfs/%(hash)" # Additional gateway (modern but has redirect) "https://dweb.link/ipfs/%(hash)" + # Data published on Girder + "https://data.kitware.com:443/api/v1/file/hashsum/%(algo)/%(hash)/download" + # Data published by developers using git-gerrit-push. + "https://itk.org/files/ExternalData/%(algo)/%(hash)" ) endif() diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index 7c670b97c60..7905034d63a 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -8,8 +8,8 @@ committed to the ITK source tree. This complements [`CMake/ITKExternalData.cmake`](../../../CMake/ITKExternalData.cmake), which fetches content at test configure time from the gateways listed there -(`ITKTestingData` on GitHub Pages, `data.kitware.com`, `itk.org`, local Kubo -gateway, `ipfs.io`, `gateway.pinata.cloud`, `cloudflare-ipfs.com`, +(`ITKTestingData` on GitHub Pages, local Kubo +gateway, `ipfs.filebase.io`, `ipfs.io`, `gateway.pinata.cloud`, `cloudflare-ipfs.com`, `dweb.link`). ## How the upload works From 9ce9470b8576dc0bfbaf356538965b3ef7ddec9e Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 16:42:14 -0400 Subject: [PATCH 11/23] BUG: Reject non-content-link files in normalize.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit normalize.py is meant to convert existing .cid / .md5 / .shaNNN content links, not to upload raw data files for the first time. The previous single-file path in `enumerate_links` accepted any regular file and passed it through to the main loop, where `link.read_text()` decoded the contents as UTF-8 to extract the embedded hash/CID — so passing a binary file (e.g. `normalize.py ./cthead1.png`) crashed with `UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89`. Validate the extension up front and emit a clear error pointing the user at `upload.py` for raw uploads: ERROR: cthead1.png is not a content link (extension must be one of: cid, md5, sha1, sha224, sha256, sha384, sha512). normalize.py converts existing .md5/.shaNNN/.cid links; to upload a raw file for the first time, use upload.py: pixi run -e external-data-upload python \ Utilities/Maintenance/ExternalDataUpload/upload.py \ cthead1.png Directory inputs already filtered by `CONTENT_LINK_EXTS` via the rglob branch, so this only changes behavior for the single-file positional argument. Agent-Session-Id: 40f8eba4-dc94-4d4f-94bd-ff3d2fccf04f Co-Authored-By: Claude Opus 4.7 --- .../Maintenance/ExternalDataUpload/normalize.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/normalize.py b/Utilities/Maintenance/ExternalDataUpload/normalize.py index 6590b7a6672..9f2b626274a 100755 --- a/Utilities/Maintenance/ExternalDataUpload/normalize.py +++ b/Utilities/Maintenance/ExternalDataUpload/normalize.py @@ -168,9 +168,19 @@ def fetch_and_verify(ext: str, value: str, templates: list[str]) -> Path: def enumerate_links(target: Path, hash_only: bool, cid_only: bool) -> list[Path]: + exts = {f".{e}" for e in upload_module.CONTENT_LINK_EXTS} if target.is_file(): + if target.suffix not in exts: + sys.exit( + f"ERROR: {target} is not a content link " + f"(extension must be one of: " + f"{', '.join(sorted(upload_module.CONTENT_LINK_EXTS))}).\n" + " normalize.py converts existing .md5/.shaNNN/.cid links; " + "to upload a raw file for the first time, use upload.py:\n" + f" pixi run -e external-data-upload python " + f"Utilities/Maintenance/ExternalDataUpload/upload.py {target}" + ) return [target] - exts = {f".{e}" for e in upload_module.CONTENT_LINK_EXTS} found = sorted(p for p in target.rglob("*") if p.is_file() and p.suffix in exts) filtered: list[Path] = [] for link in found: From 5001618475f2e28ce7fe8b4418a6f3c41f8f23db Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 17:07:53 -0400 Subject: [PATCH 12/23] BUG: Read Filebase CID from PUT response headers in upload.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Filebase echoes the imported root CID via the `x-amz-meta-cid` response header on the synchronous `put_object` call for sub-5 GB CARs, not via the `head_object` user-metadata dict the original code consulted. boto3's `put_object` response model does not declare a `Metadata` field, so user-metadata headers stay in `ResponseMetadata.HTTPHeaders` rather than being promoted into a dict — leading to a spurious `RuntimeError: Filebase did not return a CID for .car` even when the import had completed successfully. Introduce `_cid_from_response()` that checks both `Metadata["cid"]` / `Metadata["CID"]` and the case-insensitive `x-amz-meta-cid` header in `ResponseMetadata.HTTPHeaders`. `upload_car_to_filebase()` now tries the `put_object` response first (where Filebase actually puts the CID synchronously), then falls back to `head_object` for older Filebase configurations or boto3 client setups that strip the user-metadata header off the PUT response. On double-miss, both responses' `Metadata` and `HTTPHeaders` are dumped to stderr so the caller can diagnose whether the issue is a header-name drift, async-import delay, or a non-IPFS bucket misconfiguration before the `RuntimeError("Filebase did not return a CID for ...")` is raised. Tested manually against an `ipfs.filebase.io` bucket — the previously failing `upload.py ./cthead1.png` invocation now completes and writes `./cthead1.png.cid` with the round-trip-verified CID. Agent-Session-Id: 40f8eba4-dc94-4d4f-94bd-ff3d2fccf04f Co-Authored-By: Claude Opus 4.7 --- .../Maintenance/ExternalDataUpload/upload.py | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/upload.py b/Utilities/Maintenance/ExternalDataUpload/upload.py index b6716035407..cee7c5ed3ed 100755 --- a/Utilities/Maintenance/ExternalDataUpload/upload.py +++ b/Utilities/Maintenance/ExternalDataUpload/upload.py @@ -66,6 +66,26 @@ def build_car(input_path: Path, output_car: Path) -> str: ) +def _cid_from_response(response: dict) -> str: + """Pull a Filebase-reported CID out of a boto3 PUT or HEAD response. + + Filebase publishes the imported root CID via the ``x-amz-meta-cid`` + response header. boto3 promotes ``x-amz-meta-*`` headers into the + ``Metadata`` dict (with lowercased keys), but only on responses where + its model declares a metadata field. ``put_object``'s response model + has no ``Metadata`` field, so we have to read directly from + ``ResponseMetadata.HTTPHeaders``. ``head_object`` does populate + ``Metadata`` — check both to be robust across boto3 versions and + Filebase response variations. + """ + metadata = response.get("Metadata") or {} + cid = metadata.get("cid") or metadata.get("CID") + if cid: + return cid + headers = response.get("ResponseMetadata", {}).get("HTTPHeaders", {}) + return headers.get("x-amz-meta-cid", "") or headers.get("X-Amz-Meta-Cid", "") + + def upload_car_to_filebase( car_path: Path, bucket: str, @@ -76,10 +96,13 @@ def upload_car_to_filebase( """Upload a CAR to a Filebase IPFS bucket and return the CID Filebase reports. Setting ``Metadata={"import": "car"}`` tells Filebase to import the CAR - server-side; the imported root CID is then exposed via - ``head_object()['Metadata']['cid']``. ``put_object`` is used directly - rather than ``upload_file`` because the latter's multipart code path can - strip user metadata on small payloads. + server-side. Filebase echoes the imported CID via the + ``x-amz-meta-cid`` header on the PUT response synchronously for sub-5GB + objects; we read it from there first, then fall back to a ``head_object`` + call for cases where the PUT response shape changes (older Filebase or + boto3 client configurations strip user-metadata headers off the PUT + response). ``put_object`` is used directly rather than ``upload_file`` + because the latter's multipart code path can strip user metadata. """ import boto3 # imported lazily so --help works without the env active @@ -91,14 +114,31 @@ def upload_car_to_filebase( region_name="us-east-1", ) with car_path.open("rb") as f: - s3.put_object( + put_response = s3.put_object( Bucket=bucket, Key=object_key, Body=f, Metadata={"import": "car"}, ) - head = s3.head_object(Bucket=bucket, Key=object_key) - return head.get("Metadata", {}).get("cid", "") + cid = _cid_from_response(put_response) + if cid: + return cid + + head_response = s3.head_object(Bucket=bucket, Key=object_key) + cid = _cid_from_response(head_response) + if cid: + return cid + + print( + "DEBUG: Filebase response did not include x-amz-meta-cid. Dumping " + "PUT and HEAD response details for diagnosis:", + file=sys.stderr, + ) + for label, resp in (("put_object", put_response), ("head_object", head_response)): + print(f"DEBUG: {label}.Metadata = {resp.get('Metadata')}", file=sys.stderr) + headers = resp.get("ResponseMetadata", {}).get("HTTPHeaders", {}) + print(f"DEBUG: {label}.HTTPHeaders = {headers}", file=sys.stderr) + return "" def upload_file_to_filebase( From 998379b6d0de3f27db86939ad35dd8810efa8986 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 17:35:28 -0400 Subject: [PATCH 13/23] ENH: Add sync.py to reconcile ITKTestingData mirror with manifest sync.py walks /CID/ and, for each file whose CID (the filename) is absent from Testing/Data/content-links.manifest yet referenced by a .cid content link in the ITK source tree, uploads the bytes to Filebase and appends a manifest entry. Repair tool for orphaned mirror entries; .cid links in the source tree are not modified. --- .../Maintenance/ExternalDataUpload/README.md | 34 +++ .../Maintenance/ExternalDataUpload/SKILL.md | 32 +++ .../Maintenance/ExternalDataUpload/sync.py | 213 ++++++++++++++++++ 3 files changed, 279 insertions(+) create mode 100755 Utilities/Maintenance/ExternalDataUpload/sync.py diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index 7905034d63a..9b68c882889 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -175,6 +175,40 @@ pixi run -e external-data-upload python \ Utilities/Maintenance/ExternalDataUpload/normalize.py Modules --hash-only ``` +### Reconcile a local `ITKTestingData/CID/` mirror with Filebase and the manifest + +`sync.py` pushes files from a local `ITKTestingData/CID/` checkout to Filebase +and fills in the matching `Testing/Data/content-links.manifest` entries — for +the subset of files that are *referenced by a `.cid` content link in the ITK +source tree* but *not yet listed in the manifest*. + +```bash +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/sync.py \ + --testing-data-repo ~/src/ITKTestingData +``` + +For each file under `/CID/`, the script: + +1. Loads the set of CIDs already in `content-links.manifest` and skips the + file if its CID (the filename) is already listed. +2. Scans the ITK source tree (via `git ls-files`) for `.cid` content links + and indexes them by CID value. Files in `ITKTestingData/CID/` that no + `.cid` link references are skipped silently — the script will not pin + loose bytes from your local mirror. +3. Uploads each remaining file to Filebase under the unixfs-v1-2025 profile + and verifies the CID Filebase returns matches the filename. +4. Appends a ` ` entry to the manifest for every + `.cid` content link in the source tree that holds the value. + +Pass `--dry-run` to preview the list of CIDs that would be uploaded without +modifying anything. Pass `--bucket` to override `$FILEBASE_BUCKET` for this +invocation. + +The script does **not** modify any `.cid` content link in the source tree +and does **not** copy bytes back into `ITKTestingData` (the files are +already there — that is the script's input). + ## Content Link Manifest `Testing/Data/content-links.manifest` is a plain-text index of every CID the diff --git a/Utilities/Maintenance/ExternalDataUpload/SKILL.md b/Utilities/Maintenance/ExternalDataUpload/SKILL.md index f90bb573430..79037c4ad64 100644 --- a/Utilities/Maintenance/ExternalDataUpload/SKILL.md +++ b/Utilities/Maintenance/ExternalDataUpload/SKILL.md @@ -97,6 +97,38 @@ The normalize script fetches bytes through the gateway templates in against the declared hash or CID, and calls `upload.upload_file_to_filebase` to produce the new `.cid`. +### 3. Reconcile a local ITKTestingData mirror with Filebase and the manifest + +Use when the user has files under `/CID/` that are +referenced by `.cid` content links in the ITK source tree but are missing +from `Testing/Data/content-links.manifest` (and so may not be pinned on +Filebase yet). + +```bash +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/sync.py \ + --testing-data-repo +``` + +The sync script: + +1. Loads CIDs already in the manifest and skips files whose CID is listed. +2. Indexes `.cid` content links in the source tree via `git ls-files`. +3. For each file in `/CID/` whose CID is unlisted and is + referenced by at least one `.cid` link, uploads the bytes to Filebase + under the unixfs-v1-2025 profile and verifies the returned CID matches + the filename. +4. Appends a manifest entry per referencing `.cid` link. + +Files in `/CID/` not referenced by any `.cid` link are +skipped silently — the script will not pin loose bytes. The source-tree +`.cid` files are never modified. + +Useful options: + +- `--dry-run` — preview the CIDs that would be uploaded +- `--bucket ` — Filebase bucket override (default: `$FILEBASE_BUCKET`) + ## After Upload Stage the git changes the upload script prints. Typical ITK workflow: diff --git a/Utilities/Maintenance/ExternalDataUpload/sync.py b/Utilities/Maintenance/ExternalDataUpload/sync.py new file mode 100755 index 00000000000..3eaf3921aa0 --- /dev/null +++ b/Utilities/Maintenance/ExternalDataUpload/sync.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +"""Pin ITKTestingData/CID/ files to Filebase and add missing manifest entries. + +For each file under ``/CID/``, this script: + +1. Skips the file if the CID (its filename) is already in + ``Testing/Data/content-links.manifest``. +2. Otherwise, scans the ITK source tree for ``.cid`` content links whose + value matches the CID. If no link references it, skips. +3. Uploads the file's bytes to Filebase via the Filebase S3 API and + verifies the CID Filebase reports matches the filename. +4. Adds a `` `` entry to the manifest for every + ``.cid`` content link in the source tree that holds the value. + +Use case: the developer has files in their local ``ITKTestingData/CID/`` +mirror plus matching ``.cid`` content links in the ITK source tree, but +the manifest is missing those entries and the bytes may not be pinned on +Filebase. This script reconciles that state without touching the +source-tree ``.cid`` files. +""" + +from __future__ import annotations + +import argparse +import subprocess +import sys +from pathlib import Path + +import upload as upload_module +from upload import ( + CIDV1_RE, + MANIFEST, + REPO_ROOT, + update_manifest, + upload_file_to_filebase, +) + + +def load_manifest_cids() -> set[str]: + """Return the set of CIDs already present in the manifest.""" + if not MANIFEST.exists(): + return set() + cids: set[str] = set() + for line in MANIFEST.read_text().splitlines(): + if line.startswith("#") or not line.strip(): + continue + fields = line.split() + if len(fields) >= 2: + cids.add(fields[0]) + return cids + + +def find_cid_links() -> dict[str, list[Path]]: + """Map CID value to the .cid links in the source tree that reference it. + + Uses ``git ls-files`` (tracked + non-ignored untracked) so build + directories, the pixi env, and other non-source paths are skipped + automatically without having to enumerate them. + """ + result = subprocess.run( + [ + "git", + "-C", + str(REPO_ROOT), + "ls-files", + "--cached", + "--others", + "--exclude-standard", + "*.cid", + ], + capture_output=True, + text=True, + check=True, + ) + mapping: dict[str, list[Path]] = {} + for rel in result.stdout.splitlines(): + if not rel.strip(): + continue + path = REPO_ROOT / rel + try: + value = path.read_text().strip() + except OSError: + continue + if not CIDV1_RE.match(value): + continue + mapping.setdefault(value, []).append(path) + return mapping + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser( + description=( + "Upload ITKTestingData/CID/ files to Filebase and add manifest " + "entries for them, but only when a matching .cid content link " + "exists in the source tree and the CID is absent from the " + "manifest." + ), + ) + parser.add_argument( + "--testing-data-repo", + metavar="PATH", + required=True, + help=( + "Local clone of " + "github.com/InsightSoftwareConsortium/ITKTestingData; the script " + "reads files from /CID/." + ), + ) + parser.add_argument( + "--bucket", + help="Filebase IPFS bucket (default: $FILEBASE_BUCKET).", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help=( + "List CIDs that would be uploaded; do not upload or modify the " + "manifest." + ), + ) + args = parser.parse_args(argv) + + testing_data_repo = Path(args.testing_data_repo).resolve() + if not testing_data_repo.is_dir(): + sys.exit( + f"ERROR: --testing-data-repo path is not a directory: " + f"{args.testing_data_repo}" + ) + cid_dir = testing_data_repo / "CID" + if not cid_dir.is_dir(): + sys.exit(f"ERROR: {cid_dir} not found.") + + if args.dry_run: + access_key = secret_key = bucket = "" + else: + upload_module._check_node_available() + access_key, secret_key, bucket = upload_module._credentials(args) + + manifest_cids = load_manifest_cids() + print(f"==> {len(manifest_cids)} CID(s) already in the manifest") + + print(f"==> Indexing .cid content links under {REPO_ROOT}...") + cid_links = find_cid_links() + print(f" {len(cid_links)} unique CID(s) referenced by .cid links") + + candidates: list[tuple[str, Path, list[Path]]] = [] + for cid_file in sorted(cid_dir.iterdir()): + if not cid_file.is_file(): + continue + cid = cid_file.name + if not CIDV1_RE.match(cid): + continue + if cid in manifest_cids: + continue + links = cid_links.get(cid) + if not links: + continue + candidates.append((cid, cid_file, links)) + + if not candidates: + print( + "Nothing to do: every CID under ITKTestingData/CID/ is either " + "already in the manifest or has no matching .cid link in the " + "source tree." + ) + return 0 + + print(f"==> {len(candidates)} CID(s) to upload") + if args.dry_run: + for cid, _, links in candidates: + for link in links: + rel = link.with_suffix("").relative_to(REPO_ROOT).as_posix() + print(f"WOULD-UPLOAD {cid} -> {rel}") + print("(--dry-run: no Filebase uploads, no manifest changes)") + return 0 + + fail = 0 + for cid, cid_file, links in candidates: + print(f"==> Uploading {cid}") + try: + returned_cid = upload_file_to_filebase( + cid_file, bucket, access_key, secret_key + ) + except (subprocess.CalledProcessError, RuntimeError) as exc: + print(f"FAIL {cid} upload-failed: {exc}", file=sys.stderr) + fail += 1 + continue + if returned_cid != cid: + print( + f"FAIL {cid} cid-mismatch: filebase returned " + f"{returned_cid} for ITKTestingData/CID/{cid}", + file=sys.stderr, + ) + fail += 1 + continue + for link in links: + real_rel = link.with_suffix("").relative_to(REPO_ROOT).as_posix() + update_manifest(cid, real_rel) + print(f"OK {cid} -> {real_rel}") + + if fail: + print(f"WARN: {fail} CID(s) failed to sync.", file=sys.stderr) + return 2 + + print() + print(f"Done. Updated {MANIFEST.relative_to(REPO_ROOT)}.") + print("Next steps:") + print(" git add Testing/Data/content-links.manifest") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 6ae9d56e5f2d3de1818034ea56d5bb9dc7769b8d Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 17:52:46 -0400 Subject: [PATCH 14/23] BUG: reject manifest paths with whitespace, sync ITKTestingData entries Add a whitespace guard in update_manifest() since the manifest format uses a single space as the field delimiter and cannot represent paths with whitespace. Six entries sourced from files with space-embedded names in ITKTestingData are excluded. Also sync new content-link entries from ITKTestingData mirror via sync.py, covering datasets for Registration/Montage, MetaIO, and various Filtering modules. --- Testing/Data/content-links.manifest | 722 ++++++++++++++++++ .../Maintenance/ExternalDataUpload/upload.py | 7 + 2 files changed, 729 insertions(+) diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index 62dd0827cb9..6326ead4880 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -10,6 +10,22 @@ # Paths must not contain whitespace (the manifest uses a single space as # the field delimiter). Data lines are kept sorted by path; comment lines # above the first data line are preserved on re-write. +bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Examples/RegistrationITKv4/test/Baseline/BSplineWarping1Test.png +bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Examples/RegistrationITKv4/test/Baseline/DeformableRegistration1v4Test.png +bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Examples/RegistrationITKv4/test/Baseline/DeformableRegistration6TestPixelCentered.png +bafkreibuxy2iukcnscmcixlgkwmy2v7ozg257plxmmxgx2dex6dl7duvji Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.3.png +bafkreicjlvrdryxu4yssdo5hdf6mpwvgiftv466prtwwcevu2mj3t355wi Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.6.png +bafkreicoqa4kn2aaxzivbbeffvbvw45frrekuefwu6dixafzssewhhdcne Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.7.png +bafkreickjukon2bbehhjsjfmnjql33zuurki4cz3djw6cuatyxgwijoioq Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.9.png +bafkreicaxbvt4ok3vcft2i664w4iovrdljwpocbl5qctlxqo2p7usks2be Modules/Core/Common/test/Baseline/itkPointSetToImageFilterTest1.png +bafkreia46j4a53hnz6iup2x6x5fjrudaseyrte3y4fce5s3yytk53fd6aa Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionHorizTest.tiff +bafkreiaqgx7eaphidpcagcuqm7t2zfd6vjcdnpg7c7rr24xefvgukhcha4 Modules/Core/Mesh/test/Baseline/itkTriangleMeshToBinaryImageFilterTest2.mha +bafkreic3w33ftya4ayrcg5jwvsgjiymswmnehrnlfjlk5rcimfluii7iuu Modules/Core/TestKernel/test/Baseline/itkRandomImageSourceValuesTest.mha +bafkreicm7roru3x3zjg3t3u3dykpjf5jm7ud2t3f6btwjme77i5qerxtu4 Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements1.txt +bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements5.txt +bafkreibqqfdwp4t4pjqsqjqts7mmclyqpwmhmjb5tixve6qna5vkrsdjay Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest5.png +bafkreiawvfi3k6cllwfh72ovzxwsyl6u665pjvq647inhlytzary3uhzga Modules/Core/Transform/test/Baseline/itkBSplineTransformTest2PixelCentered.png +bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/wrapping/test/Baseline/BSplineDeformationTransformDisplacements5.txt bafkreifmtmpjuppizngftzcnt3ilufa66dajy3i6xogn3jfirveqw63cwu Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk bafkreif4yuyueovggfvnjj3qrnct54nrm52pfconktlvavzq7kt64jo3ji Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png bafkreicjpqxemmg3lgvigudscqqaiy3mjrgm3tm3ep7ngskw3is3fix2qi Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_cCED_20.png @@ -34,5 +50,711 @@ bafkreibhkebc4kkb5ysuelc2kfllixc2xq3looqfkvrq6f3qx5a42cvm5q Modules/Filtering/An bafkreicey264ntq4ew4wnlyoy23cu5k3cmxwvlm7fg4r5skcbtwhsh5jfe Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png bafkreics5ulkrwki4epnu6l4umam3on7ovr5ao4yfva7f2odkkp25j26gm Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk bafybeid6ongwkdpv3manmr4qpu22zybq4frslcqj3ysmkxc5tmps2aqnfu Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk +bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Modules/Filtering/AnisotropicSmoothing/wrapping/test/Baseline/PythonGradientAnisotropicDiffusionImageFilterTest.png +bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Modules/Filtering/AntiAlias/wrapping/test/Baseline/PythonAntiAliasBinaryImageFilterTest.png +bafkreicdkjlp7afamihunxzcsb4foifgcbx6qmo5cs36y5dmwcibhtvxqi Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalClosingImageFilterTestUnsafe.png +bafkreicj6d2l5z25katef4afed4f3zaqguqt2r5zsqkwsgk2lrsff2qdfy Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryOpeningByReconstructionImageFilterTest.png +bafkreicbb3uzfc5qccebmo6sk7s72gbt5rfnigka2oz4fpliv5g37bxot4 Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryDilateImageFilterTest.png +bafkreic4vmuubzrcau5aal5lolgnf2x3udnsoszwg76dk77dychtzqyvei Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryErodeImageFilterTest.png +bafkreibu6qij5pcahkgxkbjte7w66pkevjkylyadootaxtu2j5oobxfube Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_green.png +bafkreib33bbmqabpybt3g5cnnrh7dvzptnzigkpivmykn2hhodx6jnhcgm Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_hot.png +bafkreiamtmf2eq724atw5wtygobzxrnb2q6bbyka7mjgn5i4jcuqfwear4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_red.png +bafkreiannnuwbfoesz6omnu2zxbhvvjjqdihul2p5djn7nxrq5er4xyaue Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_spring.png +bafkreiaqef55kclq6twcdakxwotltuwby2r2w4bfpqbliw4jc7lq62x2ka Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_winter.png +bafkreiaob7e4r4qlenwpdsgxibbto7gwddlzdngmy6hfvtxkwbwj3akzba Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5Mean.png +bafkreibfvub2xm2cosfzpy7hstbefskq2ep2jhzvz7idl2rmj2o4kxbyzi Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png +bafkreiazebe4f3uzb47vlp5telxkr7dpeyf4lziep3yft55jilnbaqoq2i Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nii.gz +bafkreiaru5qnadfuupum5shy3ufo66t4d65hww4jh5sh5bfnoqkxld67pq Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nrrd +bafkreibqiulbqsp7mkqq2sbgz3ncly3bmmit4abf4lgv6h5ywwaabs2pdm Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd +bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOff.nrrd +bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOn.nrrd +bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYPeriodic.nrrd +bafkreiapvvycnrewcuahsb73k4dif3gz7d7qfjy5uywnhoon4lxxoaeryi Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTestSobelY.nrrd +bafkreibjisjejrnhepfssqqssznwhhzxgv2lgwvlhmuc54ealrqar7domy Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png +bafkreibi5uu33l7syoe4li6kwoslls4znkgdt4gtpe3h75guinve2hp2ju Modules/Filtering/Convolution/test/Input/FixedRectangleMask1.png +bafkreibypyhdyds6wd7ano54ehk4g37yohxtmca2v6qxrsbsytudj73o5m Modules/Filtering/Convolution/test/Input/FixedRectangleMask3.png +bafkreiag36wcsk47p5b6y7gxn5mul6fojop6g62pukzj556at5wb4w3sii Modules/Filtering/Convolution/test/Input/MovingRectangles.png +bafkreibyq2olmktnxpyvy7ee7myrxttpvdfccwh2qkmdddmkfpxlovmzkq Modules/Filtering/Convolution/test/Input/MovingRectanglesCropped.png +bafkreic7avzlu7ski3mwc5tmuzb5b42van7mai35yuy7pqqlwair4kesgy Modules/Filtering/Convolution/test/Input/cthead1.mha +bafkreialxxq5r2kdktzm5ka4ypgs4iqjs22znimr7poqkbv3jjy3jcpccu Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreibwusujxjz7mafw5nnr3k4zvlhnoykx2qtbjlmryrex3anarckxma Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreiaqjggtmpogu5u4bjk5tkpkdg6hmejtxhbs2jkucekc634eqnsxhu Modules/Filtering/Deconvolution/test/Baseline/itkTikhonovDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestInput.png +bafkreic2bed3tisq3ycri6twmwhblpglykhsqsmh2b5yhspzol67fqtm6m Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestKernelIrregular.tif +bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestNonNullOriginInput.mha +bafkreic3eoaznugg5ojuwuzfkjaposh6k7zeepcmendg2l6ee4s3p73fdm Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTest0.mha +bafkreichyfjvdememnr7npym2jpkywfdzqxf3x325frlvjwqcbnbca47dq Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestGaussian.mha +bafkreicd4467ju2jltmyj2fsvhd5gakvppzu23iajsjrgjxnvjvvv4n4h4 Modules/Filtering/Denoising/test/Input/checkerboard_noise10Rician.mha +bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Modules/Filtering/DisplacementField/test/Input/parametersBSpline.txt +bafkreia4q3fcvt6avb4tt5cmdw2l4rxvhmmszzgkvsziphcyyytoc3k4ze Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestWrap5.png +bafkreicqleapu3shlptziamyzu2s575oavdsevvxpsurlpeqhmxhmp4jda Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZeroFluxNeumann5.png +bafkreiarnn37z64x3sl5xa4afct7wzfv27xzhoar6nvbfn75r7e75cewe4 Modules/Filtering/FFT/test/Baseline/itkFFTShiftImageFilterTestEven0.png +bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Modules/Filtering/FFT/test/Input/TreeBarkTexture.png +bafkreibrkmm7ajez2lunrkuxoeijb2xbyzpto5haorcgzcwcqq7eym6lem Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineImaginaryFull.mhd +bafkreia347cy3linuhybahy6uqployki6buqscbltl57g4umvfzurg6uxa Modules/Filtering/FFT/wrapping/test/Baseline/PythonFFTImageFilterRealTest.png +bafkreicf53yk55h7pmnrvlhaz35xv6re3754gd2d42boahekmpv2m35cjy Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz +bafkreibfizsflouvfrzzy6tduf26dwkynvojec64goxy6sx4wuoadk6ete Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_StrictTopo_out.nii.gz +bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_NoHandlesTopo_out.nii.gz +bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_StrictTopo_out.nii.gz +bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Modules/Filtering/FastMarching/test/Baseline/FastMarchingRightVentricleTest.png +bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Modules/Filtering/FastMarching/test/Baseline/FastMarchingWhiteMatterTest.png +bafkreiamfxpdlhrwa3urvxzbdyof7epsxhavq7zz3t6kgotblflrhvvkni Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds.nii.gz +bafkreicpsr4z37juligbkl76rgbmfb2sinpi37zqqpkvkpuliqwe6trbwu Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds_NoHandlesTopo_out.nii.gz +bafkreiclyq5szovgcwjosb3nludvvqh3ab6puj4vouyvykkplq4fu5hgj4 Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_StrictTopo_out.nii.gz +bafkreia5urqtxe47qsms75ch2d4aqjosjbne5a7mujtxr3ifmhltwt4h5q Modules/Filtering/ImageCompare/test/Input/itkTestingComparisonImageFilterTest.png +bafkreib44cc42kjq46y3r5yqpwecc7nzifo4lxcnqoovjtiakcdjl3cz2u Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_Defaults.nrrd +bafkreibnzchm7dgpwjux3ehhdprkdj5xebv4xhsj3foxkt4o4batgyckue Modules/Filtering/ImageFeature/test/Baseline/itkGradientVectorFlowImageFilterPythonTestX.png +bafkreibe7pcuzn3vgbdwziw747oy5tqiv4f5hmadllkwaj5qljasdxv5ve Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianImageFilterTestBaseline.png +bafkreiat4j53ffhhnqrxc5gyfgp43smpt3436vgxp5ffjrwjxre2c4427u Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianSharpeningImageFilterTest.png +bafkreibhyt2poizcznlpci74n2n3punxbios7fqrgpecppbsze2u5xtcce Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_0Overlay.png +bafkreibsk6v5fkeera7ycklhtndc34xurwagjne24nccanbiujdratyadu Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_1Overlay.png +bafkreialyrcnayuvzwndkin2vg77njxn6m5in4sijg3ax7gtlwj3iyh72u Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_2Overlay.png +bafkreiaafafrt7hm5wylsblewjup632dyn6zp4tt5jvzmc6sb3iufpod4u Modules/Filtering/ImageFusion/test/Baseline/cthead1Label-color.png +bafkreice64ljtuopkxgd6kxrodan5kj6msdkqjd3xdv3aw5omouyee44vi Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest2.png +bafkreiconbqbpp3nohzhuegau35f2khmai5x7sgtgjzpnc5r2qdua6v7mu Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest4.png +bafkreibco7apln276jrqmxigdhwy3vd7durntmm6gvma7czq73ft3svowq Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapOverlayImageFilterTest3.png +bafkreibhzjeqs7ynhgcmbp4znwpavhn2svd6vl3odedabzexmep46lyyc4 Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapToRGBImageFilterTest1.png +bafkreial4wyrncl2o4kec4o7zsxioqig7imp6firltaajuvhajxdi2ivwm Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_2D.nii.gz +bafkreibqhhd2d55zj4hi7xk2uelnmswbwc2gcekbyewbbxyenvpcxmdwnq Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_3D.nii.gz +bafkreiap2a7bcr7pspwmp4tcb34iurvjtclgrabftb2busg3tvpdcn3oee Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolate.mha +bafkreia2h2yywl2qjmmsfyahqpb5xvw2tciw3ulowfikiduqbxocljt2tm Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolateUseRefImageOn.png +bafkreiawv6zalp3eqc7ak2apuw2ytscnj6c4rttm5kob34ao53mltozlk4 Modules/Filtering/ImageGrid/test/Baseline/SwirledMirrored_0-11-7.nrrd +bafkreibgpk76suldbnblxtxidohhlmrs6juwgi4gkbycgj6du2kmicihtu Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest03.mha +bafkreia2rtt6qpocb63z6x75s35bejgscimo62a6xrowbe4jprtoct6ggm Modules/Filtering/ImageGrid/test/Input/ScanConvertPhasedArray3DTestInput.mha +bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest1.png +bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest2.png +bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest4.png +bafkreiabsd4upcgss7erw4ayxsvpac3do5obqaskni4kdbynag3jtsai2u Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKNearestNeighborTestOutput.mha +bafkreiaakeqqbsobkemfpa547unyd7bwuc3gmrf2ndkiljdmec6r3zobky Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKWindowedSincTestOutput.mha +bafkreiaa5tlak23i3zdddir3bikelpmegwm35cr6m7n5rrd575vq4lwts4 Modules/Filtering/ImageIntensity/test/Baseline/PolylineMaskImageFilterTest.mha +bafkreicbkpslqiepfbkg7tp7hl3cp45iv34s4t3msfpvycde3l2q7d4agi Modules/Filtering/ImageIntensity/test/Baseline/itkMagnitudeAndPhaseToComplexImageFilterTestBaseline.mha +bafkreibyp55hk4q5ez6ca7k2m74nh5swwdvrygttf55cpab3vorq5wo3c4 Modules/Filtering/ImageIntensity/wrapping/test/Baseline/PythonSigmoidImageFilterTest.png +bafkreiabs4xo3grkobwh4bjnrwyljffv7b6fe6f2tvet3bmi7w2hese7wy Modules/Filtering/ImageLabel/test/Baseline/itkLabelContourImageFilterTest0.png +bafkreic3tjfw7w3322yrhbepg55iyii24f2ldjkx5sjxvffr7adyvbmtz4 Modules/Filtering/ImageStatistics/test/Input/targetImage.nii.gz +bafkreib7gcviltetx2tdzgynceqphyif3oint2flldewhbo7rcrexkqreq Modules/Filtering/LabelMap/test/Baseline/binary-image-various-shapes01-binary-shape-keep-n-objects.png +bafkreibgnh73b4tmhyrhxjg4srbdicfewnrlq5gkquuxazpmamnqnaz7te Modules/Filtering/LabelMap/test/Baseline/connected0lines-1.png +bafkreiazk2vfa6ey27psukejvnjuocjil6wgtxyi4khwstzky65crzb77a Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changed3.png +bafkreib7mqtcirlnrbjpjomqf26per3kr52vyvvio3nvfabzip6veuk3nq Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changeregion.mha +bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-label-relabeled.mha +bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-relabel-labelmap.mha +bafkreibx6ubenw7scurj3h5uaj7lmjrzowz5clapwvyxdezdrxtaal6dj4 Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-unique-labelmap.mha +bafkreic45iozaaxahsabdly573ku6tm3lwzjd3zqnkvtv2dfxmgt7vdzpu Modules/Filtering/LabelMap/test/Baseline/cthead1-statistics-object-removed-baseline.png +bafkreia7avfnbwl7pylctsqd3p3ub72pb3hazulavxmf6si3ap6pwvf5hi Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-opening-baseline.png +bafkreiaolvoytmswkya5jsqkkbbj5goehrb2v4njttn7tes2x34vnqfk6u Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-open-baseline.png +bafkreicha3iqkizz4w3ukuwkkzoicfqxgbc7miah6sq4fkghsipbn7njx4 Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-relabel-baseline.png +bafkreibhouw5b6l7p5pjfhvqpjkykha4gjftpllyzzqkh6ocq6s37udw64 Modules/Filtering/LabelMap/test/Baseline/fillhole_test_3D_1.nrrd +bafkreiaa65dzpzwc7y4sxgyurcoozg2axceaf3fwskwqt6hmfszeafslxy Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest0.png +bafkreibdx3cr6tnotzdanwfrmkprmz2jqqjcubj7vvh7mfnivm4dpy6tze Modules/Filtering/LabelMap/test/Baseline/itkAutoCropLabelMapFilterTest2-92.png +bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByErosionImageFilterTest.png +bafkreibixcavzrfp7yffzvnzysy7blunaddrov62jx4awvxwykb7teh56m Modules/Filtering/LabelMap/test/Baseline/itkBinaryStatisticsKeepNObjectsImageFilterTest1.png +bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-0.png +bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-0.png +bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-1-1.png +bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-0.png +bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-10.png +bafkreibx4b5ws4ghnirs22ekrirf4sqix2o7z2frzobmdork35gn62tmpy Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-1-0.png +bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-0-0.png +bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-0-10.png +bafkreian2rxokqsq2apfl3bi23xcahdsiny56i3tezblfsepuouagisgca Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-0.png +bafkreibtlz634jlkl6qigh53sgxvkoktgkdpbf4s3jbda7frudzjycu4oq Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-10.png +bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-0.png +bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-10.png +bafkreicnfl7sb4dd3pa3rtl55j5jeuxfwixzxeendf6ecwqnqhnrme3oc4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapToAttributeImageFilterTest1.png +bafkreiaravwcdt24qwqq5fqgizxnmagrxab7syd2pbxbvuot2dv6xiq3qq Modules/Filtering/LabelMap/test/Baseline/itkLabelShapeKeepNObjectsImageFilterTest1.png +bafkreicjyx5wr6ehg42gfqoqpnidwtcjxqwzymdk46jjfbpdntvfrz754e Modules/Filtering/LabelMap/test/Baseline/itkShapePositionLabelMapFilterTest1.png +bafkreiazarivpcf5g5roteydftoqclzwhylaipzjydmzhcqtpcvhoqhd5i Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-aggregate.mha +bafkreibgcx5ep44ack3p3smspyr3msp2ycc2xv2rnx4oqcsovazuij5qua Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-keep.mha +bafkreickoaksql6nb7wktta2x6ps5oxxir2njwsuwcfwqqy6ajxvmojszi Modules/Filtering/LabelMap/test/Baseline/simple-label-to-shapelabelmap.mha +bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Filtering/LabelMap/test/Input/cthead1Label.png +bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal-ref1.png +bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal1.png +bafkreibnunlresb3jsg2pxvepfn7huridcvmj73fszyo54ghy4e7sdpfvi Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMaximal-ref2.png +bafkreiaotugip2xb4csi77nbfq5ns3shcsycwr6gnxbrys6clc4hrxf4xm Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMinimal-ref2.png +bafkreibmhc2r37iza5helbebjxtc6qvtb4s7kgf66iblapjzxbjdi4kzly Modules/Filtering/MathematicalMorphology/test/Baseline/itkRankImageFilter10.png +bafkreiaqaq6eg2igma3pwwqzvcxru4c3g2q5ixsxotpisradvew56qxc2q Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonBoxGrayscaleDilateImageFilterTest.png +bafkreiaoa7f6wv446lhb3qdejvs2yqedjq47a4onrruo2in5t36lpalwyq Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonGrayscaleErodeImageFilterTest.png +bafkreiamwjgxwrccw45ezifqpo2cifxuvpq34c2jamj4ybobrvq4ms437u Modules/Filtering/Path/test/Input/ContourExtractor2DTest.tif +bafkreibk4tqhmbtujvrq4irwfq5xm44tobzxqqz76n6i4txw7kcisw7xyi Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterComparisonTestOutput.mha +bafkreiadgikxnwpdkuqqfwb5cxjud5iv3w6lhk7gn3rxnabozxtksict4m Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha +bafkreiccqgvi6m2ce3h6ac2lw3yrksjecd22ndcujkr5xngq6uptpskwou Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha +bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Smoothing/test/Input/itkDiscreteGaussianImageFilterTestNonNullOriginInput.mha +bafkreibvkecapgicynipvtocl4hlauraurvge2ulwb7gdmpp6swcjbmgsy Modules/Filtering/Smoothing/wrapping/test/Baseline/PythonMeanImageFilterTest.png +bafkreibzn3b74i5zezq73duvw7lyswoq2d67tnyqto2vk4azoqmt6l64du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTest.png +bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoAutoMinMax.png +bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoInterMode.png +bafkreicjgfyc4ewexfsvkwteh2nnzvzpupq3cf6gbj3th436jit5q5t424 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestShort.png +bafkreib7vrf6g3iz3surspjdc7myzta3obaz7vm7ms25h2xor45dp3oqrq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTest.png +bafkreiaapie6l3gbobvkct2c6hryaox4p2pcpuqstoxl43ewxmrgiucbcq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTestNoAutoMinMax.png +bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthMaskedThresholdImageFilterTest.png +bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTestNoAutoMinMax.png +bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestNoAutoMinMax.png +bafkreiadkgfv43224uezlnzbo3h5mivcd5kcagi2domkqxrrwuc6fx3gm4 Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestShort.png +bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax.png +bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTest.png +bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestNoAutoMinMax.png +bafkreiaiqtcss2pmzbriei7ywwiqmr72ce2id3jwbcuodecxevzctjad3q Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestShort.png +bafkreibhu2h5jlllfhjfdv3meoudfapshmb2mh5p3mgvrouufot5n6ayzq Modules/Filtering/Thresholding/test/Baseline/itkOtsuMaskedThresholdImageFilterTest.png +bafkreiaqccnhzhddvv4kbz23lcezdi6toxtdryc25ktbatbhldydxfpnii Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest.png +bafkreib4ggikzuopjpjqjvidx4mqq4ogkzsk5rc4hd7vzlxnnmug37g5me Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest2.png +bafkreiaw5jajc4sfmag5ra2x2onvkdey2uxrpkvs5xjvbpbluejpbkpqzy Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest3.png +bafkreib5v6t4wwgohmli4zmvoscdfvl3wqg74tss6n7cplnnvfi7exxjle Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTest.png +bafkreib4ggikzuopjpjqjvidx4mqq4ogkzsk5rc4hd7vzlxnnmug37g5me Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestFlipInsideOut.png +bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestNoAutoMinMax.png +bafkreiagapn4qalqljzg62d2xlaleljab5evfqkpjx7tpcdnmajbmvpylq Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestShort.png +bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTest.png +bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestNoAutoMinMax.png +bafkreiclkcj6vgvql6axqm4joameb5lh3gumvctcjiwsczquic45ajs6zu Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestShort.png +bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkTriangleMaskedThresholdImageFilterTest.png +bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTestNoAutoMinMax.png +bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTestNoAutoMinMax.png +bafkreial2pas6egwlkcpyiu5t6dhwrzbcn2dmjn34weektc65du3juopku Modules/Filtering/Thresholding/test/Input/image_3modes.png +bafkreiaf6axgqa52icrai6ekwvj4ztntjothmfc4j67qsqagahx6queqay Modules/Filtering/Thresholding/wrapping/test/Baseline/PythonBinaryThresholdImageFilterTest.png +bafkreicpd66yibfo6o56oawyuyxcc645aqekapzctcuuq4mwybxgpnr7dy Modules/IO/BioRad/test/Input/biorad.pic +bafkreia5wd3xlz66gvwpdnfi5bvpnv2ws2nc6p27toyuhwq5p2hgfthhky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/id +bafkreiapkxryvtcstzb2xhxdx7mj24547lmjk3veforbutwaohe6t7qcky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/procs +bafkreibmjfvjkedwz36qfmde6pph7fvdrpj2z4okx5ogcpls3gtitb6pgq Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/reco +bafkreia6dezn3wji7sz4edjwxrixhkwo5zju43dmrrf7asx3ckhgnoh4ga Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/methreco +bafkreica4q7r7ksbmldhao3poinrgksit4w7meadgh5e7vww7bhyptyjvm Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/id +bafkreiaba5gipn3ln5ufagyf5kncyy77uk4bghmu7mi5xuztjkdldv4xou Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/methreco +bafkreibwmf3snyrmne4brkvxszoe6f2wcjqvsbs7y73gphpaffpgm6pv3e Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/procs +bafkreiamstfxjy2fiyzoxubq6g5gmp5b47oro6iror6x3ps3zckmje55sa Modules/IO/DCMTK/test/Baseline/itkDCMTKNonSquare.nii.gz +bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/DCMTK/test/Input/NoPreambleDicomTest.dcm +bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/DCMTK/test/Input/preamble.dcm +bafkreibzdrcgqyc3xtkxqh7rfpxf5oji35b2g5yujsaiwxltp3kwmxbixe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOSecondaryCaptureSpacingTestBaseline.mha +bafkreib3lktbjlrszzl5mzaolbdacndc3yuhsqdsloqtpm2m5pu3ieqwoe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3Baseline.mha +bafkreibbd7klq3uhpmfqxbmzglyrf3jwnp5hxn3udmrurnnplfflmoclka Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3RescaledBaseline.mha +bafkreiaywvi7sthuyqph4li4y44gmm2lhl6cindt7uruouvixmahnuw3xq Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4Baseline.mha +bafkreickm3dtemtmkjzabwm2pk4cguqgetzopgzsctup3bbzv7nmajrgpi Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4RescaledBaseline.mha +bafkreib5e6kni2tdbtaxpz2i77k7hp5gzkztppiuws3ov4yx4dswlna6p4 Modules/IO/GDCM/test/Input/Lily/HTJ2K-YBR_ICT.dcm +bafkreibn3fqjxfgyy5zhep6y5xfjqhmqucpwzyz5u2ylocu4trrbqppghu Modules/IO/GDCM/test/Input/Lily/JPEGLS-RGB.dcm +bafkreibf6gnnn5n2mhc36uxl37hxs7efmlfvx2vkyue7ctobu2ybavgk6i Modules/IO/GDCM/test/Input/Lily/losslessJPEG-RGB.dcm +bafkreic2lcc3h4htvb6qorcetuxmnaht3xcqal2rbejclk3p3lqko5ocua Modules/IO/GDCM/test/Input/Lily/lossyJPEG-YBR_FULL_422.dcm +bafkreiciwm5plkh7lydrtupwmlh42kofz752rrlwsgtwfp42ei6dhmdbne Modules/IO/GDCM/test/Input/Lily/raw-RGB.dcm +bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/GDCM/test/Input/NoPreambleDicomTest.dcm +bafkreibcgqbxkz2p6jjrs3hiufd2z4cfrpvd6ec76ldk7apq5mizoklalm Modules/IO/GDCM/test/Input/US1_J2KI.dcm +bafkreibee764qlmqzvgorju3kfl65szxksmqfxhbhcwblrsfnj7k44fyhu Modules/IO/GDCM/test/Input/US1_J2KR.dcm +bafkreibrnnomrtk7hi6hgcke7b4pars25g4teyddo4oazuz3g5kdf6w4ky Modules/IO/GDCM/test/Input/gdcmNoSpacingTest.dcm +bafkreia27zimyd5h54hfvrkl5qbyuhscexgszud6hazqtw5pxzvc2clgzy Modules/IO/GDCM/test/Input/itkGDCMImageIOTest3_mono1.dcm +bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/GDCM/test/Input/preamble.dcm +bafkreia6hxgzn43ez65h4tren4dxlcoheh665pfaq4rysylc6tygazztd4 Modules/IO/GE/test/Input/c_vf1122.fre +bafkreibak73qruudepz3da3ipb6r452dhwp2lw5tgxquiorqta2achjppq Modules/IO/ImageBase/test/Input/Test64bit.mha +bafkreibhcntilukv7q5hj7xprmjzkjxz7l7noi4p65vzv4xmxzswuleuua Modules/IO/JPEG/test/Input/corrupted2.jpg +bafkreia33a3mrs4scp7ewmoi4lbxo4vels4d45ppyqe6dyd75ua44vzoqu Modules/IO/JPEG/test/Input/corrupted_image.jpg +bafkreibrrcuodrmpfgrzimrh2xef6abwcxqagt5di2wukbksqtclkjhtpa Modules/IO/JPEG2000/test/Input/Cevennes2.jp2 +bafkreib5ptk434cx6i7nmke65y2ckgxztcvc57harleltk52spnumk4cka Modules/IO/MINC/test/Input/t1_z+_double_cor.mnc +bafkreibdmkjpimddr22mbj6j7okd7ymkrgpjllzwcy2a2scpxmqxskeqqi Modules/IO/MINC/test/Input/t1_z+_double_sag.mnc +bafkreiaz4kdhdvpcrvnzqhtmar6pibzbk5mw2tu5dpds4iv7gddy3ucsze Modules/IO/MINC/test/Input/t1_z+_double_trans.mnc +bafkreiazjnypym26bkq3mlu3lyzjivbxvqtxg5qo5o7qsubavnfzcms54u Modules/IO/MINC/test/Input/t1_z+_float_cor.mnc +bafkreib764tgeb3ndqgbjadrm4lul2wxg7jibeu3cwp4urja5gx7jbp64e Modules/IO/MINC/test/Input/t1_z+_float_sag.mnc +bafkreibd5rlfz3wtmihdrfsrnflu3grkxgkr73wqh7kkdy4s2guzttp3ve Modules/IO/MINC/test/Input/t1_z+_float_trans.mnc +bafkreibx3ele7mywft2oj34gep32d6tiyvl264tk3by6d5o5ez7zg4excy Modules/IO/MINC/test/Input/t1_z+_float_yxz_nonorm.mnc +bafkreia5r5t7bibazuimq62rzmscbmx4pqacrwv7dauitchi2d6k3ojh3q Modules/IO/MINC/test/Input/t1_z+_float_yxz_norm.mnc +bafkreicgfqmuyzminfrpms4kusktfslyy62bhype6qyajeewuw3lgpjdsu Modules/IO/MINC/test/Input/t1_z+_long_cor.mnc +bafkreiabiubax3voswprcugsbxs36r3eqf4ddovehijezkcnqbxssrgoey Modules/IO/MINC/test/Input/t1_z+_long_trans.mnc +bafkreiabyqzkqaxxceyactghzurhcqvvi7bkb3fmav5qkksvp3fh4myscq Modules/IO/MINC/test/Input/t1_z+_short_trans.mnc +bafkreicjze6ax27mhh6m7x2ghuiyz5hq7luhlhfn4rugzfqnwfb7nqhuei Modules/IO/MINC/test/Input/t1_z+_ubyte_sag.mnc +bafkreicheaagepok4pt5uyxdqr62eokumosn25234ynrpx4ak4ewkktavq Modules/IO/MINC/test/Input/t1_z+_ushort_cor.mnc +bafkreibfgldbyi7lcw6bursn5stmca3dz6f6j35f5yhrpor4sw5l467rqe Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc +bafkreiafcwcyfvtn6nbgoiuxvzvyjfiqqzsksohzmjlond777cnmydztvm Modules/IO/MINC/test/Input/t1_z-_byte_cor.mnc +bafkreibybxs4h5o5dooapy3gqmurj5ddfns7hp7jul6e7r7kjaa26eawmy Modules/IO/MINC/test/Input/t1_z-_byte_sag.mnc +bafkreiaqvynjndyvxcni5q5o5bciqragu53ayuunoxrp7utvxu547k5n5m Modules/IO/MINC/test/Input/t1_z-_float_sag.mnc +bafkreic3t5yr3wbdkwpzdxfyz3eorbbn3mtis5riv4zkokjkmdoeavhjq4 Modules/IO/MINC/test/Input/t1_z-_long_cor.mnc +bafkreiapgvyolps6dfu63ec2jfuziqd3oi4qrgm2girzwl3afdvbepm4gu Modules/IO/MINC/test/Input/t1_z-_short_sag.mnc +bafkreiat4jzfu5jrpjglujdxjxwx6f7w2znzay2nrm6zqofrkcuzbqxwia Modules/IO/MINC/test/Input/t1_z-_ulong_cor.mnc +bafkreibrh3pnqyhhl7g4r4eappzh6g6omkucngbpd5u3nva2ny6nxih4jm Modules/IO/MINC/test/Input/t1_z-_ulong_sag.mnc +bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/Mesh/test/Baseline/sphere.fsb +bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/MeshFreeSurfer/test/Baseline/sphere.fsb +bafkreibnvnafbqexjgwjjqtyrdofdb7lalnoygcfszgfyn2zgpxdv55jne Modules/IO/MeshGifti/test/Baseline/aparc.gii +bafkreibvqxc22xbozkv3t5a6dyy7nojn3pysbunjfbgnxpapuidkpeoifa Modules/IO/MeshOFF/test/Baseline/octa.off +bafkreibltq442d4zfqxi4ffk4qitvr7wmbuwiytnlvl3j2t6bzwci5c33a Modules/IO/MeshVTK/test/Baseline/sphere_norm.vtk +bafkreicbyipbwcnhtlxdvxzz4mwunj6payye5tygydcej7aw2cyn6l6ntu Modules/IO/MeshVTK/test/Input/sphere_51_b.vtk +bafkreibjy43ezabpmfhbm6ewdhm54gitzhinrduetz75dksvm6eiqf2haa Modules/IO/NIFTI/test/Input/SlopeInterceptUCHAR.nii.gz +bafkreibkzncn66f3zg2rsylhmesjqtmgjvwqgfosfzbrsfbpc5vttkixqu Modules/IO/NIFTI/test/Input/SmallVoxels.nii.gz +bafkreiay4wgc2thnkkrellosm7htbgz5ooidzkyysheb5k477zqyfkbbbe Modules/IO/NIFTI/test/Input/SmallVoxels_AffinePrecision.nii.gz +bafkreiamyaqz7uybrjgfnnnidw3cz3zcap335znltfgilkbgi5wqdxtxnu Modules/IO/NIFTI/test/Input/SmallVoxels_nosform.nii.gz +bafkreiawqehmd75yk334c7pxcjumrdw4ide2dgg7x3ctopotkzyfz7cjva Modules/IO/NIFTI/test/Input/xyzt_units_test_scl_mm_s.nii.gz +bafkreiblwwaa6orfdgxfbgwzsx4fxehs3nehoj3kcgjuyn2f4v3kxfns5e Modules/IO/PNG/test/Baseline/itkPNGImageIOTest2GreyAlpha.png +bafkreic73nr3gc4qyk2v4q7eflulowwfzn3rpfhvt2ci53erkbjlt3wfvi Modules/IO/PNG/test/Input/HeliconiusNumataPaletteGrey.png +bafkreic66j47xtsk7o7f4uzlz6w7faly7ixixyup4nizmrafazz55idc6e Modules/IO/PhilipsREC/test/Input/Test_Cardiac_Phase_7_1.PAR +bafkreiclceys776636dg2qvrmjlh54kv56vmkbv2zwioju6agvmvpmwk2u Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_1.PAR +bafkreicdjumo5anfgkylpmogbgqhbwg6fpyp7vrkpcvpltjxll7rpzmeaq Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_3.PAR +bafkreicpqiqyrcg6bio22phi2z6x2ntuyakrfmt6breeuej3vxqwnioily Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_AdobeDeflate.tif +bafkreibsm2gas5pa5lbw6lpzcazm52s2xpgxdhr67jxjyspz7jw7kgi3qe Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_Deflate.tif +bafkreicg7h7nqzyiia7dekwwhp6ini4klwavu7cs2werjfkzqdkoavuxi4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_LZW.tif +bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_NoCompression.tif +bafkreicg7h7nqzyiia7dekwwhp6ini4klwavu7cs2werjfkzqdkoavuxi4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_PackBits.tif +bafkreiawwlhu5pst56okylhogxdwswqxf6g27ipzt4l7bg7e4o2svaaii4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG.tif +bafkreiarqtxlwwbtbz67ejmmy4jfcajjfersknnlh2ueudamjzdxca4gnu Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_1.tif +bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_LZW.tif +bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_PackBits.tif +bafkreiawjlwvba7r7cofo4ld5cdeqed2y32iny6wlpwzm2f7rhs7o4vdpy Modules/IO/TIFF/test/Baseline/rampFloat.tif +bafkreibiojnnkmu6oqycherjhopy7i6nczwk4od7jflyr7fwcxcy36apqu Modules/IO/TIFF/test/Input/cthead_oriet_bl.tif +bafkreic6yjaz5ptkv433pvfey3rd2zv5gyjilfmyg7grn75zzet4nknojq Modules/IO/TIFF/test/Input/cthead_oriet_tr.tif +bafkreicn5vtm2e6ypi3lpuz6my7dx7wxykqvaqmvph6wjeoqttkdp4mo3q Modules/IO/TIFF/test/Input/jello.tif +bafkreibyhe4flgn2jcgg3ykqeqihy6yplog47ty7x5rycwibjlu7xpw6sq Modules/IO/TIFF/test/Input/ps-separated.tif +bafkreiaxoniq2r2lubgmgw2y6jgb52h37mgtvyft23aau4kktfis36ggbu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralMembraneTest.meta +bafkreibzitvyck2r7vmxghb7emmnwi3yhdcp54qefrkrdag4ajshkf4rt4 Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronStrainTest.meta +bafkreia4gfypioq6kzb6xe5tqdop7dmdnmr2mk5cghcsszml74zu4lcm3i Modules/Numerics/FEM/test/Input/3DC0LinearTetrahedronStrainTest.meta +bafkreic5kelopijimf2io3ism7o2ow57ek77drgdxgtff73zyzclqwwl5y Modules/Numerics/FEM/test/Input/LoadGravConstTest.meta +bafkreibsmxa3bguccx3pl5mmum2ulzm6swk27vp7jhnf4v7gxa7wfmq4tq Modules/Numerics/FEM/test/Input/hexa4-grav.meta +bafkreiaqxndb33vzrmizj52d2azb6x7zjfs7eiwiwjilfd2tew73csmx5q Modules/Numerics/FEM/test/Input/quad-lm.meta +bafkreibeqqq6klcguwmdpvu3kwrrvj6lhf664wulwj4trpuzw6fmanuwha Modules/Numerics/FEM/test/Input/quad2-small.meta +bafkreich4kkgtv375t7dmtm42e4aluvlu642axfdrpdie6virtfgy2m53y Modules/Numerics/FEM/test/Input/tri3-e.meta +bafkreibwbm425iuesdb645nze6gi2ucipaqdxx4bx3zqnl6xhdqgyhotue Modules/Numerics/FEM/test/Input/truss.meta +bafkreibqn6y5z6zbe2onjg6qq2n3dzn5qz3qigga3flmbkvmqccz26vjj4 Modules/Numerics/Statistics/test/Baseline/itkGaussianRandomSubsamplingTest.mha +bafkreibpakhi5e4vzisarnv3hlyt5p4agpajwlu72qutties66xedvwraq Modules/Numerics/Statistics/test/Baseline/itkUniformRandomSubsamplingTest.mha +bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/BSplineWarping1Test.png +bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration1v4Test.png +bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration6TestPixelCentered.png +bafkreib3qwnibtah25trmmn2idtdsyqz65ldqip4luszyz2vwwtqbqo3vm Modules/Registration/GPUPDEDeformable/test/Input/LenaFix.png +bafkreibd3ic3fujyogccnuj43gnnnsywww6h3clxkoetgrglwogarnwmrq Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz +bafkreib7mbf4mtwapdaxgl3br4owsit6nflqumlacqsovxq3463yd5rpp4 Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz +bafkreib23kri5wmeqn6vackttmgudyvewx54576juctawn2wzuh6jv5api Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S1_T1_F0.nii.gz +bafkreiabik4os7s5pndybppzakgsbakt42j5r34lajqqbfotewtmz7yw3a Modules/Registration/Metricsv4/test/Baseline/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz +bafkreicdrmvelsuyq2f55h7k6irrzsafycbqyyshp6l3g6uce7wdtfi4zm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p00.jpg +bafkreic5ii25egocjcsqw6w2j3owhojlpmhzenaxedyspwlmdtu6bt6x3e Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p08.jpg +bafkreibdrboamvsyp7r3frx3imnk2dtf35o2suif3ylrreshoaeu3y5upu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p11.jpg +bafkreia2a7lbarlaac2z3ez3gq6bm4liqegmrk5xoup2mbtowa3oloq2xq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p12.jpg +bafkreiatp622wdtsnbmlkirmabveozoondnj6winvspn7hrdaxk3sbfb3a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p14.jpg +bafkreic36soefecz6pc2vdznnppp3ef5fb7ivgt65bqqwnced2rxdvswb4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p15.jpg +bafkreibjeipnng7mze3ati33glnhvo5cxvxn5saw2rtvhotpkwkvk5lzrm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p18.jpg +bafkreic2znw7ldy773onhvvuvo5wetmttjsxkedf2zn2kgvss4f7tcrhi4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p22.jpg +bafkreiaoe734njdoxj2ehz4mait6lob2ywtdolzzerghb3u3sfnahu3ze4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p25.jpg +bafkreibp3vzrwpmbjpnv3ijobr5pwnk7cnqtt3y23zseuho5hwr5dkslom Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p26.jpg +bafkreicq27yz3am4sq4knekccsf5ltav3ox5mcriozjwjcrj4qflsu6k2a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p28.jpg +bafkreia7fyci7apdz2dimupaj66poqrps5bvbldsnjbmt365xfbiyqf2mq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p29.jpg +bafkreicb66lnbsivlwpw24wmguqjyoxh5nm5sznej33fxiboonqyx26pem Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p30.jpg +bafkreiazadhmmmb44lvvx2r2h2dxndc2bokqvp63uk6ki4d3obc63s4po4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p33.jpg +bafkreiawtbqfmct3mycc6c3bsaov2nhb4yhfcw2mjqxvjs4ykokmwgkls4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p35.jpg +bafkreibrhr2k7zehscingrbntexadvupg7ukkl3ctgt2yum7wfpnbc4tca Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p38.jpg +bafkreiawtqvuf2cnwihcbim2ytxqx5hkjtaizl736c3ob5z3w6krwa54by Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p39.jpg +bafkreiahfoxrwff7kuy35fwruhgusqlqyszft7tvcjjy6sk4tybp5p6i6m Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p42.jpg +bafkreibqllfcczrwistivweqtudjm5enjrb2nesuwn5dbpwqgwimhm6dne Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p43.jpg +bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_inf.nrrd +bafkreic42uwrp7ypzu36yemb36yvdrq33x2tcchzuwgmup3urlcbha7w4e Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_origN.nhdr +bafkreibpppgh47od7bzyebdfisqg27mxpe4e52odwz6ockd3mbfg36ryse Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p01.png +bafkreiavtmplnifw6xaavywwoy7k2ejefppdh77ftpxnzbpshgz56k4sta Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p04.png +bafkreiaiq4csersp2jrg5sp6wzphs5fcq6gi7ajyv7v7jyzadmdoed2ori Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p08.png +bafkreia6j6pdpmcwv5hnrihzq4gbcr6ktrm3pgvw7re736m5e7637iwkza Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p09.png +bafkreiayiabphhyg5w6xbrpa4gludcyb2a66t3fr7tnjcguwkl6u5rxx2u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p10.png +bafkreibjh34mu4wxjwvxozi7mjrzj56pqurcqqsuujy3gdqi5o3efezeba Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p19.png +bafkreiab7fux6wvm5vhssnkzeqhybvq4qjrle4jbg22pmjt2iv4fcf7ax4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p00.png +bafkreibx4q4rh6mr6urhlroksxizsh72u3hpul6rmcxzipfzibdbp4pdm4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p08.png +bafkreia6cjtobv7fgfa7ehfqptxr244r7ut74mhcd3qhl2f4u2pcxvtedm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p09.png +bafkreibttwjptzunsfj2unxflcvqmymtstlcskm7ydb4dryv65ufdpf6fy Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p13.png +bafkreiazi5mfjvdgxjnqmo5l3lnbv2whz3l5tsxd7jnsx3cujqyys3zu3i Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p17.png +bafkreicjo6mko6kzhfzzll3kor6ckzj6dmc67yhpuybr6efkhyzh5qlhg4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p19.png +bafkreib5xxo773yaxapme2qqsfusm3lt6fm3rawuu3uooqo6kjscwog3rq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p22.png +bafkreibqg2htebrransl5qiq3lt5bwbayq4g6uabnc4h7ynmcttxm47fra Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p26.png +bafkreial3iqdryttg3kv5yc3l2q25zviqxxogw57oawidix7hj4r4bnmhu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p33.png +bafkreiakwrzh6diaxcgk5uoogbkqd6ceh4po7semqpa54b3kc5pghoyacu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p34.png +bafkreiclk5uddh2h3w4bj223ytk6vbwqqlfdw3bls2u3l6w3pt5emvszbq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p38.png +bafkreiavkh7luxjlqozuirrvl5tnfmlwimtqzf34znydzhojxw6eiqkgay Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p39.png +bafkreibtzdx3xhehwc45c472np54m37wlnoiatjvq6f74r223ubxp2h3a4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p41.png +bafkreibbe5yihhicqnllezne7k45wtmfdk6k4gxtkl2tc5xyqg47cywg4m Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p42.png +bafkreiaorpzgu576pu34hoaawdkasyeuod7d6kha5nsxsmxznzlqb6nndq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p004.jpg +bafkreic5zjhbtbpiuwzgo7pg4xbeu53ih4orxwxrgkvaufclu6qi3kbsve Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p005.jpg +bafkreicjilmeofxufydcshjy66cs23jtbtdqy7dbqnqfm7gwxx2vxskb5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p006.jpg +bafkreic5zq74de6pkg3iel4djy4f4hu7gbmgdoe45ff3fibrw24hgdyh44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p007.jpg +bafkreibgxyh2pocwad45ludqngphkdii63pidocjbkacrrlr7ch7bqrzpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p009.jpg +bafkreibbtainn62dqmo2k3elgvwu3cgtonhvxauwpunfacqjohceutecsu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p013.jpg +bafkreicjdlem5tbctfbcpbtd3rrsmietnigo4v44n2zm77c2rf4mxiur3a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p015.jpg +bafkreiajmsrloxodkxc7bhdxijctn3crbw7qhtxrvrauahl5kllnxsucim Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p017.jpg +bafkreiaimzwncs6txl7vsgw46xfqmfidwu2dnvpg4it6zlifvi3l5b5m5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p020.jpg +bafkreic5qnro2zxngsn4cgya5k4wpq6k5hzumekbxyzredo2jspavirf5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p023.jpg +bafkreiazgdkdhjht64qdomzck52ebtsolwcddka3jjmirrs4xbp3j6x2uq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p024.jpg +bafkreibteje2b73ued3mmbp5oe6egw3tbpj3rvm3q5gctjqgrbclpjhzbq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p028.jpg +bafkreicl24aooy4evxu4mds3vlxx5edms5we3tht7hhncn4kdohdjuip4a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p037.jpg +bafkreibh2r6pk6u35j2ioubsxbbztoeo6ltfmuud2hhwyfaqlte57fgihe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p051.jpg +bafkreiac2qnwsfezhcn4ayicxctrxge6anaebhugogrradmozxsonrsvzu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p052.jpg +bafkreicccjmbfty37d43qzxsxgexzfbhuo2yw3voxai4bxq7gsmmeeuedy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p054.jpg +bafkreibtatnvwxssqjrb4fedb5z6w2q6chysyzk4qx5rlfz7ooiywvfgny Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p056.jpg +bafkreib2fvkt5jar2lh3aqrwgzs2xqbj7npelv3ywhm7tsseh2kg3v7hwe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p057.jpg +bafkreib3v5vzazy476pyif47elmu3pw7js5uvfjyv6e4jdlfk2vwm3znpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p060.jpg +bafkreibmketaxvhnxeurylbxgxicaksjbbyv4dr7xltbzapawqfsc3eaje Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p061.jpg +bafkreibfnh7e2qtcupfpdealjm4wblq36oc5im4c2o5srn6kfnt7s3yo2i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p063.jpg +bafkreiaaxc36ewgwitoymz6t5iilsnyk6dz4hgenuv6wuwpe645jutot4q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p064.jpg +bafkreiajgq4r6np3k2wf43juxxhoo3npbwpqd6ol6crr7geylrboniskay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p065.jpg +bafkreib7tqavgxol2wbyub3mhqlqhfanl7s7fnmf7isbtqwv73rlzg7tfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p068.jpg +bafkreibemfy62f63o5u2hr5e63s2en57slx2gensjghlyumv7zavunz5ui Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p071.jpg +bafkreic7veiqlnct72ruyc4of6mntovlbdcwjqufaw7fusm6mhhs5igoqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p077.jpg +bafkreibe7zf6r24xjedgerxxbimk3je4fnb72prrzamlkt4cxpabvw7qym Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p082.jpg +bafkreiacm6fulhjdufm5wuhaz7dz4rmh4ncmy4bcaxzop3wgend663drn4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p083.jpg +bafkreicepchlzusia6ui7ixdqiykkn2xqbftd6dpza6gipsfr3puvxec7e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p084.jpg +bafkreic3rin5llc4lsmgef6kszbfhvytsk7gf3beripjoj6v6e4rxmtznq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p087.jpg +bafkreiaks2c3a2exx7bacn6vk5fcpkrqrcc555oroj4wb6kzdlvt5c3xoa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p090.jpg +bafkreicdpmorht4jfaap5zfi7lanyvlnahp6dn2vl6gg7aqo3xldtvwvre Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p093.jpg +bafkreiaf3d6uh7bdea5riqrzpkpyuqk356ajy5wcxklvubpg6se3ht3z2a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p094.jpg +bafkreiajo3kfdvxmhhlzzlhm6mfzzppgocgalg27m7ckvxfwlmi7ccxcay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p097.jpg +bafkreia7jwipm4s52enyqgc6fqloqc6udxrd77icar2vjgsdf356jdylta Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p099.jpg +bafkreibqgkwfflifgjasbaco5rcqtcyoq2xlqekbo2qhlhxoszvjfagusu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p100.jpg +bafkreiblrbks7corro6xjkx3lmmzs5bjtytbz36eebjk2wladsflwp37v4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p101.jpg +bafkreibvvzcfb3pmuqvw2a35qhhrnrjdnuhsseceg2zj6k4evf4tefzbma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p102.jpg +bafkreibve3dmmeyanarnwbnx4rajwzrnohls6oovfs67raxipfxi32zfqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p104.jpg +bafkreic7dxxbmkfl4xc76xavimjampfw7ecaqafei74inzxcg6uy3q6nqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p106.jpg +bafkreiaenzhweos7cuhehcw2n2eb5rdkjoelpsu35hfjaljuelk6ed5py4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p107.jpg +bafkreibtbvbojri6va36qi5rpjtpjanuc5fkaah6ijxmjovlwji5j35gv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p109.jpg +bafkreiblru7f3x35ngmuxm7s4osm4obgmg36egmxnzeug3t3a2kixu4v7a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p110.jpg +bafkreicftlccxcxesxsdwj3hh23scxbdwfkka2iddx4shjpdxeawqz73gm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p111.jpg +bafkreicfi3j6bwctbypekiznas2ff4kzdmnfqiihxl7acuv67nhkyjhuka Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p117.jpg +bafkreiblyxf4zc4tcdkbeyoh3bo7mw3xici7a44jickh24yhwphqq57cl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p118.jpg +bafkreibpadkezm6nygus7vaox35xhmfr4mbefrp6fkkjdb24af7h5betwu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p124.jpg +bafkreicmsci2vmkx3vq4jdkehcsffo3kyff56rou36kjmonauxmoqnxlxq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p125.jpg +bafkreiat6i35mejotccxzj4lgxnu6ikizkpnaaccq2hjflmeux674fmbma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p127.jpg +bafkreicjsgtk4qhirmkblfy7atjurh3ptlg5wwfttt47wbt6elfkyqniz4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p131.jpg +bafkreiaaxp65mjjmabedx2lkdpaqwls3f7m2twwep6bluklekvomhb6wgi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p135.jpg +bafkreialee3e62okzzm7m7ofwhny6bvtgoegh7kmpfl43mu7j6yzt4yvay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p138.jpg +bafkreibm7tey5lt3kfb3c4oii7jzfwkxha2mu4kavtarcvneafxlzcc77y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p139.jpg +bafkreia5pzs2sbyzcqmv7hgira56hpkazmdfabtff6vt6k4wmzhj43asjm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p140.jpg +bafkreicq7yyl4dc6pue4jiiq7guzgpcol2ktz72haa64shpt75p3sachki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p142.jpg +bafkreib3bjpx2xw2fmdqlnjopiv6lcrdkqgen6re7zjdaiwwzlllagrjiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p143.jpg +bafkreibttgxfy3l6k3e75qjtoamtx5f3uwaeqx2csdx6oekwr2bh7fppea Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p145.jpg +bafkreibvrbam32thgpzu4oybnvvbiropa4giwqvpr7dt6jduycrln3w5fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p148.jpg +bafkreicgo6uuqvamastv2uwradagudf42yvq54tbe2n5xqrpb4cryidtnu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p149.jpg +bafkreic7oufmbsdprhy2qvkjmlvqvyrqdyxmohppbxjhznrssr5dogwnkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p150.jpg +bafkreiba5d2icqcsgapjznjp4ysspvw3xgsfiguesdh44c5ahmy2egsbl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p154.jpg +bafkreibqpl4fliy4khbimysr6jw4hzafykazuwner5v6ue4hglot7eu5je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p155.jpg +bafkreiacz5odzgqhql6aidkylwoivx7yg6grx6vmcsifsgi5mqnllmlepe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p158.jpg +bafkreibyecothj2mfftqovxkprgjq732chnq2437neyjjgfjujo6qfyizu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p159.jpg +bafkreibuqi2oa4pyodz6ogtc6mnxp3xi6pudzr6eapu7g2itmiemjk5mfq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p160.jpg +bafkreiah6l73blswn4i6ksmjhjunz6cn3bhntvcgcwrqxn2qitkct2thwa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p163.jpg +bafkreiadw3ym4nvmgszvdu3g6quiid3qfdpra44vpxfqli5kmu4jyoip5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p164.jpg +bafkreiazk4o7r7mxsvqz4zm6ykzkuerr3b5rgsyhfjoalg3bqkitmpi2di Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p166.jpg +bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p169.jpg +bafkreicd3f62eym6iax6avtrutsbkpwwpsi67mu5g5qyrhhzlscd3mbnnq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p178.jpg +bafkreicda5gbucmr7jwp66hxl3rqldyltkspujcssxfqyzwhvcpqv5toi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p182.jpg +bafkreibi77qjk7zkdscudpxyzowecsmmgswxxm2xa7rlhtz7d4pxhtgxae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p183.jpg +bafkreicapwzim4mfjsgcdm2h6j4b3l5idpo6jw3f4lxtqi77frwryl4ugy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p186.jpg +bafkreibzckxuoilm7msm5aszimi7bhzxkrk2w2dywrw3m6slcrkh2q7zra Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p191.jpg +bafkreibmaqe6kp75az4xhmeityxxvjjdgfshfayhhc5k4m6gmgity6j4pq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p195.jpg +bafkreiaueoad3a7bonxllif6gro63sgc62y5g3ova635qbas6qwd5pb4za Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p197.jpg +bafkreiauxrue6yrevjvxvybwyo564uwrf2d6owbv5pempv2yoyip4qv3me Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p198.jpg +bafkreicbau53kuqrpvz4es6cm43ucv5zz4e4jetjnlrxh6mct7lfok7wqy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p199.jpg +bafkreiclp7oai7xrwp7pchvorrqe2kob6g7gube77ba7nj52qzeo27qmae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p200.jpg +bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p202.jpg +bafkreiclb4tfs656bkgvnjlan2fnrnkafuwawjqj6wi56i6glw74mhb4fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p205.jpg +bafkreia724pkmsfqmbhkddixbjbxhld526xubtbogjtmr64gcnukqbszvq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p206.jpg +bafkreicdu3boestqksh25t6lmtdw4yirdkwr5tccxgxkk5wlupztj32zzm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p210.jpg +bafkreibdiwd75o344lpnrxw3bko425egkbl6di7b7bbzlvntuqzzxtd62e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p213.jpg +bafkreic7xxqrzmojpudptamytkup4dm3hhqut4kjq2hd7ssn3bbgb6i6ya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p214.jpg +bafkreibedo2o73o7rakzradzya62uloqq5tu5wfrfdibqgp6cq2xqgfgne Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p216.jpg +bafkreiadt4ubvytwsybxjn5mc3dmbu2sdzpgnsxbgzubl37nlocvtqrq44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p218.jpg +bafkreic66ce23sqhgjvomov4aotvjwcyxy7uzhpz2iidrr4heit7rl265a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p222.jpg +bafkreicd7wcsml2kinzppz4oexwfwqhcwwqsxsaipiw6dhpszjcdtz7eiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p229.jpg +bafkreib6fmo2ipazx6vdxk6fc4eslo4o43ygcbhgula27c6xg4tixuvejq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p238.jpg +bafkreic5u6yysa2ewa5psvi3rr4ncycvnbi5tnmidbr6u5v6pnou5pzb3e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p240.jpg +bafkreiaujcpaottzy2rbwnpzo3k6cgqw6b3drpohblomcp73rfiyuywsl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p241.jpg +bafkreicoilcugxt4amhxe7atvf4kamlp2obp3zifqwzehbr6vpqenvlcti Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p244.jpg +bafkreicbnzxdiujtu2wntatne6wlpu63zbto24xcd7bklhvxnyuk2izhs4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p249.jpg +bafkreibvbhvvc7hsutg7zzdwnt56rz5kgvds7wlwx7vbli7ibxjrmgyfki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p252.jpg +bafkreiayoswtitw4l2vra74vrwy65riqq7pnhkgqzbtljwyq6aqtgqatja Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p260.jpg +bafkreicon7s3icz43kegyrgoxmobxw55kwa7uqu5hzmjklviix32epj4qy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p262.jpg +bafkreiaksej5vgapaibxp2be3dmuohctzprgfqc55wpjfobd4jvyzm3tta Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p263.jpg +bafkreibj5u7w63ebggqnzgbw3vbj7xfyyl5xafinmhkwcp6j2upmauqcuq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p264.jpg +bafkreicd3n5d4bg2uej3bpy4kjpqrq5dr3fi6gdcw3tbc5opsyy6iexcxi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p266.jpg +bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p271.jpg +bafkreia3pjdp7img6livz4vyctkw4b2rbnulon23hnch3jtg3aa4plianm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p272.jpg +bafkreibk2qyatqhwgs4xueaxtwndxwinkm3mzo4ax4hqwun4czrcq5rwi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p274.jpg +bafkreibhsnbowo4dlul7zx56pfovymve2udcuxesjixac4mvd3bo3epxhi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p276.jpg +bafkreib3lgmb7hj5jldqzfhhl2evqozu7tziym63y3w4rwkfzsrxjbptya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p277.jpg +bafkreia2dw47rumodvvjrhowspskonhfbe5jiff2hcjv2a3j366xdsj5bu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p280.jpg +bafkreich4266o526dji25mmvkmvy3meudgurh7yra2zkv6e2uzolg7pe2y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p283.jpg +bafkreiac4rff3gx427atdr3fgp7wbi7ebdlrviqtkm4yh6jl45jxcplrae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p290.jpg +bafkreice2gzuvpehhqem3kwxser4l7p3plukcm2ojdbveaj2zkp76rsvqm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p294.jpg +bafkreiaxkhhq7fdm5sp7p3e4ntyllgn75wu27mizndmk4u2x75oz3ua6je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p298.jpg +bafkreibts352wtwgllsqbr3abhfstejqoeahdrqq3gasisiyw26poiipei Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p302.jpg +bafkreib54356tstd5cx5atvpmoewpcy6qes3q3dagc5sqyfdgmsi2vqt2a Modules/Registration/Montage/test/Input/S200-6-C/TileConfiguration.txt +bafkreiblrbks7corro6xjkx3lmmzs5bjtytbz36eebjk2wladsflwp37v4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p101.jpg +bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p169.jpg +bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p202.jpg +bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p271.jpg +bafkreiag7lmo6ysxdnbhfwdphc4hv4ihur6rz6ejdk3vhouisfp3xluij4 Modules/Registration/Montage/test/Input/S200-small/TileConfiguration.registered.txt +bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/SingleLayer3D/DzZ_T1_inf.nrrd +bafkreibm6l5ajqhve6vzqyq7ekq4zmuetmkkchpacxbyd2jip6btazfvji Modules/Registration/Montage/test/Input/Synthetic/Cuboid1.mha +bafkreibojmzncczdyv6lfbiyqux6skiicpdonirdlrbjumoudsfbc4bbqi Modules/Registration/Montage/test/Input/Synthetic/FocusSample.png +bafkreiav66h6tgrqa7iupmow34eaaa2hngcpisepa3aa6staqfr7u2prji Modules/Registration/Montage/test/Input/Synthetic/MNML3_03bottom.png +bafkreiaam33ofytsf3wmp4gakpnmwgtgtrxiyn4no7gxz7ueg4s2bbvh6e Modules/Registration/Montage/test/Input/Synthetic/Rect2.png +bafkreiagtlczegb2znsj5ohtooykgzqrdcquc3fqwncsxmvietu6eyea7e Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.1.nii +bafkreibuvr4ual4tvllt356minn6dikbeagwsggukxlp44zs7x7pjjat34 Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.2.nii +bafkreic3fpf34kla3gduhp3cvam5jdhjjk4uyr3gyap6jekuoi5qxurhim Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.3.nii +bafkreiafvfkt24cokys3irj4fzcobsa6ke54hooczbcuccmccz62loaoq4 Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.nii +bafkreiblhixcduhuia4lfjykffuwvahnauwb54y6rr3lne4ksfukcrwqki Modules/Registration/RegistrationMethodsv4/test/Baseline/r16slice_rigid.nii.gz +bafkreibqg6nybsvkxnnpgjxeuhscitfrj7e4t4kttamprrpvd6hm4o7bu4 Modules/Registration/RegistrationMethodsv4/test/Baseline/r64slice.nii.gz +bafkreibue3a2zelpvucixsnxg53ft6mk7eu75qz5tlbqqtutsilec52qzu Modules/Registration/RegistrationMethodsv4/test/Input/Blob1.mha +bafkreiben332bhuhz3rcyxxxe2sxgzvynnelykzmrg7gsxsksf5eabw5fe Modules/Registration/RegistrationMethodsv4/test/Input/Blob2.mha +bafkreiblhixcduhuia4lfjykffuwvahnauwb54y6rr3lne4ksfukcrwqki Modules/Registration/RegistrationMethodsv4/test/Input/r16slice_rigid.nii.gz +bafkreibqg6nybsvkxnnpgjxeuhscitfrj7e4t4kttamprrpvd6hm4o7bu4 Modules/Registration/RegistrationMethodsv4/test/Input/r64slice.nii.gz +bafkreicahmlo76af57reh5tgq3kbspzj2k37u7vyforjvvopquulbfnewi Modules/Segmentation/Classifiers/test/Baseline/itkBayesianClassifierImageFilterTestLabelMapNoPriors.png +bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetVentricleTest.png +bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetWhiteMatterTest.png +bafkreiasq35o3m5x3vzre7t42j3ca4djb2ik7ccpzeei6xvd7rklylndhi Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_malcolm_single.mha +bafkreic6e4lfa7yfa22revrekqucwe7malsoeftlvayvwjywensknouptq Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_shi_single.mha +bafkreibyrioiaqyeltyiy3pb54ijzaj26ueavscmw3gr2stce2vgq5weji Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.2.png +bafkreic5yv3ytahvx7zebnh2r7wh6qfmauvexdhaoqjxrb5kgpkv4hxg7i Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.png +bafkreiaizh7kmys2v3vxffr5lex6jbbyj4nygb7w3mk6clahmyzjhelgs4 Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest2.png +bafkreiagtbgz7lz4237i3j6nxcmvincoc4szh5mpagmeuxvgnhhnmblque Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest3.png +bafkreicjrizawfoe33ajvirkd5rox3d6u4hfx2rrpyla6ss7aaumg5v3au Modules/Segmentation/Watersheds/test/Baseline/itkIsolatedWatershedImageFilterTest.png +bafkreic2lv6e5wksf6vfwiffw7gzsp2ys6tcxd7p3nejr35cs77qjr7zm4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM0F0.png +bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM1F1.png +bafkreicglzw4rex2h2fjy75tvmibb3ipld7afptgxsx2m4zaopxu7olqji Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F0.png +bafkreib3srvr66khz6tuzc5xvcvoafg5odecglr6xvijosc5gohijqt5wa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F1.png +bafkreibmmy464u4sxui2fdixiztbqlbc5ztoh5mad4uvazk2ukg5aqc2cu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM0F1.png +bafkreiaemp2tfchx67u2fnm7ueagdhtyllsn3mq2qasdfzk34rrfz4himi Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM1F1.png +bafkreic3ycdimqokabffkn7tz3l3e7mxx6l2qkwnigxqoufwq2oeax66mu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM0F0.png +bafkreicpseocu5swseywbojuzfckwlseltbdzqc65zaftkbgh65oytisea Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM1F0.png +bafkreiahe2zjg7s5nmfzzwouvkhute4wn7poiownhvkw4qca6ofxythmfm Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM0F0.png +bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Modules/Segmentation/Watersheds/test/Input/VisibleWomanEyeSlice.png +bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/BridgeOpenCV/test/Input/frame0.mha +bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeOpenCV/test/Input/inde-circulation_short.avi +bafkreibu4jnuqgubtjo5sysw7nberapze3ywjuxkdqysbtnui3ac72o6ae Modules/Video/BridgeOpenCV/test/Input/peppers_513x512.jpg +bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeVXL/test/Input/inde-circulation_short.avi +bafkreib4utjmhhmwvmtmz64vmy5pbmmn3phbj22yje32knkrq5x7435bju Modules/Video/Core/test/Baseline/HeadMRVolume_Frame0.mha +bafkreibpxxg22wjeybjhwqo3jq2fbtgq37okajug6mgcisbrmmr2flzwdi Modules/Video/Core/test/Baseline/RGBTestImage_Slice0.png +bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/Filtering/test/Input/frame4.jpg +bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/IO/test/Input/frame0.mha +bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/IO/test/Input/frame4.jpg +bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/IO/test/Input/inde-circulation_short.avi +bafkreiasjnds4cteut4obmcg3lmdwnxiznxduku3xiycikifwo32n65wqy Testing/Data/Baseline/Algorithms/BinaryThinningImageFilterTest.png +bafkreicqovvvqiq43b3kkrhoyz6v4sbrispqhivbcnlo3hnupz4gs5lshi Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.1.png +bafkreib7ii6emilldxu5xjhf33dxt72zfoscicnybkeezuae6ncpehysve Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.2.png +bafkreialoeavh6bwgemrpuaf4zq53hz5drlkv4lfvcmbqg6v33odhsmxue Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.2.png +bafkreibca27ybu5z2c3v3e5zvc4enfud7p3ufqizr5z5ulhgrafuk3hzyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.4.png +bafkreickfry6kf3zd2t5cozaeid6thhovvt2lwx7bhhapptejty3mrybyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.5.png +bafkreiamzbuibkxicf625j7h3jppwagjw7ntu23hrftia3kutyg7ghfxoe Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.6.png +bafkreickxsok552drtbssiitjnz3rs4m62brhbiccryledqi5sgyzrxb7e Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest2.png +bafkreiaanceijqbdjutqztgaxjmvqf7naohnu75tq2nckevtybuyikm7bu Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest1.png +bafkreiagcm2vrnxatl24qlijnirmsowkq2u2yftc6r4r42orulju3iizqm Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest2.png +bafkreibjz6wbh5d53weoweusyewrxabmxaijtrfnsh72rye5pyptyp2hpy Testing/Data/Baseline/BasicFilters/BilateralImageFilterTest2.png +bafkreicqlhg6xztvfqmgynbf3xb6qhbghwfzvkugt6nwxn2kloiwnfalp4 Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.1.png +bafkreiav5grdw7gqzsi26zgb4vuyicm476hrxit4i2fi67vq6gfioehgkq Testing/Data/Baseline/BasicFilters/ConnectedThresholdImageFilterTest.png +bafkreias2tq2qrj2evw4aohcf5boogi6m27mxigqahnz6f7p5fsxznqxde Testing/Data/Baseline/BasicFilters/GrayscaleConnectedOpeningImageFilterTest.png +bafkreiblud6dlgkrm7cqaqidfximgecask6ccvlidfclp2omlnd43r4viq Testing/Data/Baseline/BasicFilters/HeadMRVolumeBinaryProjection100.tif +bafkreibenixkqpjpjwypcrqurj2ijpiaxq5wmqytmzanly2s6u6qzvdv4e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMinimumProjection.tif +bafkreibem3y4u5ghauie2vdv7ukgeldpa4nh3jy3h56ge7jr6j63mjxzsq Testing/Data/Baseline/BasicFilters/HeadMRVolumeStandardDeviationProjection.tif +bafkreiafa6byahozgex6f775n3jwy7o6uunaczsymimkqcnptuo4rzwfey Testing/Data/Baseline/BasicFilters/HeadMRVolumeSumProjection.tif +bafkreibvprb22lqcixyj25yagmiys5k7ebjv4hbwv4fk6wj2jjxiqdqd6q Testing/Data/Baseline/BasicFilters/IsolatedConnectedImageFilterTest2.png +bafkreicqtexpewprsxilynurejzm5hwuwtbqv2awypf4a777ovavehhrqi Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.png +bafkreiaff5ercu3mmke7cfgeawkgxf65xh5ptvo5tlsxvrjxhymghobbdy Testing/Data/Baseline/BasicFilters/MatrixIndexSelectionImageFilterTest.png +bafkreicqoe55dwpxhw3hoghrmvh3tf5jf6vcfifblbstn2um6zgcfblaqq Testing/Data/Baseline/BasicFilters/ModulusImageFilterTest.png +bafkreibkfrzq2huzrzah75sv6tnhd26blgd5xuwo44h3pfhnws4ij7s4nu Testing/Data/Baseline/BasicFilters/PasteImageFilterTest.png +bafkreiavzx2y27jhdw3g27aufwakrunaqat65atoqq2zo6uhyi56zaxvjy Testing/Data/Baseline/BasicFilters/PromoteDimensionImageTest.mhd +bafkreiaxkvkxjjyssdgw7wko5inbtw55ademkwn7ezupgieqheayxgj3yi Testing/Data/Baseline/BasicFilters/RelabelComponentImageFilterTest.png +bafkreib53z5v7zm2z6ur6mujzdvis36ahlg6pmkux3vgxj6i4zpxnpkvc4 Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest1a.png +bafkreibm7iet43zebqvt3xr6f7fyp4wak35fkkck2un3qo6ht6cidmsy2q Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2.png +bafkreiafyamdkwvuzkhnyigakqycb3kbt3zzcdjf4pwrdz6ftbzhgusshm Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2b.png +bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-0-0.png +bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-150-0.png +bafkreicdlj7y2qtbj27ss45frlrjutpvm3kuk4vkpu4iaxprsobrlipopq Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-0-1.png +bafkreia6ldmkxbaguz6c2nevxrkrmxsrejlkr6n3qbe4js7igpfv7kpkzm Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-150-0.png +bafkreib2hqjf3whgtnzymcs47u2iryydoxn2qw7e3a6oq7ub7kw4ncj72q Testing/Data/Baseline/BasicFilters/itkDanielssonDistanceMapImageFilterTest1.mhd +bafkreibuuwpx7tw353uzx26vdhjikcj3cdndjqdsyewx5ingcfd2uv7io4 Testing/Data/Baseline/BasicFilters/itkGrayscaleFunctionDilateImageFilterTest.mha +bafkreibkjtebepqruamhlpojsvuc4l2f3kd4yeyswn5smlpl5tgo562nji Testing/Data/Baseline/BasicFilters/itkNoiseImageFilterTest.png +bafkreic6dupaomevdxo7swumevvhklb43jqhq37z3633s73ds4goqebj4m Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest2.mha +bafkreiaobtqjj6rer6s4lwpw47kmtebayvxwpncmum4vshypoa2jvgyguy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest1.zraw +bafkreibon4cl7sveflmwtu5kp6dz7hbpmylng7ycbazdrwpocz2mvd5ndy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest2.mhd +bafkreibr3wd3ecyrwuh46kdns642p5tlvx4sbimqcsorr6wfdxhla7uvgu Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3.mhd +bafkreicitrffy367aorb7clkd7ablqcckg2zjd2cxs3mq677savsmz72pq Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3D.zraw +bafkreicnhr2blw755lma44lc65s5miz534w55xucwvf2bqkoje75jucy6i Testing/Data/Baseline/BasicFilters/itkWhiteTopHatImageFilterTest.png +bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Testing/Data/Baseline/Filtering/AntiAliasBinaryImageFilter.png +bafkreiamztjyzhe3wr6l5eysfyxbvaxoie435vvwx5u4n5arbjwtp2awbu Testing/Data/Baseline/Filtering/BilateralImageFilter.1.png +bafkreicj3iy5sla7zzrpemhpcw6vyhwblqvitaxen672z7f6f5zswk2bqe Testing/Data/Baseline/Filtering/BilateralImageFilter.png +bafkreicisnbyke2ysffxcguzkh4ally5v4oxgpen4sky4ehgvafsxuc64q Testing/Data/Baseline/Filtering/BinaryMedianImageFilter2.png +bafkreic3o42hy47r6y5eypp7k5zqub5mbv2gx6yvuetv3b46c3kjvw55ne Testing/Data/Baseline/Filtering/BinomialBlurImageFilter.png +bafkreibcap43sf4kmzuh5bqju6qmt2mpravxbkku6uymnivvncrsgghkje Testing/Data/Baseline/Filtering/CannyEdgeDetectionImageFilter2.png bafkreia52ajz3mxwv5rusp33a6mcl7mphp772zkzqthc2xwlb7rmn6fsyy Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.2.png +bafkreibwib7uhj6g5zwyhklj6n6zquv3ftlnnstin5yvl2mpzfk46wolum Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.png +bafkreibsakv6hodojyabmrnnryrvjxgxgforrguu6anz5ztbtqrt3mikwu Testing/Data/Baseline/Filtering/CurvatureFlowImageFilter.png +bafkreic3tkig2dfgj7ypfh5qonpjhao7er52xd6sktnibuiiwds7wtfgbi Testing/Data/Baseline/Filtering/DerivativeImageFilter.mha +bafkreiaiokejgqfcfnrl5twyuzmbwovhttfkzk3qydtrn4xg6yyuid6b3m Testing/Data/Baseline/Filtering/DigitallyReconstructedRadiograph1.png +bafkreicc7sqbhomqn4fo33ev5gkl47su6xtjf4tmob45qprajlj6vs5xra Testing/Data/Baseline/Filtering/DiscreteGaussianImageFilter.png +bafkreiaw336qzpykfhmdnh2zyxgqalyyzbwuk5vysh5p27xztxtdm3rdim Testing/Data/Baseline/Filtering/FlipImageFilterX.png +bafkreibk32xtp3iigyw7bwlev326iungd356ev7o4plokj4yctpqol65fe Testing/Data/Baseline/Filtering/GaussianBlurImageFunction.mha +bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Testing/Data/Baseline/Filtering/GradientAnisotropicDiffusionImageFilter.png +bafkreiam5fq47yjwne7u6i6ms2orwencj633ukgxx7n7c2pmy6ndloc554 Testing/Data/Baseline/Filtering/GradientMagnitudeImageFilter.png +bafkreibfmi462oio3b4yezwkfuwq7shzufuilblquyk6jc7jone45ajove Testing/Data/Baseline/Filtering/LaplacianImageFilter.2.png +bafkreicbpea5dutn6sqbufhzlokk2nmg53hajjvajpegm6s5w52glcq46a Testing/Data/Baseline/Filtering/LaplacianRecursiveGaussianImageFilter1.mha +bafkreicmssaml52ch56cx5w5bl67q7m5yvmwq2m3wrn5cxbl67jdjqvjlq Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.2.png +bafkreiaixia732edo5ndmkfrudl6lmnctlvwilzj5igm6pphbdjzxpxjae Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.png +bafkreicmoenbnq6qwc5gryr4a35pxhqznd26vqazq5azicqzhyomh6nonm Testing/Data/Baseline/Filtering/RACorpusCallosum.mhd +bafkreiat3ii7mmzurs5fdq2tahb6nqbkdpupoh4cjyznemv32ei7ond5ba Testing/Data/Baseline/Filtering/RGBToGrayscale.png +bafkreicqopucdi3lu6bss2ov73etfvvekfm2smquzmp5th3likwzy7rmxi Testing/Data/Baseline/Filtering/ResampleImageFilter2Test1.png +bafkreiasynrqd3zfhmbdjm4rfht4g3p74rvc5bo5imwbixmjqmminh6y44 Testing/Data/Baseline/Filtering/ResampleImageFilter6PixelCentered.png +bafkreibnsxj6kaflygoicabrfclqi3q4fc5px4ykfayw5refaawxlqonci Testing/Data/Baseline/Filtering/ResampleImageFilter8TestPixelCentered.png +bafkreibx5jakzrnnkua475ceigcciipkve4cdlkcxcv4x4u3u2jj4klwxm Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.5.png +bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest1.png +bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Testing/Data/Baseline/Filtering/ResampleImageFilterTest2.png +bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest4.png +bafkreiafhyn2npt622zajj2ssueb2f7u5ndrs4jcsugclybt7avde36xui Testing/Data/Baseline/Filtering/SigmoidImageFilter.png +bafkreick6lvynqwryxvgrvihxreenwgxzteirqnafbmis765rnuwrowzyy Testing/Data/Baseline/Filtering/SubsampleVolume.mha +bafkreibz4lev7yffgvhowec32bz5piliy3trirheaqlz7qfahv6ob6xkiq Testing/Data/Baseline/Filtering/ThresholdAboveImageFilter.png +bafkreib2jqzewfumkszfdlt3aey4dxd5nobossn7lpcms5ai4ge4avbfdm Testing/Data/Baseline/Filtering/VectorGradientAnisotropicDiffusionImageFilter.png +bafkreicd22hfyeqdu6yvuxzyqezsnuvpwakxnbzkydq6cnkulnhilk7lv4 Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter1.png +bafkreiasasgob2hyouwf4vxhgc7p3ar3eoyx3s3zt2sjkn3mahbqbatevu Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter3.png +bafkreicnnzrss4flzplfoapfxqzssydgiastpuo77kj35b6puwo42nr5lq Testing/Data/Baseline/Filtering/ZeroCrossingBasedEdgeDetectionImageFilter1.png +bafkreicjcvtr5ohidankms2xq6nol46t3oqgv245ppamldconn75g3v344 Testing/Data/Baseline/Filtering/itkBoxMeanImageFilter10.png +bafkreib6tdfaws5vdxruimwxlscg32mdlm5leispvhkrfhj3vv22b5yrie Testing/Data/Baseline/Filtering/itkBoxMeanImageFilter3.png +bafkreicr6otruuwal2s5eqbzsqq66fmuzbt5dzkygiseak6b6ns45cle7e Testing/Data/Baseline/Filtering/itkBoxSigmaImageFilter10.png +bafkreibde3rnayttitw3gbgozk4jrcah4hr6jz7m6oyabxk66xyhls5nzq Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.nhdr +bafkreib22wyomojq5ypxf5rmqc73qfxbxww3nucchljlp3ffelchytdjhi Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.raw.gz +bafkreibtjzbp7d3uexbx2aonzn7dghnq4a3gvpxtqzuo6vzjyhrhovirkm Testing/Data/Baseline/Filtering/itkGridImageSourceTest2.raw.gz +bafkreibws3efvms2qkn5vxhweyghj7wlq3numufeyamzbvp54dutk35tt4 Testing/Data/Baseline/Filtering/itkGridImageSourceTest3.nhdr +bafkreibnhnunolwrhfy24xhjqtroek2zwahreddhuds7igvs3rmlzlzv6u Testing/Data/Baseline/Filtering/itkGridImageSourceTest4.nhdr +bafkreibnehii2boqlgkgqvrsvdl2h44xpusmrog4sgvg2izzjobxt4w5xq Testing/Data/Baseline/Filtering/itkHessianToObjectnessMeasureImageFilterTest.mha +bafkreicj7kwskxqjnr5vu7wvv5doevf75ukfbdsm372mxfjt23gx6yki5m Testing/Data/Baseline/Filtering/itkHessianToObjectnessMeasureImageFilterTest2.mha +bafkreiavhsqmxzstsenewtjnm345hhs7jj72xhocg7oooc6qc3welrl22e Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest0.mha +bafkreibr4uwgufqxmuvd5k5iknfgvcoxlnnihs2r6gfmarujjbadgblcme Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest2.mha +bafkreibytlcsh66hlrpeiqh4iyhcwkv44su6apo4jrwcnd2265zqwpnwqm Testing/Data/Baseline/IO/I.001.mha +bafkreicpwzzviseloun3r4yan4s5272kehmxzl4gzxggeeri3n6ye4wbqa Testing/Data/Baseline/IO/NrrdImageReadWriteTest1.nrrd +bafkreiaq3edmqewhisoa53dnyjun3p4chzgpywhjnb3igfs6pa4sjjj7ae Testing/Data/Baseline/IO/NrrdRGBAImageReadWriteTest.png +bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax3.mha +bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax4.mha +bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Testing/Data/Baseline/IO/RGBTestImageJPEG.tif +bafkreiah4ethblr4oobqkn7m4dqt4f4br3d4id2iqkudiml3epjhhmf5rq Testing/Data/Baseline/IO/cthead1-unitspacing.tif +bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Baseline/IO/image_color.bmp +bafkreibybxnagopkoydjp67r3w2i2hkl57fxxthwnf4ap33ngmg3vl2z7u Testing/Data/Baseline/IO/ramp.mhd +bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Baseline/IO/vol-ascii.nrrd +bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageLinearIteratorWithIndexTest.png +bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageRegionIteratorWithIndexTest.png +bafkreiagw27c3upgcb6xubt6yycqitchcot6cbfokk62afyybtcrbtnvjm Testing/Data/Baseline/Registration/DeformableRegistration2Test.png +bafkreia3zlrg4hcrj6en6lxj7xnpfxlbyarzqegk5kgn7dm2oyb7y5oroi Testing/Data/Baseline/Registration/DeformableRegistration3Test.4.png +bafkreia7rqwil6gcwokxw3y7ytsmgwc5mukx72pgaezxt7vssxnesahzme Testing/Data/Baseline/Registration/DeformableRegistration5Test.1.png +bafkreiaub3fzo2qgrtd2f3jecpmpk5foowpeo7oa24drqwegkfwr64hgya Testing/Data/Baseline/Registration/ITKv3ImageRegistration5Test2PixelCentered.png +bafkreiax4tqmaotwthxi625wvvny4mozpnlnczih4hfjvwntcrbwpmqyyy Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.2.png +bafkreiaveozihczoh73mjk3g23ohq5fdwasdql627avmb44i6vdve7mfmm Testing/Data/Baseline/Registration/ImageRegistration14Test.png +bafkreiai4dfush33eye42aost26m3ts3jpm7kzvrf542c2lbxm474rakwu Testing/Data/Baseline/Registration/ImageRegistration15TestPixelCentered.png +bafkreiba7tqeqyp446bspzygjw35hjtufjy2b324sun77ie3xzx5kanjsy Testing/Data/Baseline/Registration/ImageRegistration16TestPixelCentered.png +bafkreia6b2npxxh7bejgwenkysjrilt6piysvfk3p7ijttx3bh45iy6gma Testing/Data/Baseline/Registration/ImageRegistration17TestPixelCentered.png +bafkreiadx2ih7h2amqka7ay3qycnncx7syo4ppldl7plwteyancfnbzqk4 Testing/Data/Baseline/Registration/ImageRegistration2Test.png +bafkreibnfj37v5crhu42av6vasj7pz5daeemyhgj756xyzaseyjmy77s6i Testing/Data/Baseline/Registration/ImageRegistration6TestPixelCentered.png +bafkreibjjpb66r4lcxgxtk6u6qcegvfuz3yviwcisjgxq4h4i2kkwueb4a Testing/Data/Baseline/Registration/ImageRegistration8RegisteredSlice.png +bafkreibdqeblsv5nsaoitbwqo2g5ue4vgixfh2e4u4cdog3cvsby7fjzai Testing/Data/Baseline/Registration/ImageRegistration9TestPixelCentered.png +bafkreibnrzoyef3f2kxmey3tku5jpdmdbycxpjiqj52ad354ucljhgxjy4 Testing/Data/Baseline/Registration/JointEntropyHistogramAfterRegistration.png +bafkreiccoudx65pd3cra6wjbaoy2u4ran7mwavdk35l37ms62rdv3wypyi Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.3.png +bafkreic66wr4u7je44vmqxlh565cxwduvuaht6zohxgk7ttmab3nzwfek4 Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.2.png +bafkreib4mwlqupj3a43kdqkpa6a3iohroqlzmjrh4tfn46pml4bfj7n3fe Testing/Data/Baseline/Review/itkAreaClosingImageFilterTest0.png +bafkreibsuexxa3wkco7faediffwewe4f2wlsxh2645l3yhyaeoh2ox6asm Testing/Data/Baseline/Review/itkBinaryClosingByReconstructionImageFilterTest.png +bafkreici3tmqbrgock2z7l7bva5tyn7hhg6tdaytr36ybq53macp7nqqam Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest03.png +bafkreia4tevn26uqejybgd2fdtiqg3tfdw4q2fiy67zkvogpnr7tu7a5pu Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest12.png +bafkreibw5fa3uorze7g6whpbaed5pdn4tb3orn3r7a3ovz7rxqlkplkkbm Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest30.png +bafkreicl3dd4bmbxsu45xtarzletbjkh5kizsefotq277qnzks5ruj43ya Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest.csv +bafkreibba3t5ux5jpp6so3uz5ulftmua7hu7irfzddponz7rsslfeej22e Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest2Image.png +bafkreia5vkolpuqomo6mqic7abinoonkchyvyr2pi4f3qmdzs6w5temfnq Testing/Data/Baseline/Review/itkRobustAutomaticThresholdImageFilterTest.png +bafkreia3e2gljtecxctuwflzoaoxyxovbg7m35eqnjbb44r33wefxv47ye Testing/Data/Baseline/Segmentation/CannySegmentationLevelSetImageFilterTest.png +bafkreiclzw7e7pqcqrxim4omiojbxkxt3e6amawrwi4jg33rzkqqywf43m Testing/Data/Baseline/Segmentation/ConnectedThresholdGrayTest.png +bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/ConnectedThresholdWhiteTest.png +bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/CurvesLevelSetImageFilterTest.png +bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Testing/Data/Baseline/Segmentation/FastMarchingRightVentricleTest.png +bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Testing/Data/Baseline/Segmentation/FastMarchingWhiteMatterTest.png +bafkreic5hqdcvandl4meeevjxgn7up6nnefrgcijsp33eleksjchdkkrxq Testing/Data/Baseline/Segmentation/GeodesicActiveContourGrayMatterTest.png +bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.png +bafkreicetvgjze6imuowupp4ctkszqy26ziytrfpaxkgtqxdac2cjoxpki Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.1.png +bafkreibdujpchvv4oyo6bnf6y4arjpr5t3in2iswoimbte45sidc4mls3q Testing/Data/Baseline/Segmentation/GeodesicActiveContourShapePriorCallosumTest.png +bafkreibsbodzjqgiqjraobc4l2wamn4ufd6dgnbcfd7qs64oaxbwt6im2e Testing/Data/Baseline/Segmentation/HoughTransformTwoCirclesTest.png +bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/IsolatedConnectedTest.png +bafkreibgg75j26o4vamf7dwddjie4jjg7kllxdor7fudkfogoibqmffema Testing/Data/Baseline/Segmentation/NeighborhoodConnectedGrayTest.png +bafkreic5jk6tyftvpmarvmk632h6dnp4hlxmo4tbhc7a6yfjhpllendqay Testing/Data/Baseline/Segmentation/NeighborhoodConnectedVentricleTest.png +bafkreib3zv5ox7hrrw2tnzdjvbjtafkgbicy473potgvcoggwigkuigix4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetGrayMatterTest.png +bafkreic6x7r2lt3wn2utmmqhjo2ifh4uurk6rdszxtmhtbjp5m5u55efm4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetLeftVentricleTest.png +bafkreichhlbb3lazar5nsrqkj6buvkqucqcnyomsarskoynbmqmmd62hea Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetRightVentricleTest.1.png +bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricleTest.png +bafkreibbsgmdzzltnpdlwgoqcgdkotbm6kz2qwkqsw6sxgen5xuof352om Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.2.png +bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.png +bafkreic7zvpt3te3neyjish5bq7ovckvczzo3qe3rgdnty4g6ena32ivva Testing/Data/Baseline/Statistics/BayesianClassifierInitializerClass2Output.png +bafkreibpleftqacav3cxmv7ruaehver35veg2xc7qqiach4biml2qusuza Testing/Data/Input/012345.002.050 +bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Testing/Data/Input/2th_cthead1.png +bafkreiazem3elmai3lwipyvxcajfd2afrg5gjtswvh2udtwc5ztku6x344 Testing/Data/Input/Archetype/a5b1.PNG +bafkreialo6gyuvvb7jpt2m7cw2shvk4hmvi7wto7cthudztfa23kwt6m5y Testing/Data/Input/Archetype/a6b1.PNG +bafkreibd6yioa2vazw77nkr5pcmopnpu6nrsd7q74mo6opbjtliu6ytgsy Testing/Data/Input/Archetype/a7b2.PNG +bafkreiam56gz5lzrrsj5fdkf5tpgkjkmxflk4gg7lkddlx6rpjnvoasmxy Testing/Data/Input/Archetype/a7b4.PNG +bafkreicctcog4hcfivk3nj3xdzes3qks7vmxybv4ez262aonmdtwukxboa Testing/Data/Input/Archetype/a8b1.PNG +bafkreiaje6otkkjwwcqhsm3joaadthk5oeclsm6k2sbf4jipcgm2xzgydq Testing/Data/Input/Archetype/image.003 +bafkreia3rdnljnpjh3l3dp374vs4auapbhsr7gflwnlxazoz6oo2oza7na Testing/Data/Input/Archetype/image.006 +bafkreiceaml262ln6chfswtem3mxrlpngx4tqzll27m2irbl2rj56rezt4 Testing/Data/Input/Archetype/image.008 +bafkreia4xk74iupjj5d5lqzy7cq6zgax3f3s2zjrwun6wkvnzhtiisuf6m Testing/Data/Input/Archetype/image.010 +bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndian.img +bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndianCompressed.img +bafkreia3xcwr4rd3wu7u7dd7mn3iru7uzcavscpbrmklwussqvyab6uaia Testing/Data/Input/BinarySquare4D.mhd +bafkreiagampuouhpaftl77q2t7w6kg3ubyarphibws5fiudpqpy4hjqihi Testing/Data/Input/BinarySquare4D.zraw +bafkreichsot47hdalj3tosr72dmvfso7zwsgc5n4orrue6jbznu3e7yhtm Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.3.dcm +bafkreicpkbc2vba2lap3a6fn2p5j6ljbn4fgaivg3qdzpmiaqedpu45lgi Testing/Data/Input/Gourds.png +bafkreibgc3v7omkekea4k5fzsyotfvahpkuzmecm4ik6nmf37vlhzhjnvy Testing/Data/Input/HeadMRVolumeWithDirection.nhdr +bafkreiapsruqlhchlkgwzalja2drpdsixoitiphzu2nrptun4txws7hfci Testing/Data/Input/LPSLabels.nii.gz +bafkreiayifmz2arvb5gyvhhmwyoeggin75tx2retastdpy2buuxnz4ktpa Testing/Data/Input/LPSLabels_nosform.nii.gz +bafkreicdjbd4wnnbfzh44hdt3gp46brt7v3mbyqm6kspxb4btldmkweojy Testing/Data/Input/LinearTransform.h5 +bafkreiccntubvccyuviu4ftzizt5xuoceuwgu7vozcw5gd7cxe6bjsr6za Testing/Data/Input/LittleEndian.img +bafkreibsm7pxeylg3nun5jdeubzzhabhwtgmwzu3x54amkzlxo3mecavcm Testing/Data/Input/MetaIO/SmallRampVolume01.tif +bafkreibwgb5aqw76qqqz6xqwlwtvbv6tdz6m7wjehfbeekgq7iehwvtcrq Testing/Data/Input/MetaIO/SmallRampVolume02.tif +bafkreiacernybemiaok4zsz4kegmzh7eh7b53rwml2w2f5kicnwxsde44e Testing/Data/Input/MetaIO/SmallRampVolume04.tif +bafkreiasxjv6gstfagh72yldawtencaxdzm3uk43arb5xatnjqy7nvt2jq Testing/Data/Input/MetaIO/SmallRampVolume05.tif +bafkreiabv2oshlbykm2uhoojgcki435zvkrlwj54nwfcohjmaeqhxyjz3a Testing/Data/Input/MetaIO/SmallRampVolumeList.mhd +bafkreibf4ax3y4f5d4d7gu4sncsyy7qmdx4y2l32rdjvptbny62f4wr7bu Testing/Data/Input/MetaImageError.mhd +bafkreibct4vqe3frlihsfvh32a3x67idg42n3cbzyx72luw46tznn6rfie Testing/Data/Input/Number3inText.png +bafkreibnb3piktjl6rnmxokouwugvxj5ifutv6njivbxo7unfx654hwbay Testing/Data/Input/RGBTestImageCCITTFax4.tif +bafkreichkfizkrmy3ymsdmx6djruyznwsz2l7ut7pufhyapdk3qibxmd3m Testing/Data/Input/RGBTestImageLZW.tif +bafkreibhdstyfeaiag4slqklyzemsgcwh7ka6sxe4uc4ya7er554ptrsua Testing/Data/Input/STAPLE4.png +bafkreic2hm3cma4ucr3pdzqqshdplo6tu4mlovjraerl74agvxebgk5cfa Testing/Data/Input/ShortTestImage.tiff +bafkreialct4roz556epsous5logatfdgujhx3d3y64cegbqn2vhmzrilcu Testing/Data/Input/Statistics/TwoDimensionTwoGaussianTesting.dat +bafkreiakdptaidn43xwmsjxewkk3jahakcy6ttjps4p2uh6xc5pjwy22dq Testing/Data/Input/T1_MEASUREMENT_4_1.PAR +bafkreicjfacm2duvhctivq2ohsjtgjqqz24m654kdbd5jco2bmozl5rhoi Testing/Data/Input/T1_MEASUREMENT_4_1.REC +bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Testing/Data/Input/TreeBarkTexture.png +bafkreiagrsbz7ruqqapa4b5x4pqenrs3erqhqyk4vr5do5b4zzgou4ocvm Testing/Data/Input/VHFColor.mhd +bafkreiaqa6gvexvgen3yc3ug4caw5ob3qtyfbs7yith5vfjbbq4a7s2yoe Testing/Data/Input/VHFColor.raw +bafkreico44qbyjwtuji7dxcbychpq4km5sgepnmvqlruyrf62exkajp23u Testing/Data/Input/XML/test.pso.xml +bafkreibo5jx5hrwuqwtrwoplrxwixhc4hali7ajh7iyusegb6figbqgsri Testing/Data/Input/box.nhdr +bafkreiaein6l3pxmcpyv3w6pu5mx5tdnazqwouffcbkjh4azg4kphur6vq Testing/Data/Input/chondt.png +bafkreibegteuabwy7gpqhoxjr5akjlku5litxockmjuce3iwib7pqj6sae Testing/Data/Input/cthead1-markers.png +bafkreia6zkmi7zcu7wzfrmt2lpggn2gln43tcipkk4tj3f5quyrnpdvalu Testing/Data/Input/cthead1-mask.png +bafkreiaphgjig3eiyx2soc34anrjgtip7hpt6nakmf72xexah44ghnb63i Testing/Data/Input/cthead1-threshmask.png +bafkreiag3r5eotbcnaxxvznnfzgr44liqsmccv52swubvgfgmjd4nqsdjq Testing/Data/Input/cthead1.jpg +bafkreibnzmariwkrmk3l55xlsngj6kfrt7qryyid6v4jggww4eo66kd54q Testing/Data/Input/cthead1.tif +bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Testing/Data/Input/cthead1Label.png +bafkreibpbglgwfvyda3xqki2p64vzkiuaenhzvzqqpftscemf5mzs37iti Testing/Data/Input/grayscale_lowerleft.bmp +bafkreic3hoowztk7glic2o7bxemfefblzzekzjsff63q62w5qhffuscali Testing/Data/Input/grayscale_lowerleft_rle.bmp +bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Input/image_color.bmp +bafkreia54nwpkhz4fxjtuivhoibzci5vzulvh3yrtysi7z4njy77syo2qa Testing/Data/Input/metamesh.txt +bafkreickcfrkdhd5gorlbn3wzrnarbkdqeslgbd5n2tfevuabpieayu23a Testing/Data/Input/mini-complex-slow.nrrd +bafkreibmodaapwlmwl25k3vp5fvx6a3e4mtrmjexyi6brdjbgvnmtly7qa Testing/Data/Input/mri3D.mhd +bafkreiaosokxvuurl7k7wzvi3q6oyiqo2oxm2kq77loyivpeahxxzaild4 Testing/Data/Input/mushroom.vtk +bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Testing/Data/Input/parametersBSpline.txt +bafkreib2mnx73jbm2oprni2tqyt3nzvet2yj4miejszyr3w4if2fbwsvh4 Testing/Data/Input/pointsForKdTree.txt +bafkreiajxeelq44vxxgpxlzqftii2km3vkpfvpxuqvar6zuyvf6pszqjbm Testing/Data/Input/r64slice.nii.gz +bafkreibtmnmqob7py3i5yqrs7w2a3mjuax7guh7ouie74k2gdorv5agoee Testing/Data/Input/ramp.gipl +bafkreibl5gmdw32meh5mzqixf2vhlewk7elht2zcqcql5lgsj4oc5vcwkm Testing/Data/Input/sf4.png +bafkreiaozkfgry4ohv4gk4fuo2fytkc6epemzlr66mn2nazevlaaxc36tm Testing/Data/Input/simple-label-b.png +bafkreicbbhnqtl7rztos5dg2areyhxe3uwognu4fxa4yphuo2vk5sl76xq Testing/Data/Input/simple-label-c.png +bafkreic6h2kau6larhvohrqibtm7lgl377ne5sixn6kblu7yqeade2sq7e Testing/Data/Input/simple-label-d.png +bafkreibzlnk4hi5htbabds53iv7xrofvjl6mvy75ergwflcapaigl7nv4e Testing/Data/Input/sobel_x.nii.gz +bafkreicojrj773okbjnvhd3c5gopqn5til7wg23blbrsbefd2qopbemu4u Testing/Data/Input/sobel_y.nii.gz +bafkreibgfih7jiwjdq7shpxfsjzz76r7ipcowmaitjokd3viwc2vyaaihy Testing/Data/Input/sphereBinary.vtk +bafkreib5x4r4zcroilk36n2bsx3wo7y5grmoosudojifnn2dcf2viwieiu Testing/Data/Input/test_ge4/19771.002.002 +bafkreickggjzritwhvbdqj64w6s4olnsh5f4icp6ycqyvtidpzybqitndm Testing/Data/Input/test_ge4/19771.002.003 +bafkreia6nz4nrxgal47ns5epex7wxgaag4gughg5xorjem7oewdj7ck6nu Testing/Data/Input/test_ge4/19771.002.004 +bafkreic4zoyqnybqogydtkiwidosy3v6xwnofzjnofir7txgd553bel4zq Testing/Data/Input/test_ge4/19771.002.005 +bafkreicbywnrrjcl2wehhbqmff73bjcwwoucopxutj53g5virc5x2qal6m Testing/Data/Input/test_ge5/113766.003.002 +bafkreiafcd4siu7wrrm7c6k5ou5a7wm4p2j7iyczgngjh5h5a74rmk4eem Testing/Data/Input/test_ge5/113766.003.005 +bafkreickr2fah2h2eow544t5z3p6ilp26kts7ons6v4tgcebrtnrcosxdu Testing/Data/Input/test_geadw/I.001 +bafkreicehz2rvpsyxmt2qqnofyqvlvzhcr2klv67oj3fpbmrmm65hjdxg4 Testing/Data/Input/test_geadw/I.002 +bafkreibcl2o24ifudyyg7chregazecpaubgh3whbmzdkqd6uew65chvzzu Testing/Data/Input/test_geadw/I.003 +bafkreic2vrkdkxhofmxigr7lgwr4dmfazgpgeex4pqisi7dalpou6k3cku Testing/Data/Input/test_siemens/3868-2-101.ima +bafkreiabct5y5d3w6ktiwvrasown3g33zbeb3wgemuqn7ucocq2ajchvn4 Testing/Data/Input/test_siemens/3868-2-103.ima +bafkreiawz7ry7jt6jxhmdqd7p7a2fjpz6xrj3z2ngrcdllxmrsgyzjuw44 Testing/Data/Input/testrgb-2.nhdr +bafkreiaih4ngm2xyi6yi72mvqfanvzcu2my7umdjrfw455kpueuzmbho3a Testing/Data/Input/testrgba.nrrd +bafkreiclja3q74oxpulnhupowm5caitc2ejup4l22twvrz6ppixvhhuy2a Testing/Data/Input/tilt_series_big.mrc +bafkreiatzfmbxkx3pvrhmmjiu45fx6ycbkkwwws7h753omhcxa3qial3ze Testing/Data/Input/tilt_series_little.mrc +bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Input/vol-ascii.nrrd +bafkreiabp5bbsgyem2leiwwvclhtezvl2bqthpmclgl7mujdmwwoupduly Testing/Data/Input/vol-gzip-big.nrrd +bafkreibgrckx4xhyefx7w74aj7amfzosfe4v6y6rxinctucrhllsz6ns4y Testing/Data/Input/vol-gzip-big.raw.gz +bafkreiaj7adkflxcpouflo7z3trpxqmxuuaj2bxkgp7ixevpkadwzwq54y Testing/Data/Input/vol-gzip-little.nrrd +bafkreiani5dcsbrgcnvcq2vdoqpuaemyfvem5mn725jjnk5aar7qi75iha Testing/Data/Input/vol-raw-big.nrrd +bafkreic5vva2t5fdotrog2d4rufwe47oyt2gexjshc42ron5flw4jobrmq Testing/Data/Input/vol-raw-little.nrrd +bafkreiak7yqtd44rtoeaxpnvpm5sqxwlp4uucdrlwe3upgesbh6l7e4ss4 Testing/Data/Input/vtkPolyDataBad10.vtk +bafkreiaq7vjyl62cqdtrbvxbaz3inlzulawmscuur6smxq72xa4ogmvsiy Testing/Data/Input/vtkPolyDataBad12.vtk +bafkreiappp5o3istpjgnvbmu25nxlssnq3ia4hxs7du7mzny42bzagszqu Testing/Data/Input/vtkPolyDataBad14.vtk +bafkreicflfkb27ejhagxb6cgkos7tfgtafecbyw2fkam2ibtopcu22kqru Testing/Data/Input/vtkPolyDataBad17.vtk +bafkreibw6plrw2mto4fzkvnewwrqw2qo3wguxjgiuzy22v3j2i7h66zz6a Testing/Data/Input/vtkPolyDataBad2.vtk +bafkreibh4zslddv3exzhvu7vhwagv4drk65peowia2l4fietc3wjyup4zy Testing/Data/Input/vtkPolyDataBad3.vtk +bafkreibmk5ifogwqnuhj7644efuq4td66otyuxukvimpp6pokogd5l6tme Testing/Data/Input/vtkPolyDataBad5.vtk +bafkreicczftwtwomlw7a66aa47cns3cswmxgs4myisjnrrk4csqwyb7b74 Testing/Data/Input/vtkPolyDataBad7.vtk +bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Wrapping/images/2th_cthead1.png +bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Wrapping/images/VisibleWomanEyeSlice.png bafybeidgydpaoeu6qv4jupn3apal7ri47zr2q2qar435d3l4mdri66opby Wrapping/images/warp3D.nii.gz diff --git a/Utilities/Maintenance/ExternalDataUpload/upload.py b/Utilities/Maintenance/ExternalDataUpload/upload.py index cee7c5ed3ed..23c4d13a21c 100755 --- a/Utilities/Maintenance/ExternalDataUpload/upload.py +++ b/Utilities/Maintenance/ExternalDataUpload/upload.py @@ -175,6 +175,13 @@ def upload_file_to_filebase( def update_manifest(cid: str, rel_path: str) -> None: """Insert/replace ``cid `` in Testing/Data/content-links.manifest.""" + if any(c.isspace() for c in rel_path): + print( + f"WARNING: skipping {rel_path!r}: path contains whitespace, " + f"which is not allowed by the manifest format", + file=sys.stderr, + ) + return MANIFEST.parent.mkdir(parents=True, exist_ok=True) header_lines: list[str] = [] From 70f1786d301afb25da714e6906bdfa01e35f42b7 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 17:53:36 -0400 Subject: [PATCH 15/23] BUG: add missing manifest entries for Colormap, Convolution, LabelMap tests Sync additional content-link entries discovered by sync.py for Colormap, Convolution, and LabelMap filter test data. --- Testing/Data/content-links.manifest | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index 6326ead4880..d3baa91677c 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -19,6 +19,7 @@ bafkreicoqa4kn2aaxzivbbeffvbvw45frrekuefwu6dixafzssewhhdcne Modules/Bridge/VtkGl bafkreickjukon2bbehhjsjfmnjql33zuurki4cz3djw6cuatyxgwijoioq Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.9.png bafkreicaxbvt4ok3vcft2i664w4iovrdljwpocbl5qctlxqo2p7usks2be Modules/Core/Common/test/Baseline/itkPointSetToImageFilterTest1.png bafkreia46j4a53hnz6iup2x6x5fjrudaseyrte3y4fce5s3yytk53fd6aa Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionHorizTest.tiff +bafkreictm6jjboquhyrk736ly2klohvpypryfgn3paklbnejvadtohgckq Modules/Core/Common/test/Baseline/itkSobelOperatorImageFilterHorizTest.tiff bafkreiaqgx7eaphidpcagcuqm7t2zfd6vjcdnpg7c7rr24xefvgukhcha4 Modules/Core/Mesh/test/Baseline/itkTriangleMeshToBinaryImageFilterTest2.mha bafkreic3w33ftya4ayrcg5jwvsgjiymswmnehrnlfjlk5rcimfluii7iuu Modules/Core/TestKernel/test/Baseline/itkRandomImageSourceValuesTest.mha bafkreicm7roru3x3zjg3t3u3dykpjf5jm7ud2t3f6btwjme77i5qerxtu4 Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements1.txt @@ -61,6 +62,7 @@ bafkreib33bbmqabpybt3g5cnnrh7dvzptnzigkpivmykn2hhodx6jnhcgm Modules/Filtering/Co bafkreiamtmf2eq724atw5wtygobzxrnb2q6bbyka7mjgn5i4jcuqfwear4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_red.png bafkreiannnuwbfoesz6omnu2zxbhvvjjqdihul2p5djn7nxrq5er4xyaue Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_spring.png bafkreiaqef55kclq6twcdakxwotltuwby2r2w4bfpqbliw4jc7lq62x2ka Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_winter.png +bafkreicrgk7yhx25za6lod5qguk735q6th4kcx2yezcvnqs7b5jldhwejq Modules/Filtering/Colormap/test/Input/bone.txt bafkreiaob7e4r4qlenwpdsgxibbto7gwddlzdngmy6hfvtxkwbwj3akzba Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5Mean.png bafkreibfvub2xm2cosfzpy7hstbefskq2ep2jhzvz7idl2rmj2o4kxbyzi Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png bafkreiazebe4f3uzb47vlp5telxkr7dpeyf4lziep3yft55jilnbaqoq2i Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nii.gz @@ -69,6 +71,7 @@ bafkreibqiulbqsp7mkqq2sbgz3ncly3bmmit4abf4lgv6h5ywwaabs2pdm Modules/Filtering/Co bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOff.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOn.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYPeriodic.nrrd +bafkreicsib2rv2s6jtfdjx6r4rdfakvdlwrbv3s22ir7sfd53usmlwnl3y Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTest4x4Mean.png bafkreiapvvycnrewcuahsb73k4dif3gz7d7qfjy5uywnhoon4lxxoaeryi Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTestSobelY.nrrd bafkreibjisjejrnhepfssqqssznwhhzxgv2lgwvlhmuc54ealrqar7domy Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png bafkreibi5uu33l7syoe4li6kwoslls4znkgdt4gtpe3h75guinve2hp2ju Modules/Filtering/Convolution/test/Input/FixedRectangleMask1.png @@ -126,6 +129,7 @@ bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Modules/Filtering/Im bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest4.png bafkreiabsd4upcgss7erw4ayxsvpac3do5obqaskni4kdbynag3jtsai2u Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKNearestNeighborTestOutput.mha bafkreiaakeqqbsobkemfpa547unyd7bwuc3gmrf2ndkiljdmec6r3zobky Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKWindowedSincTestOutput.mha +bafkreicttypq3rju76jiel77jf4icreqwvyl7qmmbyhua546sxnoumwo6m Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DTestOutput.mha bafkreiaa5tlak23i3zdddir3bikelpmegwm35cr6m7n5rrd575vq4lwts4 Modules/Filtering/ImageIntensity/test/Baseline/PolylineMaskImageFilterTest.mha bafkreicbkpslqiepfbkg7tp7hl3cp45iv34s4t3msfpvycde3l2q7d4agi Modules/Filtering/ImageIntensity/test/Baseline/itkMagnitudeAndPhaseToComplexImageFilterTestBaseline.mha bafkreibyp55hk4q5ez6ca7k2m74nh5swwdvrygttf55cpab3vorq5wo3c4 Modules/Filtering/ImageIntensity/wrapping/test/Baseline/PythonSigmoidImageFilterTest.png @@ -144,11 +148,13 @@ bafkreiaolvoytmswkya5jsqkkbbj5goehrb2v4njttn7tes2x34vnqfk6u Modules/Filtering/La bafkreicha3iqkizz4w3ukuwkkzoicfqxgbc7miah6sq4fkghsipbn7njx4 Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-relabel-baseline.png bafkreibhouw5b6l7p5pjfhvqpjkykha4gjftpllyzzqkh6ocq6s37udw64 Modules/Filtering/LabelMap/test/Baseline/fillhole_test_3D_1.nrrd bafkreiaa65dzpzwc7y4sxgyurcoozg2axceaf3fwskwqt6hmfszeafslxy Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest0.png +bafkreicstgkyixnaa5lxas7q2kgslic6wyrcvodvsixjdo7hrg3yqeqp6e Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest1.png bafkreibdx3cr6tnotzdanwfrmkprmz2jqqjcubj7vvh7mfnivm4dpy6tze Modules/Filtering/LabelMap/test/Baseline/itkAutoCropLabelMapFilterTest2-92.png bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByErosionImageFilterTest.png bafkreibixcavzrfp7yffzvnzysy7blunaddrov62jx4awvxwykb7teh56m Modules/Filtering/LabelMap/test/Baseline/itkBinaryStatisticsKeepNObjectsImageFilterTest1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-0.png bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-0.png +bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-0-1.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-1-1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-0.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-10.png @@ -157,6 +163,8 @@ bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/La bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-0-10.png bafkreian2rxokqsq2apfl3bi23xcahdsiny56i3tezblfsepuouagisgca Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-0.png bafkreibtlz634jlkl6qigh53sgxvkoktgkdpbf4s3jbda7frudzjycu4oq Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-10.png +bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-0.png +bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-10.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-0.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-10.png bafkreicnfl7sb4dd3pa3rtl55j5jeuxfwixzxeendf6ecwqnqhnrme3oc4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapToAttributeImageFilterTest1.png @@ -213,6 +221,7 @@ bafkreicpd66yibfo6o56oawyuyxcc645aqekapzctcuuq4mwybxgpnr7dy Modules/IO/BioRad/te bafkreia5wd3xlz66gvwpdnfi5bvpnv2ws2nc6p27toyuhwq5p2hgfthhky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/id bafkreiapkxryvtcstzb2xhxdx7mj24547lmjk3veforbutwaohe6t7qcky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/procs bafkreibmjfvjkedwz36qfmde6pph7fvdrpj2z4okx5ogcpls3gtitb6pgq Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/reco +bafkreicugsxameb7vraybmu7fal3w7wfe6le7b2ovenwgf3zhv6uq6fzba Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/id bafkreia6dezn3wji7sz4edjwxrixhkwo5zju43dmrrf7asx3ckhgnoh4ga Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/methreco bafkreica4q7r7ksbmldhao3poinrgksit4w7meadgh5e7vww7bhyptyjvm Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/id bafkreiaba5gipn3ln5ufagyf5kncyy77uk4bghmu7mi5xuztjkdldv4xou Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/methreco @@ -230,6 +239,7 @@ bafkreibn3fqjxfgyy5zhep6y5xfjqhmqucpwzyz5u2ylocu4trrbqppghu Modules/IO/GDCM/test bafkreibf6gnnn5n2mhc36uxl37hxs7efmlfvx2vkyue7ctobu2ybavgk6i Modules/IO/GDCM/test/Input/Lily/losslessJPEG-RGB.dcm bafkreic2lcc3h4htvb6qorcetuxmnaht3xcqal2rbejclk3p3lqko5ocua Modules/IO/GDCM/test/Input/Lily/lossyJPEG-YBR_FULL_422.dcm bafkreiciwm5plkh7lydrtupwmlh42kofz752rrlwsgtwfp42ei6dhmdbne Modules/IO/GDCM/test/Input/Lily/raw-RGB.dcm +bafkreicrjre3ewaec3l2tgexols2mrnd6xywpbyj6imkqb4kgy5gmfhbgu Modules/IO/GDCM/test/Input/Lily/raw-YBR_FULL_422.dcm bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/GDCM/test/Input/NoPreambleDicomTest.dcm bafkreibcgqbxkz2p6jjrs3hiufd2z4cfrpvd6ec76ldk7apq5mizoklalm Modules/IO/GDCM/test/Input/US1_J2KI.dcm bafkreibee764qlmqzvgorju3kfl65szxksmqfxhbhcwblrsfnj7k44fyhu Modules/IO/GDCM/test/Input/US1_J2KR.dcm @@ -275,6 +285,7 @@ bafkreiamyaqz7uybrjgfnnnidw3cz3zcap335znltfgilkbgi5wqdxtxnu Modules/IO/NIFTI/tes bafkreiawqehmd75yk334c7pxcjumrdw4ide2dgg7x3ctopotkzyfz7cjva Modules/IO/NIFTI/test/Input/xyzt_units_test_scl_mm_s.nii.gz bafkreiblwwaa6orfdgxfbgwzsx4fxehs3nehoj3kcgjuyn2f4v3kxfns5e Modules/IO/PNG/test/Baseline/itkPNGImageIOTest2GreyAlpha.png bafkreic73nr3gc4qyk2v4q7eflulowwfzn3rpfhvt2ci53erkbjlt3wfvi Modules/IO/PNG/test/Input/HeliconiusNumataPaletteGrey.png +bafkreictimjuvz5semh7yd44svdwwpszwkvc5enrdmr3vugloctsjgq4gq Modules/IO/PNG/test/Input/cthead1-257-corrupt.png bafkreic66j47xtsk7o7f4uzlz6w7faly7ixixyup4nizmrafazz55idc6e Modules/IO/PhilipsREC/test/Input/Test_Cardiac_Phase_7_1.PAR bafkreiclceys776636dg2qvrmjlh54kv56vmkbv2zwioju6agvmvpmwk2u Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_1.PAR bafkreicdjumo5anfgkylpmogbgqhbwg6fpyp7vrkpcvpltjxll7rpzmeaq Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_3.PAR @@ -293,12 +304,14 @@ bafkreic6yjaz5ptkv433pvfey3rd2zv5gyjilfmyg7grn75zzet4nknojq Modules/IO/TIFF/test bafkreicn5vtm2e6ypi3lpuz6my7dx7wxykqvaqmvph6wjeoqttkdp4mo3q Modules/IO/TIFF/test/Input/jello.tif bafkreibyhe4flgn2jcgg3ykqeqihy6yplog47ty7x5rycwibjlu7xpw6sq Modules/IO/TIFF/test/Input/ps-separated.tif bafkreiaxoniq2r2lubgmgw2y6jgb52h37mgtvyft23aau4kktfis36ggbu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralMembraneTest.meta +bafkreicrc5iflantef32ytxybjpyqqxqj5korxonnliggtzrgib5jlzqgi Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronMembraneTest.meta bafkreibzitvyck2r7vmxghb7emmnwi3yhdcp54qefrkrdag4ajshkf4rt4 Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronStrainTest.meta bafkreia4gfypioq6kzb6xe5tqdop7dmdnmr2mk5cghcsszml74zu4lcm3i Modules/Numerics/FEM/test/Input/3DC0LinearTetrahedronStrainTest.meta bafkreic5kelopijimf2io3ism7o2ow57ek77drgdxgtff73zyzclqwwl5y Modules/Numerics/FEM/test/Input/LoadGravConstTest.meta bafkreibsmxa3bguccx3pl5mmum2ulzm6swk27vp7jhnf4v7gxa7wfmq4tq Modules/Numerics/FEM/test/Input/hexa4-grav.meta bafkreiaqxndb33vzrmizj52d2azb6x7zjfs7eiwiwjilfd2tew73csmx5q Modules/Numerics/FEM/test/Input/quad-lm.meta bafkreibeqqq6klcguwmdpvu3kwrrvj6lhf664wulwj4trpuzw6fmanuwha Modules/Numerics/FEM/test/Input/quad2-small.meta +bafkreictaiziedekrkhbo7iwg37d7ot5yvtkfurygcgdh26fnmo66zn6vu Modules/Numerics/FEM/test/Input/quad6-grav.meta bafkreich4kkgtv375t7dmtm42e4aluvlu642axfdrpdie6virtfgy2m53y Modules/Numerics/FEM/test/Input/tri3-e.meta bafkreibwbm425iuesdb645nze6gi2ucipaqdxx4bx3zqnl6xhdqgyhotue Modules/Numerics/FEM/test/Input/truss.meta bafkreibqn6y5z6zbe2onjg6qq2n3dzn5qz3qigga3flmbkvmqccz26vjj4 Modules/Numerics/Statistics/test/Baseline/itkGaussianRandomSubsamplingTest.mha @@ -306,6 +319,7 @@ bafkreibpakhi5e4vzisarnv3hlyt5p4agpajwlu72qutties66xedvwraq Modules/Numerics/Sta bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/BSplineWarping1Test.png bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration1v4Test.png bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration6TestPixelCentered.png +bafkreictwu645zxdtx2ky5pjckpif5i7figztm6mkw2xxfvr2qyjjukxk4 Modules/Registration/FEM/test/Input/PBNRRMesh.vtk bafkreib3qwnibtah25trmmn2idtdsyqz65ldqip4luszyz2vwwtqbqo3vm Modules/Registration/GPUPDEDeformable/test/Input/LenaFix.png bafkreibd3ic3fujyogccnuj43gnnnsywww6h3clxkoetgrglwogarnwmrq Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz bafkreib7mbf4mtwapdaxgl3br4owsit6nflqumlacqsovxq3463yd5rpp4 Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz @@ -359,6 +373,7 @@ bafkreic5zq74de6pkg3iel4djy4f4hu7gbmgdoe45ff3fibrw24hgdyh44 Modules/Registration bafkreibgxyh2pocwad45ludqngphkdii63pidocjbkacrrlr7ch7bqrzpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p009.jpg bafkreibbtainn62dqmo2k3elgvwu3cgtonhvxauwpunfacqjohceutecsu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p013.jpg bafkreicjdlem5tbctfbcpbtd3rrsmietnigo4v44n2zm77c2rf4mxiur3a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p015.jpg +bafkreicugz2rpjmm2xh5nhtdvjpp5xrt4uzpfj4nnjfdpjy5p2zs3tz5x4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p016.jpg bafkreiajmsrloxodkxc7bhdxijctn3crbw7qhtxrvrauahl5kllnxsucim Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p017.jpg bafkreiaimzwncs6txl7vsgw46xfqmfidwu2dnvpg4it6zlifvi3l5b5m5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p020.jpg bafkreic5qnro2zxngsn4cgya5k4wpq6k5hzumekbxyzredo2jspavirf5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p023.jpg @@ -375,6 +390,7 @@ bafkreibmketaxvhnxeurylbxgxicaksjbbyv4dr7xltbzapawqfsc3eaje Modules/Registration bafkreibfnh7e2qtcupfpdealjm4wblq36oc5im4c2o5srn6kfnt7s3yo2i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p063.jpg bafkreiaaxc36ewgwitoymz6t5iilsnyk6dz4hgenuv6wuwpe645jutot4q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p064.jpg bafkreiajgq4r6np3k2wf43juxxhoo3npbwpqd6ol6crr7geylrboniskay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p065.jpg +bafkreicrczfjrhqlqsivk4c2lroj4gk23kk2bcd53otbjkudawazxz2ddi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p066.jpg bafkreib7tqavgxol2wbyub3mhqlqhfanl7s7fnmf7isbtqwv73rlzg7tfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p068.jpg bafkreibemfy62f63o5u2hr5e63s2en57slx2gensjghlyumv7zavunz5ui Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p071.jpg bafkreic7veiqlnct72ruyc4of6mntovlbdcwjqufaw7fusm6mhhs5igoqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p077.jpg @@ -393,6 +409,7 @@ bafkreibvvzcfb3pmuqvw2a35qhhrnrjdnuhsseceg2zj6k4evf4tefzbma Modules/Registration bafkreibve3dmmeyanarnwbnx4rajwzrnohls6oovfs67raxipfxi32zfqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p104.jpg bafkreic7dxxbmkfl4xc76xavimjampfw7ecaqafei74inzxcg6uy3q6nqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p106.jpg bafkreiaenzhweos7cuhehcw2n2eb5rdkjoelpsu35hfjaljuelk6ed5py4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p107.jpg +bafkreicrxdsjmoogonsok6kaqecaqief25p7izn7gpyzoncdllkcpop4lq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p108.jpg bafkreibtbvbojri6va36qi5rpjtpjanuc5fkaah6ijxmjovlwji5j35gv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p109.jpg bafkreiblru7f3x35ngmuxm7s4osm4obgmg36egmxnzeug3t3a2kixu4v7a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p110.jpg bafkreicftlccxcxesxsdwj3hh23scxbdwfkka2iddx4shjpdxeawqz73gm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p111.jpg @@ -464,6 +481,7 @@ bafkreice2gzuvpehhqem3kwxser4l7p3plukcm2ojdbveaj2zkp76rsvqm Modules/Registration bafkreiaxkhhq7fdm5sp7p3e4ntyllgn75wu27mizndmk4u2x75oz3ua6je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p298.jpg bafkreibts352wtwgllsqbr3abhfstejqoeahdrqq3gasisiyw26poiipei Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p302.jpg bafkreib54356tstd5cx5atvpmoewpcy6qes3q3dagc5sqyfdgmsi2vqt2a Modules/Registration/Montage/test/Input/S200-6-C/TileConfiguration.txt +bafkreicrczfjrhqlqsivk4c2lroj4gk23kk2bcd53otbjkudawazxz2ddi Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p066.jpg bafkreiblrbks7corro6xjkx3lmmzs5bjtytbz36eebjk2wladsflwp37v4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p101.jpg bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p169.jpg bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p202.jpg @@ -522,6 +540,7 @@ bafkreibca27ybu5z2c3v3e5zvc4enfud7p3ufqizr5z5ulhgrafuk3hzyi Testing/Data/Baselin bafkreickfry6kf3zd2t5cozaeid6thhovvt2lwx7bhhapptejty3mrybyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.5.png bafkreiamzbuibkxicf625j7h3jppwagjw7ntu23hrftia3kutyg7ghfxoe Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.6.png bafkreickxsok552drtbssiitjnz3rs4m62brhbiccryledqi5sgyzrxb7e Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest2.png +bafkreict3blly7wojg4razcbj4qudhkmpzrmikg3xlr7tcmbaoam2cyb6m Testing/Data/Baseline/Algorithms/itkNarrowBandCurvesLevelSetImageFilterTest.png bafkreiaanceijqbdjutqztgaxjmvqf7naohnu75tq2nckevtybuyikm7bu Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest1.png bafkreiagcm2vrnxatl24qlijnirmsowkq2u2yftc6r4r42orulju3iizqm Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest2.png bafkreibjz6wbh5d53weoweusyewrxabmxaijtrfnsh72rye5pyptyp2hpy Testing/Data/Baseline/BasicFilters/BilateralImageFilterTest2.png @@ -618,6 +637,7 @@ bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baselin bafkreiagw27c3upgcb6xubt6yycqitchcot6cbfokk62afyybtcrbtnvjm Testing/Data/Baseline/Registration/DeformableRegistration2Test.png bafkreia3zlrg4hcrj6en6lxj7xnpfxlbyarzqegk5kgn7dm2oyb7y5oroi Testing/Data/Baseline/Registration/DeformableRegistration3Test.4.png bafkreia7rqwil6gcwokxw3y7ytsmgwc5mukx72pgaezxt7vssxnesahzme Testing/Data/Baseline/Registration/DeformableRegistration5Test.1.png +bafkreicua6u7ayas2qsqyuwh4zi3naxrw3u663i7ynfz2osy67qpoa7d2q Testing/Data/Baseline/Registration/DeformableRegistration5Test.png bafkreiaub3fzo2qgrtd2f3jecpmpk5foowpeo7oa24drqwegkfwr64hgya Testing/Data/Baseline/Registration/ITKv3ImageRegistration5Test2PixelCentered.png bafkreiax4tqmaotwthxi625wvvny4mozpnlnczih4hfjvwntcrbwpmqyyy Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.2.png bafkreiaveozihczoh73mjk3g23ohq5fdwasdql627avmb44i6vdve7mfmm Testing/Data/Baseline/Registration/ImageRegistration14Test.png @@ -633,6 +653,7 @@ bafkreiccoudx65pd3cra6wjbaoy2u4ran7mwavdk35l37ms62rdv3wypyi Testing/Data/Baselin bafkreic66wr4u7je44vmqxlh565cxwduvuaht6zohxgk7ttmab3nzwfek4 Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.2.png bafkreib4mwlqupj3a43kdqkpa6a3iohroqlzmjrh4tfn46pml4bfj7n3fe Testing/Data/Baseline/Review/itkAreaClosingImageFilterTest0.png bafkreibsuexxa3wkco7faediffwewe4f2wlsxh2645l3yhyaeoh2ox6asm Testing/Data/Baseline/Review/itkBinaryClosingByReconstructionImageFilterTest.png +bafkreicspb6kq37nbnubtddg2rawvqf3ck3wno7zx3loil2meokmcgnmdy Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest01.png bafkreici3tmqbrgock2z7l7bva5tyn7hhg6tdaytr36ybq53macp7nqqam Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest03.png bafkreia4tevn26uqejybgd2fdtiqg3tfdw4q2fiy67zkvogpnr7tu7a5pu Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest12.png bafkreibw5fa3uorze7g6whpbaed5pdn4tb3orn3r7a3ovz7rxqlkplkkbm Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest30.png @@ -648,6 +669,7 @@ bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Testing/Data/Baselin bafkreic5hqdcvandl4meeevjxgn7up6nnefrgcijsp33eleksjchdkkrxq Testing/Data/Baseline/Segmentation/GeodesicActiveContourGrayMatterTest.png bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.png bafkreicetvgjze6imuowupp4ctkszqy26ziytrfpaxkgtqxdac2cjoxpki Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.1.png +bafkreicu6ukhlwyxpp26ilqkm7wwv6pnimmivasqd56lm42klcvkro4duy Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.png bafkreibdujpchvv4oyo6bnf6y4arjpr5t3in2iswoimbte45sidc4mls3q Testing/Data/Baseline/Segmentation/GeodesicActiveContourShapePriorCallosumTest.png bafkreibsbodzjqgiqjraobc4l2wamn4ufd6dgnbcfd7qs64oaxbwt6im2e Testing/Data/Baseline/Segmentation/HoughTransformTwoCirclesTest.png bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/IsolatedConnectedTest.png @@ -660,6 +682,7 @@ bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Testing/Data/Baselin bafkreibbsgmdzzltnpdlwgoqcgdkotbm6kz2qwkqsw6sxgen5xuof352om Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.2.png bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.png bafkreic7zvpt3te3neyjish5bq7ovckvczzo3qe3rgdnty4g6ena32ivva Testing/Data/Baseline/Statistics/BayesianClassifierInitializerClass2Output.png +bafkreict7pqaa5qiwacm2c2dnxpnkfyfsj3e47r3r5v4sevv63vxhvphg4 Testing/Data/Baseline/Statistics/ImageClassifierFilterTestClassifiedImageTest.png bafkreibpleftqacav3cxmv7ruaehver35veg2xc7qqiach4biml2qusuza Testing/Data/Input/012345.002.050 bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Testing/Data/Input/2th_cthead1.png bafkreiazem3elmai3lwipyvxcajfd2afrg5gjtswvh2udtwc5ztku6x344 Testing/Data/Input/Archetype/a5b1.PNG @@ -673,6 +696,7 @@ bafkreiceaml262ln6chfswtem3mxrlpngx4tqzll27m2irbl2rj56rezt4 Testing/Data/Input/A bafkreia4xk74iupjj5d5lqzy7cq6zgax3f3s2zjrwun6wkvnzhtiisuf6m Testing/Data/Input/Archetype/image.010 bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndian.img bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndianCompressed.img +bafkreicrb6uyivbjq7axm43xoloz4way2tnos5i6ivurieoblnfqtu3esi Testing/Data/Input/BigEndianCompressed.img.gz bafkreia3xcwr4rd3wu7u7dd7mn3iru7uzcavscpbrmklwussqvyab6uaia Testing/Data/Input/BinarySquare4D.mhd bafkreiagampuouhpaftl77q2t7w6kg3ubyarphibws5fiudpqpy4hjqihi Testing/Data/Input/BinarySquare4D.zraw bafkreichsot47hdalj3tosr72dmvfso7zwsgc5n4orrue6jbznu3e7yhtm Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.3.dcm @@ -688,6 +712,7 @@ bafkreiacernybemiaok4zsz4kegmzh7eh7b53rwml2w2f5kicnwxsde44e Testing/Data/Input/M bafkreiasxjv6gstfagh72yldawtencaxdzm3uk43arb5xatnjqy7nvt2jq Testing/Data/Input/MetaIO/SmallRampVolume05.tif bafkreiabv2oshlbykm2uhoojgcki435zvkrlwj54nwfcohjmaeqhxyjz3a Testing/Data/Input/MetaIO/SmallRampVolumeList.mhd bafkreibf4ax3y4f5d4d7gu4sncsyy7qmdx4y2l32rdjvptbny62f4wr7bu Testing/Data/Input/MetaImageError.mhd +bafkreicshs5i7vygmntrhvdboiqnwl6bfp6dmmtmqclun7lkss7ignljmy Testing/Data/Input/NonOrthoSform.nii.gz bafkreibct4vqe3frlihsfvh32a3x67idg42n3cbzyx72luw46tznn6rfie Testing/Data/Input/Number3inText.png bafkreibnb3piktjl6rnmxokouwugvxj5ifutv6njivbxo7unfx654hwbay Testing/Data/Input/RGBTestImageCCITTFax4.tif bafkreichkfizkrmy3ymsdmx6djruyznwsz2l7ut7pufhyapdk3qibxmd3m Testing/Data/Input/RGBTestImageLZW.tif @@ -736,6 +761,7 @@ bafkreickr2fah2h2eow544t5z3p6ilp26kts7ons6v4tgcebrtnrcosxdu Testing/Data/Input/t bafkreicehz2rvpsyxmt2qqnofyqvlvzhcr2klv67oj3fpbmrmm65hjdxg4 Testing/Data/Input/test_geadw/I.002 bafkreibcl2o24ifudyyg7chregazecpaubgh3whbmzdkqd6uew65chvzzu Testing/Data/Input/test_geadw/I.003 bafkreic2vrkdkxhofmxigr7lgwr4dmfazgpgeex4pqisi7dalpou6k3cku Testing/Data/Input/test_siemens/3868-2-101.ima +bafkreicrzykil4y5saxyhfrmjnow4sbcgsumthxttfoiigi74rtkwrbo3y Testing/Data/Input/test_siemens/3868-2-102.ima bafkreiabct5y5d3w6ktiwvrasown3g33zbeb3wgemuqn7ucocq2ajchvn4 Testing/Data/Input/test_siemens/3868-2-103.ima bafkreiawz7ry7jt6jxhmdqd7p7a2fjpz6xrj3z2ngrcdllxmrsgyzjuw44 Testing/Data/Input/testrgb-2.nhdr bafkreiaih4ngm2xyi6yi72mvqfanvzcu2my7umdjrfw455kpueuzmbho3a Testing/Data/Input/testrgba.nrrd From 7114c64b49a775467bd92ccd43ee01be8780b340 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Mon, 18 May 2026 18:05:22 -0400 Subject: [PATCH 16/23] BUG: add remaining content-link entries from ITKTestingData sync Additional manifest entries discovered by the running sync.py process. --- Testing/Data/content-links.manifest | 361 ++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index d3baa91677c..1f5ac8b124f 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -13,19 +13,28 @@ bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Examples/RegistrationITKv4/test/Baseline/BSplineWarping1Test.png bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Examples/RegistrationITKv4/test/Baseline/DeformableRegistration1v4Test.png bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Examples/RegistrationITKv4/test/Baseline/DeformableRegistration6TestPixelCentered.png +bafkreidhknrumzokrwbbchwhqxwk2iv4pcn3cwjew2qfegw75d3fc74fai Examples/RegistrationITKv4/test/Baseline/DeformableRegistration6v4Test.png bafkreibuxy2iukcnscmcixlgkwmy2v7ozg257plxmmxgx2dex6dl7duvji Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.3.png bafkreicjlvrdryxu4yssdo5hdf6mpwvgiftv466prtwwcevu2mj3t355wi Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.6.png bafkreicoqa4kn2aaxzivbbeffvbvw45frrekuefwu6dixafzssewhhdcne Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.7.png bafkreickjukon2bbehhjsjfmnjql33zuurki4cz3djw6cuatyxgwijoioq Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.9.png bafkreicaxbvt4ok3vcft2i664w4iovrdljwpocbl5qctlxqo2p7usks2be Modules/Core/Common/test/Baseline/itkPointSetToImageFilterTest1.png bafkreia46j4a53hnz6iup2x6x5fjrudaseyrte3y4fce5s3yytk53fd6aa Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionHorizTest.tiff +bafkreidztz2gwhowfsgtiwuzg6wleobqwalnaq5pdmitibswpaothshuga Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionVertTest.tiff bafkreictm6jjboquhyrk736ly2klohvpypryfgn3paklbnejvadtohgckq Modules/Core/Common/test/Baseline/itkSobelOperatorImageFilterHorizTest.tiff +bafkreidhkafpsqdpychpf3rljlrsm2o4gh5xiyp47zoniyokultxfsy7jq Modules/Core/Common/test/Baseline/itkSobelOperatorImageVertTest.tiff +bafkreieaecnog37ts5k6ox57ej2yvraeuzmvaqsakoupqf7xtcqk7ywami Modules/Core/Common/test/Baseline/vol-raw-big-dup2.nrrd bafkreiaqgx7eaphidpcagcuqm7t2zfd6vjcdnpg7c7rr24xefvgukhcha4 Modules/Core/Mesh/test/Baseline/itkTriangleMeshToBinaryImageFilterTest2.mha +bafkreidcfy4yoah4gsszni5i3yzzpgdhkzvcdyyhpcclkmrctvvnwaalry Modules/Core/SpatialObjects/test/Baseline/itkPolygonSpatialObjectIsInsideInObjectSpaceTest.mha +bafkreidxdbtv6bub7ligfei2qd7axjey6wxoiygcik6vqjcijh2twcv6ca Modules/Core/SpatialObjects/test/Input/PolygonContourPoints.csv bafkreic3w33ftya4ayrcg5jwvsgjiymswmnehrnlfjlk5rcimfluii7iuu Modules/Core/TestKernel/test/Baseline/itkRandomImageSourceValuesTest.mha bafkreicm7roru3x3zjg3t3u3dykpjf5jm7ud2t3f6btwjme77i5qerxtu4 Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements1.txt bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements5.txt bafkreibqqfdwp4t4pjqsqjqts7mmclyqpwmhmjb5tixve6qna5vkrsdjay Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest5.png +bafkreidesr33jwkack3rt6tq63zatphbatw44p76f5p4qcngmaz6i5e6qu Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest5PixelCentered.png bafkreiawvfi3k6cllwfh72ovzxwsyl6u665pjvq647inhlytzary3uhzga Modules/Core/Transform/test/Baseline/itkBSplineTransformTest2PixelCentered.png +bafkreieabhe3q2csqz3gua5r4csyvg6gbzeu5wclwoemfzi4kzetzbqvp4 Modules/Core/Transform/test/Baseline/itkBSplineTransformTest4PixelCentered.png +bafkreieabhe3q2csqz3gua5r4csyvg6gbzeu5wclwoemfzi4kzetzbqvp4 Modules/Core/Transform/test/Baseline/itkBSplineTransformTest5PixelCentered.png bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/wrapping/test/Baseline/BSplineDeformationTransformDisplacements5.txt bafkreifmtmpjuppizngftzcnt3ilufa66dajy3i6xogn3jfirveqw63cwu Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/Cos3D_cCED.vtk bafkreif4yuyueovggfvnjj3qrnct54nrm52pfconktlvavzq7kt64jo3ji Modules/Filtering/AnisotropicDiffusionLBR/test/Baseline/FingerPrint_I_20.png @@ -53,65 +62,97 @@ bafkreics5ulkrwki4epnu6l4umam3on7ovr5ao4yfva7f2odkkp25j26gm Modules/Filtering/An bafybeid6ongwkdpv3manmr4qpu22zybq4frslcqj3ysmkxc5tmps2aqnfu Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Modules/Filtering/AnisotropicSmoothing/wrapping/test/Baseline/PythonGradientAnisotropicDiffusionImageFilterTest.png bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Modules/Filtering/AntiAlias/wrapping/test/Baseline/PythonAntiAliasBinaryImageFilterTest.png +bafkreidj3fjlonee3awf6cp76v3ofhef4267b6k3ck27bth3nnndc42j5y Modules/Filtering/BiasCorrection/test/Baseline/N4ControlPoints_3D.nii.gz +bafkreicvdqkt7fe4pkhrhhkhqeclvs2dppt6tdlv6tcj4qyopc7r4uht7y Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalClosingImageFilterTest.png bafkreicdkjlp7afamihunxzcsb4foifgcbx6qmo5cs36y5dmwcibhtvxqi Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalClosingImageFilterTestUnsafe.png bafkreicj6d2l5z25katef4afed4f3zaqguqt2r5zsqkwsgk2lrsff2qdfy Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryOpeningByReconstructionImageFilterTest.png bafkreicbb3uzfc5qccebmo6sk7s72gbt5rfnigka2oz4fpliv5g37bxot4 Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryDilateImageFilterTest.png bafkreic4vmuubzrcau5aal5lolgnf2x3udnsoszwg76dk77dychtzqyvei Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryErodeImageFilterTest.png +bafkreidiwsd7bc32qkhztmr57g2mlan5yn7bpilhh6no45qpv2jau5q6pu Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_blue.png +bafkreidxq36r3thjmfjzswxdgnoktsdieocg5uxo5kf4y6sw2caa5kvpji Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_cool.png bafkreibu6qij5pcahkgxkbjte7w66pkevjkylyadootaxtu2j5oobxfube Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_green.png bafkreib33bbmqabpybt3g5cnnrh7dvzptnzigkpivmykn2hhodx6jnhcgm Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_hot.png +bafkreidx6rmrek2xyrzhcjtouqidpgcrxs4vvl54cnrm57kqqiuc6xvelm Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_jet.png bafkreiamtmf2eq724atw5wtygobzxrnb2q6bbyka7mjgn5i4jcuqfwear4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_red.png bafkreiannnuwbfoesz6omnu2zxbhvvjjqdihul2p5djn7nxrq5er4xyaue Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_spring.png bafkreiaqef55kclq6twcdakxwotltuwby2r2w4bfpqbliw4jc7lq62x2ka Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_winter.png bafkreicrgk7yhx25za6lod5qguk735q6th4kcx2yezcvnqs7b5jldhwejq Modules/Filtering/Colormap/test/Input/bone.txt +bafkreid7oaeiigj3cpci22qpt7pa2alsclt2tfiwanbbvi7moxzl5xwizy Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterStreamingTestOutput.mha bafkreiaob7e4r4qlenwpdsgxibbto7gwddlzdngmy6hfvtxkwbwj3akzba Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5Mean.png bafkreibfvub2xm2cosfzpy7hstbefskq2ep2jhzvz7idl2rmj2o4kxbyzi Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png bafkreiazebe4f3uzb47vlp5telxkr7dpeyf4lziep3yft55jilnbaqoq2i Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nii.gz bafkreiaru5qnadfuupum5shy3ufo66t4d65hww4jh5sh5bfnoqkxld67pq Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nrrd bafkreibqiulbqsp7mkqq2sbgz3ncly3bmmit4abf4lgv6h5ywwaabs2pdm Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd +bafkreidw2kmmdohobpgwjrulqtshknksbzzacjkcj7sff4clihjj75ztia Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelY.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOff.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOn.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYPeriodic.nrrd +bafkreide3zt5x5m4ypemkoxdqh26uxzeut6lklsaaxc6riar3he5yfrmey Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterSubregionNormalizeTestOutput.mha bafkreicsib2rv2s6jtfdjx6r4rdfakvdlwrbv3s22ir7sfd53usmlwnl3y Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTest4x4Mean.png +bafkreie4lmz2oziqtnsxzplabxwyc7uur2x32gjx3kxhxdllfa2hojxn4m Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTest4x4MeanValidRegion.png bafkreiapvvycnrewcuahsb73k4dif3gz7d7qfjy5uywnhoon4lxxoaeryi Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTestSobelY.nrrd +bafkreid4pj6ez7a5yihbvo6u254crd3xuzarughx6ddvhlvihfueni7xh4 Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest1.png +bafkreidphtqtbdnvrlbaqfkvur7x6dzvpdhqsatr74ji42eszxbcatktjm Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest2.png bafkreibjisjejrnhepfssqqssznwhhzxgv2lgwvlhmuc54ealrqar7domy Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png +bafkreid7clije7quk7jkpbme2quw3dny7c4z7z2xlfdj2m2k2gb72pu77y Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest4.png +bafkreidai5traeqkilsaw7y4oko4np737qezdjkadrcdtuwpqwxznhbyve Modules/Filtering/Convolution/test/Input/4x5-constant.png +bafkreidob6hvccmie4nrsxiord2ca5oluhyxxxyvoqki7cc7ewbz7dhe3e Modules/Filtering/Convolution/test/Input/FixedRectangle1.png +bafkreidl6sgcawmuydsec6w3od543yvspy5owspu3252pwx3rnljl3zogm Modules/Filtering/Convolution/test/Input/FixedRectangle3.png bafkreibi5uu33l7syoe4li6kwoslls4znkgdt4gtpe3h75guinve2hp2ju Modules/Filtering/Convolution/test/Input/FixedRectangleMask1.png +bafkreid67zzbvmeahq7k5zyrwr4c5vzulniqpuzcxt4fsjkdlfptss7x6u Modules/Filtering/Convolution/test/Input/FixedRectangleMask2.png bafkreibypyhdyds6wd7ano54ehk4g37yohxtmca2v6qxrsbsytudj73o5m Modules/Filtering/Convolution/test/Input/FixedRectangleMask3.png bafkreiag36wcsk47p5b6y7gxn5mul6fojop6g62pukzj556at5wb4w3sii Modules/Filtering/Convolution/test/Input/MovingRectangles.png bafkreibyq2olmktnxpyvy7ee7myrxttpvdfccwh2qkmdddmkfpxlovmzkq Modules/Filtering/Convolution/test/Input/MovingRectanglesCropped.png bafkreic7avzlu7ski3mwc5tmuzb5b42van7mai35yuy7pqqlwair4kesgy Modules/Filtering/Convolution/test/Input/cthead1.mha bafkreialxxq5r2kdktzm5ka4ypgs4iqjs22znimr7poqkbv3jjy3jcpccu Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterGaussianKernelTest.nrrd bafkreibwusujxjz7mafw5nnr3k4zvlhnoykx2qtbjlmryrex3anarckxma Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreid6bux3qedo7gp2puxlnv5yi7zym5yr72lxb7w5cjlkec4hmrb7u4 Modules/Filtering/Deconvolution/test/Baseline/itkRichardsonLucyDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreidw6hx33hrc6zic3syqz35tqwh6c2lmbzpqu73rkg667tpfbv5phi Modules/Filtering/Deconvolution/test/Baseline/itkRichardsonLucyDeconvolutionImageFilterIrregularKernelTest.nrrd bafkreiaqjggtmpogu5u4bjk5tkpkdg6hmejtxhbs2jkucekc634eqnsxhu Modules/Filtering/Deconvolution/test/Baseline/itkTikhonovDeconvolutionImageFilterGaussianKernelTest.nrrd bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestInput.png +bafkreicumosfeby44q3brkjv26v5jyugq7svqy5njjngku33bw4j5remye Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestKernel.png bafkreic2bed3tisq3ycri6twmwhblpglykhsqsmh2b5yhspzol67fqtm6m Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestKernelIrregular.tif bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestNonNullOriginInput.mha bafkreic3eoaznugg5ojuwuzfkjaposh6k7zeepcmendg2l6ee4s3p73fdm Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTest0.mha bafkreichyfjvdememnr7npym2jpkywfdzqxf3x325frlvjwqcbnbca47dq Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestGaussian.mha bafkreicd4467ju2jltmyj2fsvhd5gakvppzu23iajsjrgjxnvjvvv4n4h4 Modules/Filtering/Denoising/test/Input/checkerboard_noise10Rician.mha +bafkreiczqx64mue4le3aekvywqxox55rb5xxosorglfqhdaqyjmfoy42z4 Modules/Filtering/Denoising/test/Input/noisyDiffusionTensors.nrrd bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Modules/Filtering/DisplacementField/test/Input/parametersBSpline.txt bafkreia4q3fcvt6avb4tt5cmdw2l4rxvhmmszzgkvsziphcyyytoc3k4ze Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestWrap5.png bafkreicqleapu3shlptziamyzu2s575oavdsevvxpsurlpeqhmxhmp4jda Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZeroFluxNeumann5.png bafkreiarnn37z64x3sl5xa4afct7wzfv27xzhoar6nvbfn75r7e75cewe4 Modules/Filtering/FFT/test/Baseline/itkFFTShiftImageFilterTestEven0.png bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Modules/Filtering/FFT/test/Input/TreeBarkTexture.png bafkreibrkmm7ajez2lunrkuxoeijb2xbyzpto5haorcgzcwcqq7eym6lem Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineImaginaryFull.mhd +bafkreidq6cgsahlkpt2r7d3qypjlqecijv6hb5jwik66aahms5ll5vcuyu Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineImaginaryFull.raw +bafkreicuopx7y6fhwqcvietmcd2os3a4iee4a6fdwi2z76el2ybcmakgaa Modules/Filtering/FFT/wrapping/test/Baseline/PythonFFTImageFilterImaginaryTest.png bafkreia347cy3linuhybahy6uqployki6buqscbltl57g4umvfzurg6uxa Modules/Filtering/FFT/wrapping/test/Baseline/PythonFFTImageFilterRealTest.png bafkreicf53yk55h7pmnrvlhaz35xv6re3754gd2d42boahekmpv2m35cjy Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz +bafkreicv7dbuia4he56w2sym7vbaf6vdsdvwx3yb3glm5gsixegkwenug4 Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_NoHandlesTopo_out.nii.gz bafkreibfizsflouvfrzzy6tduf26dwkynvojec64goxy6sx4wuoadk6ete Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_StrictTopo_out.nii.gz bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_NoHandlesTopo_out.nii.gz bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_StrictTopo_out.nii.gz +bafkreicxwixp55bg3dudsmivlavs4tqy3mso4iohba3zyi6tq3lbc5oyum Modules/Filtering/FastMarching/test/Baseline/FastMarchingGrayMatterTest.png +bafkreid3s53u5vkgxth5ygy4zmwiohk65ukiotkocgvxjsc4znpjxw4xm4 Modules/Filtering/FastMarching/test/Baseline/FastMarchingLeftVentricleTest.png bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Modules/Filtering/FastMarching/test/Baseline/FastMarchingRightVentricleTest.png bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Modules/Filtering/FastMarching/test/Baseline/FastMarchingWhiteMatterTest.png bafkreiamfxpdlhrwa3urvxzbdyof7epsxhavq7zz3t6kgotblflrhvvkni Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds.nii.gz bafkreicpsr4z37juligbkl76rgbmfb2sinpi37zqqpkvkpuliqwe6trbwu Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds_NoHandlesTopo_out.nii.gz +bafkreidwqrksa65kirqol5tl7a5egztpe4qmrign7i4tiwgjdd6dvmbiye Modules/Filtering/FastMarching/test/Baseline/wm.nii.gz +bafkreidncqnowdvn6dhawpxhsokwnfoy5vozs5pfbz5vhnc6w7iv7sfcui Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_NoTopo_out.nii.gz bafkreiclyq5szovgcwjosb3nludvvqh3ab6puj4vouyvykkplq4fu5hgj4 Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_StrictTopo_out.nii.gz bafkreia5urqtxe47qsms75ch2d4aqjosjbne5a7mujtxr3ifmhltwt4h5q Modules/Filtering/ImageCompare/test/Input/itkTestingComparisonImageFilterTest.png +bafkreidwzyghudkj66qcayf53kq4k7y2phpbf5yizyssdlp4p5c65mghvi Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_3-3-15.nrrd bafkreib44cc42kjq46y3r5yqpwecc7nzifo4lxcnqoovjtiakcdjl3cz2u Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_Defaults.nrrd bafkreibnzchm7dgpwjux3ehhdprkdj5xebv4xhsj3foxkt4o4batgyckue Modules/Filtering/ImageFeature/test/Baseline/itkGradientVectorFlowImageFilterPythonTestX.png bafkreibe7pcuzn3vgbdwziw747oy5tqiv4f5hmadllkwaj5qljasdxv5ve Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianImageFilterTestBaseline.png bafkreiat4j53ffhhnqrxc5gyfgp43smpt3436vgxp5ffjrwjxre2c4427u Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianSharpeningImageFilterTest.png +bafkreid7qabuh5afbykjuxmtrjl6aqakow3x7swlo2dbkop4le4r72skde Modules/Filtering/ImageFeature/test/Baseline/itkSobelEdgeDetectionImageFilterTestBaseline.png +bafkreid74fy6proziz4v3daj3ufm3534kitof443tzxvhhoitck6xswfqi Modules/Filtering/ImageFeature/test/Input/HeadMRVolumeMaskImage.mha bafkreibhyt2poizcznlpci74n2n3punxbios7fqrgpecppbsze2u5xtcce Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_0Overlay.png bafkreibsk6v5fkeera7ycklhtndc34xurwagjne24nccanbiujdratyadu Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_1Overlay.png bafkreialyrcnayuvzwndkin2vg77njxn6m5in4sijg3ax7gtlwj3iyh72u Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_2Overlay.png +bafkreidb2pobr3cyv2liquglzo62isayey435dwsb2lkvj74yxukhetccy Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_9Overlay.png +bafkreidzxum2kijvq2sphpb3xhbjbuxmmlohoyf2wgnljuyxukyhj6daia Modules/Filtering/ImageFusion/test/Baseline/cthead1-1_0Overlay.png bafkreiaafafrt7hm5wylsblewjup632dyn6zp4tt5jvzmc6sb3iufpod4u Modules/Filtering/ImageFusion/test/Baseline/cthead1Label-color.png bafkreice64ljtuopkxgd6kxrodan5kj6msdkqjd3xdv3aw5omouyee44vi Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest2.png bafkreiconbqbpp3nohzhuegau35f2khmai5x7sgtgjzpnc5r2qdua6v7mu Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest4.png @@ -119,41 +160,64 @@ bafkreibco7apln276jrqmxigdhwy3vd7durntmm6gvma7czq73ft3svowq Modules/Filtering/Im bafkreibhzjeqs7ynhgcmbp4znwpavhn2svd6vl3odedabzexmep46lyyc4 Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapToRGBImageFilterTest1.png bafkreial4wyrncl2o4kec4o7zsxioqig7imp6firltaajuvhajxdi2ivwm Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_2D.nii.gz bafkreibqhhd2d55zj4hi7xk2uelnmswbwc2gcekbyewbbxyenvpcxmdwnq Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_3D.nii.gz +bafkreidlgjshvtp5ysio76so6o3f6xbh4o2ob3hvk6mhxbojia4byjlpnm Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2.mha bafkreiap2a7bcr7pspwmp4tcb34iurvjtclgrabftb2busg3tvpdcn3oee Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolate.mha +bafkreidj5aetvkixbvhhvzerk7htkpi7qbasely3vfv2n5c4im3iqewdvq Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolateUseRefImageOff.png bafkreia2h2yywl2qjmmsfyahqpb5xvw2tciw3ulowfikiduqbxocljt2tm Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolateUseRefImageOn.png +bafkreidrv265l7734ndv4nr4ug6wvoy54xkjihyey5ljq3ahtn5btskoty Modules/Filtering/ImageGrid/test/Baseline/SwirledMirroredFloat_0.75-11-7.nrrd bafkreiawv6zalp3eqc7ak2apuw2ytscnj6c4rttm5kob34ao53mltozlk4 Modules/Filtering/ImageGrid/test/Baseline/SwirledMirrored_0-11-7.nrrd bafkreibgpk76suldbnblxtxidohhlmrs6juwgi4gkbycgj6du2kmicihtu Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest03.mha bafkreia2rtt6qpocb63z6x75s35bejgscimo62a6xrowbe4jprtoct6ggm Modules/Filtering/ImageGrid/test/Input/ScanConvertPhasedArray3DTestInput.mha +bafkreicwnthmj6sfnbaggg3ubwmij3hdoq52igytahqjbnqrzkmcivwhwe Modules/Filtering/ImageGrid/test/Input/cthead1.mha bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest1.png bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest2.png +bafkreie4ryn3gpcj4lwlpbvvbjeftywo47n4x4xrcr2yu5dqhz4c3ooppa Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest3.png bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest4.png bafkreiabsd4upcgss7erw4ayxsvpac3do5obqaskni4kdbynag3jtsai2u Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKNearestNeighborTestOutput.mha bafkreiaakeqqbsobkemfpa547unyd7bwuc3gmrf2ndkiljdmec6r3zobky Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKWindowedSincTestOutput.mha bafkreicttypq3rju76jiel77jf4icreqwvyl7qmmbyhua546sxnoumwo6m Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DTestOutput.mha bafkreiaa5tlak23i3zdddir3bikelpmegwm35cr6m7n5rrd575vq4lwts4 Modules/Filtering/ImageIntensity/test/Baseline/PolylineMaskImageFilterTest.mha +bafkreiec5pblrbcnooeklhjq7bmbhshrafjfa6mtlxusmuaauj4b2e65wq Modules/Filtering/ImageIntensity/test/Baseline/itkDiscreteHessianGaussianImageFunctionTest.mha bafkreicbkpslqiepfbkg7tp7hl3cp45iv34s4t3msfpvycde3l2q7d4agi Modules/Filtering/ImageIntensity/test/Baseline/itkMagnitudeAndPhaseToComplexImageFilterTestBaseline.mha bafkreibyp55hk4q5ez6ca7k2m74nh5swwdvrygttf55cpab3vorq5wo3c4 Modules/Filtering/ImageIntensity/wrapping/test/Baseline/PythonSigmoidImageFilterTest.png +bafkreidp2iun2poduyotysaam4b2diuyctuhppmt342ybf3fvylz5jelcm Modules/Filtering/ImageLabel/test/Baseline/itkBinaryContourImageFilterTest1.png bafkreiabs4xo3grkobwh4bjnrwyljffv7b6fe6f2tvet3bmi7w2hese7wy Modules/Filtering/ImageLabel/test/Baseline/itkLabelContourImageFilterTest0.png +bafkreid564mt2u3hkcj66h6s53nh3umbnp3ymsaehagrgxtcd6adazypmu Modules/Filtering/ImageLabel/test/Baseline/itkLabelContourImageFilterTest1.png +bafkreidpb356aruiokudkoxyo47ol4nyesw3hywpfd4dbvigbixmcebmwe Modules/Filtering/ImageSources/test/Baseline/itkGridImageSourceTest5.mha bafkreic3tjfw7w3322yrhbepg55iyii24f2ldjkx5sjxvffr7adyvbmtz4 Modules/Filtering/ImageStatistics/test/Input/targetImage.nii.gz +bafkreid3h7ntijfnhljsbesg6vczwgy2xrcb5fbi3gpfi4bflrqbmmpcku Modules/Filtering/LabelMap/test/Baseline/Spots-binaryimage-to-statisticslabel.mha bafkreib7gcviltetx2tdzgynceqphyif3oint2flldewhbo7rcrexkqreq Modules/Filtering/LabelMap/test/Baseline/binary-image-various-shapes01-binary-shape-keep-n-objects.png bafkreibgnh73b4tmhyrhxjg4srbdicfewnrlq5gkquuxazpmamnqnaz7te Modules/Filtering/LabelMap/test/Baseline/connected0lines-1.png bafkreiazk2vfa6ey27psukejvnjuocjil6wgtxyi4khwstzky65crzb77a Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changed3.png bafkreib7mqtcirlnrbjpjomqf26per3kr52vyvvio3nvfabzip6veuk3nq Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changeregion.mha +bafkreicuovubrq3mp2qbpop7mo3apeaoxgrl6ivu46atr3etr3eslqzt2i Modules/Filtering/LabelMap/test/Baseline/cthead1-label-crop.mha +bafkreids2jpmathkbofpi6lm6oh247rwfyykyz3uqsvrt34og77hoi7ram Modules/Filtering/LabelMap/test/Baseline/cthead1-label-regionreference.mha bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-label-relabeled.mha +bafkreidvdcokhtlqjx6rzsv4bmqnz6ddkuetompfnfmbns4ktey532rbxa Modules/Filtering/LabelMap/test/Baseline/cthead1-labeled.mha bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-relabel-labelmap.mha bafkreibx6ubenw7scurj3h5uaj7lmjrzowz5clapwvyxdezdrxtaal6dj4 Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-unique-labelmap.mha bafkreic45iozaaxahsabdly573ku6tm3lwzjd3zqnkvtv2dfxmgt7vdzpu Modules/Filtering/LabelMap/test/Baseline/cthead1-statistics-object-removed-baseline.png bafkreia7avfnbwl7pylctsqd3p3ub72pb3hazulavxmf6si3ap6pwvf5hi Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-opening-baseline.png +bafkreidq7dpugcudka4kjzq4vzyap6hhqoknnt2uxxxbthfsi4x326i4tq Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-baseline1.png +bafkreidilodoympii2vsg6zyrrmacmmddj5fnyz4kfqg7cx7u2e3po6eum Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-baseline2.png bafkreiaolvoytmswkya5jsqkkbbj5goehrb2v4njttn7tes2x34vnqfk6u Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-open-baseline.png bafkreicha3iqkizz4w3ukuwkkzoicfqxgbc7miah6sq4fkghsipbn7njx4 Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-relabel-baseline.png +bafkreidyr5bv7fsmkeq2edmlck7uedzmswqmnp5eqhgwkkjtu6ukfrjvpq Modules/Filtering/LabelMap/test/Baseline/cthead1Label-statistics-keep-NObjects-baseline.png bafkreibhouw5b6l7p5pjfhvqpjkykha4gjftpllyzzqkh6ocq6s37udw64 Modules/Filtering/LabelMap/test/Baseline/fillhole_test_3D_1.nrrd +bafkreidpkzl657rxu6wifxnzsjzsefte3sv3bdnvufctskh6forjmb4jwu Modules/Filtering/LabelMap/test/Baseline/itkAttributePositionLabelMapFilterTest1.png bafkreiaa65dzpzwc7y4sxgyurcoozg2axceaf3fwskwqt6hmfszeafslxy Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest0.png bafkreicstgkyixnaa5lxas7q2kgslic6wyrcvodvsixjdo7hrg3yqeqp6e Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest1.png +bafkreid2trnawx2ivb72jqgmsv6xvgnyg3psscp67m225rm2sz5s4lv3va Modules/Filtering/LabelMap/test/Baseline/itkAttributeUniqueLabelMapFilterTest0.png bafkreibdx3cr6tnotzdanwfrmkprmz2jqqjcubj7vvh7mfnivm4dpy6tze Modules/Filtering/LabelMap/test/Baseline/itkAutoCropLabelMapFilterTest2-92.png +bafkreidlbycgm2lwqy62w65tcakcy6hbqqho6yubaogvo7v3ekcdlpd47e Modules/Filtering/LabelMap/test/Baseline/itkBinaryFillholeImageFilterTest1.png +bafkreids2esfeesjolyl2gt5t2hb3phjn4peampspomc7h7kjznew4os4a Modules/Filtering/LabelMap/test/Baseline/itkBinaryGrindPeakImageFilterTest1.png +bafkreie3zmi5chrtruqgiixbkcqf6nv4hjfth76xzoiuhxcngtsigcri3i Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByDilationImageFilterTest.png bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByErosionImageFilterTest.png bafkreibixcavzrfp7yffzvnzysy7blunaddrov62jx4awvxwykb7teh56m Modules/Filtering/LabelMap/test/Baseline/itkBinaryStatisticsKeepNObjectsImageFilterTest1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-0.png +bafkreidza2r6typihyxvj4nsht75s2dsgd7n6hihlt32r7einkv5uflh6y Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-1.png bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-0.png +bafkreie6v45im4bnhpnn23mrghme4v56ubooapuydel5dyjcv5wpua4z3q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-1.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-0-1.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-1-1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-0.png @@ -165,39 +229,52 @@ bafkreian2rxokqsq2apfl3bi23xcahdsiny56i3tezblfsepuouagisgca Modules/Filtering/La bafkreibtlz634jlkl6qigh53sgxvkoktgkdpbf4s3jbda7frudzjycu4oq Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-10.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-0.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-10.png +bafkreidixrvvk4yzlz2d7y3i6jghhjflshlq3jheibwd4lmmxhkp323ef4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-0-0.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-0.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-10.png bafkreicnfl7sb4dd3pa3rtl55j5jeuxfwixzxeendf6ecwqnqhnrme3oc4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapToAttributeImageFilterTest1.png bafkreiaravwcdt24qwqq5fqgizxnmagrxab7syd2pbxbvuot2dv6xiq3qq Modules/Filtering/LabelMap/test/Baseline/itkLabelShapeKeepNObjectsImageFilterTest1.png +bafkreiddzk3n7kkckwvyqaulckf6lryjhkddldxdrjnwxglcadaaedvdme Modules/Filtering/LabelMap/test/Baseline/itkObjectByObjectLabelMapFilterTest1.png bafkreicjyx5wr6ehg42gfqoqpnidwtcjxqwzymdk46jjfbpdntvfrz754e Modules/Filtering/LabelMap/test/Baseline/itkShapePositionLabelMapFilterTest1.png +bafkreidzqwp74yj3lyx5e4lqqtviheddkqk3tkeolijmx5fh46arwajmxy Modules/Filtering/LabelMap/test/Baseline/nonConnected3DLines-0.tif bafkreiazarivpcf5g5roteydftoqclzwhylaipzjydmzhcqtpcvhoqhd5i Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-aggregate.mha bafkreibgcx5ep44ack3p3smspyr3msp2ycc2xv2rnx4oqcsovazuij5qua Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-keep.mha bafkreickoaksql6nb7wktta2x6ps5oxxir2njwsuwcfwqqy6ajxvmojszi Modules/Filtering/LabelMap/test/Baseline/simple-label-to-shapelabelmap.mha bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Filtering/LabelMap/test/Input/cthead1Label.png bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal-ref1.png +bafkreie6eqt74fjdime2sug4yhhkickcgt5sxrydtgm5r6hjyxnw6iedse Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal-ref2.png bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal1.png +bafkreie6eqt74fjdime2sug4yhhkickcgt5sxrydtgm5r6hjyxnw6iedse Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal2.png bafkreibnunlresb3jsg2pxvepfn7huridcvmj73fszyo54ghy4e7sdpfvi Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMaximal-ref2.png bafkreiaotugip2xb4csi77nbfq5ns3shcsycwr6gnxbrys6clc4hrxf4xm Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMinimal-ref2.png bafkreibmhc2r37iza5helbebjxtc6qvtb4s7kgf66iblapjzxbjdi4kzly Modules/Filtering/MathematicalMorphology/test/Baseline/itkRankImageFilter10.png bafkreiaqaq6eg2igma3pwwqzvcxru4c3g2q5ixsxotpisradvew56qxc2q Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonBoxGrayscaleDilateImageFilterTest.png bafkreiaoa7f6wv446lhb3qdejvs2yqedjq47a4onrruo2in5t36lpalwyq Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonGrayscaleErodeImageFilterTest.png bafkreiamwjgxwrccw45ezifqpo2cifxuvpq34c2jamj4ybobrvq4ms437u Modules/Filtering/Path/test/Input/ContourExtractor2DTest.tif +bafkreidg3jhkcudxy6hsjsbskzubv6sjzbkufrdwyly3p27lns3r565uaq Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilter3DComparisonTestOutput2.mha bafkreibk4tqhmbtujvrq4irwfq5xm44tobzxqqz76n6i4txw7kcisw7xyi Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterComparisonTestOutput.mha bafkreiadgikxnwpdkuqqfwb5cxjud5iv3w6lhk7gn3rxnabozxtksict4m Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha +bafkreie7amn2xiqlgurlwrs7azl4u2d23vlqfoakoecpaz4ef6z2elqefe Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DImageSourceTestOutput.mha +bafkreie7amn2xiqlgurlwrs7azl4u2d23vlqfoakoecpaz4ef6z2elqefe Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DVolumeTestOutput.mha bafkreiccqgvi6m2ce3h6ac2lw3yrksjecd22ndcujkr5xngq6uptpskwou Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Smoothing/test/Input/itkDiscreteGaussianImageFilterTestNonNullOriginInput.mha bafkreibvkecapgicynipvtocl4hlauraurvge2ulwb7gdmpp6swcjbmgsy Modules/Filtering/Smoothing/wrapping/test/Baseline/PythonMeanImageFilterTest.png +bafkreicxwt7plyqbdjr3uwbxqtvu2fjqtprdmvactzztnkb4hcpj74n5la Modules/Filtering/Thresholding/test/Baseline/itkHuangMaskedThresholdImageFilterTest.png +bafkreicv4umvfawdtgev2p6tksjirrwrhnn52wiczd75lg3piasfzi5j4u Modules/Filtering/Thresholding/test/Baseline/itkHuangThresholdImageFilterTestShort.png +bafkreie5feezitdui6y2jjy5u5xugobxv2ux4ose65vujhtg5hpsmsp3c4 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesMaskedThresholdImageFilterTest.png bafkreibzn3b74i5zezq73duvw7lyswoq2d67tnyqto2vk4azoqmt6l64du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTest.png bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoAutoMinMax.png bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoInterMode.png bafkreicjgfyc4ewexfsvkwteh2nnzvzpupq3cf6gbj3th436jit5q5t424 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestShort.png bafkreib7vrf6g3iz3surspjdc7myzta3obaz7vm7ms25h2xor45dp3oqrq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTest.png bafkreiaapie6l3gbobvkct2c6hryaox4p2pcpuqstoxl43ewxmrgiucbcq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTestNoAutoMinMax.png +bafkreideq7pl54n3rqmyhdigych7wfboz5kge767vur4cll53ybmystiqa Modules/Filtering/Thresholding/test/Baseline/itkKappaSigmaThresholdImageFilterTest01.png bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthMaskedThresholdImageFilterTest.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTestNoAutoMinMax.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestNoAutoMinMax.png bafkreiadkgfv43224uezlnzbo3h5mivcd5kcagi2domkqxrrwuc6fx3gm4 Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestShort.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax.png +bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTestShort.png bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestNoAutoMinMax.png bafkreiaiqtcss2pmzbriei7ywwiqmr72ce2id3jwbcuodecxevzctjad3q Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestShort.png @@ -209,31 +286,47 @@ bafkreib5v6t4wwgohmli4zmvoscdfvl3wqg74tss6n7cplnnvfi7exxjle Modules/Filtering/Th bafkreib4ggikzuopjpjqjvidx4mqq4ogkzsk5rc4hd7vzlxnnmug37g5me Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestFlipInsideOut.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestNoAutoMinMax.png bafkreiagapn4qalqljzg62d2xlaleljab5evfqkpjx7tpcdnmajbmvpylq Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestShort.png +bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyThresholdImageFilterTestShort.png bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestNoAutoMinMax.png bafkreiclkcj6vgvql6axqm4joameb5lh3gumvctcjiwsczquic45ajs6zu Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestShort.png bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkTriangleMaskedThresholdImageFilterTest.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTestNoAutoMinMax.png +bafkreiea2mzggrfpuw2kijudb4cqnrgcwyvbeqvh7ejylpmhugpdfmpqri Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTestShort.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTestNoAutoMinMax.png +bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTestShort.png bafkreial2pas6egwlkcpyiu5t6dhwrzbcn2dmjn34weektc65du3juopku Modules/Filtering/Thresholding/test/Input/image_3modes.png bafkreiaf6axgqa52icrai6ekwvj4ztntjothmfc4j67qsqagahx6queqay Modules/Filtering/Thresholding/wrapping/test/Baseline/PythonBinaryThresholdImageFilterTest.png +bafkreie7x5jrfg5gho75pxvtcu3fgeazyibbqpf2pnzdryppvb4bil6psq Modules/IO/BMP/test/Input/HeliconiusNumataPalette.bmp bafkreicpd66yibfo6o56oawyuyxcc645aqekapzctcuuq4mwybxgpnr7dy Modules/IO/BioRad/test/Input/biorad.pic +bafkreie36scgdx3bgvb2tdulfhwx3s6y7jb4ovzsvdh6d2am6xrt6rmmea Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/.DS_Store bafkreia5wd3xlz66gvwpdnfi5bvpnv2ws2nc6p27toyuhwq5p2hgfthhky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/id +bafkreidp4clligr364foldqsxkrad5kwtmdju5af5asgpay2kebzjvmbkm Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/meta bafkreiapkxryvtcstzb2xhxdx7mj24547lmjk3veforbutwaohe6t7qcky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/procs bafkreibmjfvjkedwz36qfmde6pph7fvdrpj2z4okx5ogcpls3gtitb6pgq Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/reco +bafkreidubmvtxf2s3rc3k47hpcsvc3w7n5j3mikrsklg6zjbkxofyvg6vi Modules/IO/Bruker/test/Input/PV6.0_FLASH/method bafkreicugsxameb7vraybmu7fal3w7wfe6le7b2ovenwgf3zhv6uq6fzba Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/id bafkreia6dezn3wji7sz4edjwxrixhkwo5zju43dmrrf7asx3ckhgnoh4ga Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/methreco bafkreica4q7r7ksbmldhao3poinrgksit4w7meadgh5e7vww7bhyptyjvm Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/id bafkreiaba5gipn3ln5ufagyf5kncyy77uk4bghmu7mi5xuztjkdldv4xou Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/methreco bafkreibwmf3snyrmne4brkvxszoe6f2wcjqvsbs7y73gphpaffpgm6pv3e Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/procs +bafkreie2oos3gwojkqyiocf3li5jwlcg3avgrswcbtlljqfzd4emloaxwy Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/visu_pars +bafkreie5nvtnupw57f7cgu327gcjowyp32yytwqzhvz6t64q66h7c6zlt4 Modules/IO/Bruker/test/Input/PV6.0_FLASH/specpar +bafkreiduu6lvittejbofj5oe7dtz3debf6osh52vicoeha33hh754p3fpq Modules/IO/Bruker/test/Input/PV6.0_FLASH/uxnmr.info +bafkreidhnxxjnfiucmnurx2kcvjo56pse3waxm6yuzqqrsygcknwx5fyyu Modules/IO/DCMTK/test/Baseline/itkDCMTKColorImage.png bafkreiamstfxjy2fiyzoxubq6g5gmp5b47oro6iror6x3ps3zckmje55sa Modules/IO/DCMTK/test/Baseline/itkDCMTKNonSquare.nii.gz bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/DCMTK/test/Input/NoPreambleDicomTest.dcm +bafkreidvhgcecqrku7u63wbzocw52mragf5i4ycbixcon5yohdlfctr63y Modules/IO/DCMTK/test/Input/no_preamble.dcm bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/DCMTK/test/Input/preamble.dcm +bafkreidytocxwtbcum663dk53pgw7dx5dh57bzpqdmle5ar6yern4dxbq4 Modules/IO/GDCM/test/Baseline/US1_J2KI.mha bafkreibzdrcgqyc3xtkxqh7rfpxf5oji35b2g5yujsaiwxltp3kwmxbixe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOSecondaryCaptureSpacingTestBaseline.mha bafkreib3lktbjlrszzl5mzaolbdacndc3yuhsqdsloqtpm2m5pu3ieqwoe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3Baseline.mha bafkreibbd7klq3uhpmfqxbmzglyrf3jwnp5hxn3udmrurnnplfflmoclka Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3RescaledBaseline.mha bafkreiaywvi7sthuyqph4li4y44gmm2lhl6cindt7uruouvixmahnuw3xq Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4Baseline.mha bafkreickm3dtemtmkjzabwm2pk4cguqgetzopgzsctup3bbzv7nmajrgpi Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4RescaledBaseline.mha +bafkreidni6mcuqbmp6rv52v72om24g377nd7bjqcizcv2jiyrmujnecww4 Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTestRescaledBaseline.mha +bafkreicwoy4frgs5faincl6oqr6osu4zgn3dt74iyqphmthj7hs3x2y2w4 Modules/IO/GDCM/test/Baseline/no_preamble.mha +bafkreicwoy4frgs5faincl6oqr6osu4zgn3dt74iyqphmthj7hs3x2y2w4 Modules/IO/GDCM/test/Baseline/preamble.mha bafkreib5e6kni2tdbtaxpz2i77k7hp5gzkztppiuws3ov4yx4dswlna6p4 Modules/IO/GDCM/test/Input/Lily/HTJ2K-YBR_ICT.dcm bafkreibn3fqjxfgyy5zhep6y5xfjqhmqucpwzyz5u2ylocu4trrbqppghu Modules/IO/GDCM/test/Input/Lily/JPEGLS-RGB.dcm bafkreibf6gnnn5n2mhc36uxl37hxs7efmlfvx2vkyue7ctobu2ybavgk6i Modules/IO/GDCM/test/Input/Lily/losslessJPEG-RGB.dcm @@ -244,13 +337,21 @@ bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/GDCM/test bafkreibcgqbxkz2p6jjrs3hiufd2z4cfrpvd6ec76ldk7apq5mizoklalm Modules/IO/GDCM/test/Input/US1_J2KI.dcm bafkreibee764qlmqzvgorju3kfl65szxksmqfxhbhcwblrsfnj7k44fyhu Modules/IO/GDCM/test/Input/US1_J2KR.dcm bafkreibrnnomrtk7hi6hgcke7b4pars25g4teyddo4oazuz3g5kdf6w4ky Modules/IO/GDCM/test/Input/gdcmNoSpacingTest.dcm +bafkreidnpqbiklc2mx45n2bo4mo3g6qh4fybdvhcpdtge55pmtjjmsercm Modules/IO/GDCM/test/Input/gdcmSpacingTest.dcm bafkreia27zimyd5h54hfvrkl5qbyuhscexgszud6hazqtw5pxzvc2clgzy Modules/IO/GDCM/test/Input/itkGDCMImageIOTest3_mono1.dcm +bafkreidvhgcecqrku7u63wbzocw52mragf5i4ycbixcon5yohdlfctr63y Modules/IO/GDCM/test/Input/no_preamble.dcm bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/GDCM/test/Input/preamble.dcm bafkreia6hxgzn43ez65h4tren4dxlcoheh665pfaq4rysylc6tygazztd4 Modules/IO/GE/test/Input/c_vf1122.fre +bafkreidcnq2bohnkvzvmexfbpedg4xlxvov77a2nqcvoyfn2deu2eqptmy Modules/IO/GE/test/Input/c_vf1123.fre bafkreibak73qruudepz3da3ipb6r452dhwp2lw5tgxquiorqta2achjppq Modules/IO/ImageBase/test/Input/Test64bit.mha +bafkreidpj7erazqcplir7djhbrk3mcx4aqukepy7g6gchn5fwxo7y47fi4 Modules/IO/ImageBase/test/Input/Test64bit.nrrd +bafkreidgnpubq7w7v4xzumenhdzibee43i4tjkwfokm63zhrpweizmk3tq Modules/IO/JPEG/test/Input/cmyk.jpg bafkreibhcntilukv7q5hj7xprmjzkjxz7l7noi4p65vzv4xmxzswuleuua Modules/IO/JPEG/test/Input/corrupted2.jpg bafkreia33a3mrs4scp7ewmoi4lbxo4vels4d45ppyqe6dyd75ua44vzoqu Modules/IO/JPEG/test/Input/corrupted_image.jpg bafkreibrrcuodrmpfgrzimrh2xef6abwcxqagt5di2wukbksqtclkjhtpa Modules/IO/JPEG2000/test/Input/Cevennes2.jp2 +bafkreie7ckx33z5ohtkxtysa7qbk3ib4chgwt6tvq6lyqxa4zhifnkfvui Modules/IO/MINC/test/Input/dti_sample.mnc +bafkreie2jsgmqh3xmhqxbbsszdhqr5gp2vo6j46mboritk3no6ras2dav4 Modules/IO/MINC/test/Input/t1_z+_byte_cor.mnc +bafkreidffnmwmm2t2cwfmdlzuc6cnc2rjixrns2nriebv47ezsublspupe Modules/IO/MINC/test/Input/t1_z+_byte_trans.mnc bafkreib5ptk434cx6i7nmke65y2ckgxztcvc57harleltk52spnumk4cka Modules/IO/MINC/test/Input/t1_z+_double_cor.mnc bafkreibdmkjpimddr22mbj6j7okd7ymkrgpjllzwcy2a2scpxmqxskeqqi Modules/IO/MINC/test/Input/t1_z+_double_sag.mnc bafkreiaz4kdhdvpcrvnzqhtmar6pibzbk5mw2tu5dpds4iv7gddy3ucsze Modules/IO/MINC/test/Input/t1_z+_double_trans.mnc @@ -263,20 +364,32 @@ bafkreicgfqmuyzminfrpms4kusktfslyy62bhype6qyajeewuw3lgpjdsu Modules/IO/MINC/test bafkreiabiubax3voswprcugsbxs36r3eqf4ddovehijezkcnqbxssrgoey Modules/IO/MINC/test/Input/t1_z+_long_trans.mnc bafkreiabyqzkqaxxceyactghzurhcqvvi7bkb3fmav5qkksvp3fh4myscq Modules/IO/MINC/test/Input/t1_z+_short_trans.mnc bafkreicjze6ax27mhh6m7x2ghuiyz5hq7luhlhfn4rugzfqnwfb7nqhuei Modules/IO/MINC/test/Input/t1_z+_ubyte_sag.mnc +bafkreidr6vyg5zcckl27rs3yq3qtchitldb2vdi2anvdrzp34fvsbqb5oq Modules/IO/MINC/test/Input/t1_z+_ubyte_trans.mnc bafkreicheaagepok4pt5uyxdqr62eokumosn25234ynrpx4ak4ewkktavq Modules/IO/MINC/test/Input/t1_z+_ushort_cor.mnc bafkreibfgldbyi7lcw6bursn5stmca3dz6f6j35f5yhrpor4sw5l467rqe Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc bafkreiafcwcyfvtn6nbgoiuxvzvyjfiqqzsksohzmjlond777cnmydztvm Modules/IO/MINC/test/Input/t1_z-_byte_cor.mnc bafkreibybxs4h5o5dooapy3gqmurj5ddfns7hp7jul6e7r7kjaa26eawmy Modules/IO/MINC/test/Input/t1_z-_byte_sag.mnc bafkreiaqvynjndyvxcni5q5o5bciqragu53ayuunoxrp7utvxu547k5n5m Modules/IO/MINC/test/Input/t1_z-_float_sag.mnc +bafkreidbsdn7lbisbpjhjyketg7kz3zug6ots554uamyyye5zqxtkz5kba Modules/IO/MINC/test/Input/t1_z-_float_trans.mnc bafkreic3t5yr3wbdkwpzdxfyz3eorbbn3mtis5riv4zkokjkmdoeavhjq4 Modules/IO/MINC/test/Input/t1_z-_long_cor.mnc +bafkreidwzyykzadogd6tf2lorvog5y3iodxtkmr2aplnak7d6hn3w6oita Modules/IO/MINC/test/Input/t1_z-_long_sag.mnc +bafkreidiflcifgn2vzyyeunm7ljo7tt2rddfiwtiytvauflnfzjboxbh2i Modules/IO/MINC/test/Input/t1_z-_long_trans.mnc bafkreiapgvyolps6dfu63ec2jfuziqd3oi4qrgm2girzwl3afdvbepm4gu Modules/IO/MINC/test/Input/t1_z-_short_sag.mnc +bafkreidyjfkccr63jilailqqxneybjefvqlaa3gniligiicqx3f7m2ewoe Modules/IO/MINC/test/Input/t1_z-_short_trans.mnc +bafkreidndsua3kbvy6qkxwo3p7tsca374bgn4zwb6l2pqpr5fcwpcgnhee Modules/IO/MINC/test/Input/t1_z-_ubyte_trans.mnc bafkreiat4jzfu5jrpjglujdxjxwx6f7w2znzay2nrm6zqofrkcuzbqxwia Modules/IO/MINC/test/Input/t1_z-_ulong_cor.mnc bafkreibrh3pnqyhhl7g4r4eappzh6g6omkucngbpd5u3nva2ny6nxih4jm Modules/IO/MINC/test/Input/t1_z-_ulong_sag.mnc +bafkreidlzpkx2mdyg5ynfxn3qjlwgncq46gpcnwwcyjlucejcwngbgght4 Modules/IO/MINC/test/Input/t1_z-_ushort_cor.mnc +bafkreidaxboxpcib4wux5egrgisi6jihgk3pwjr6msmgthfwdgnulhma7a Modules/IO/MINC/test/Input/t1_z-_ushort_trans.mnc bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/Mesh/test/Baseline/sphere.fsb +bafkreid2dnqvkrzzqlgdom6r64cbrzc2fwhscjx7qacazuq6sloztgf5te Modules/IO/MeshBYU/test/Baseline/cube.byu bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/MeshFreeSurfer/test/Baseline/sphere.fsb bafkreibnvnafbqexjgwjjqtyrdofdb7lalnoygcfszgfyn2zgpxdv55jne Modules/IO/MeshGifti/test/Baseline/aparc.gii +bafkreidn2mbuqydg6vxy3hyhpmokg7fsfc6ku56ch4cnyspqt5xrl6d2eu Modules/IO/MeshOBJ/test/Baseline/box.obj bafkreibvqxc22xbozkv3t5a6dyy7nojn3pysbunjfbgnxpapuidkpeoifa Modules/IO/MeshOFF/test/Baseline/octa.off +bafkreidmx3fi4t4adhdsmbg3urdtvgpsjg64njw4c2o47eagevymtazpgm Modules/IO/MeshVTK/test/Baseline/hollow_test.vtk bafkreibltq442d4zfqxi4ffk4qitvr7wmbuwiytnlvl3j2t6bzwci5c33a Modules/IO/MeshVTK/test/Baseline/sphere_norm.vtk +bafkreicuj5t5m3n3rn46jact6ey5mfhceximvjyc7u7wsaytgew5iem7pe Modules/IO/MeshVTK/test/Input/ironProt.vtk bafkreicbyipbwcnhtlxdvxzz4mwunj6payye5tygydcej7aw2cyn6l6ntu Modules/IO/MeshVTK/test/Input/sphere_51_b.vtk bafkreibjy43ezabpmfhbm6ewdhm54gitzhinrduetz75dksvm6eiqf2haa Modules/IO/NIFTI/test/Input/SlopeInterceptUCHAR.nii.gz bafkreibkzncn66f3zg2rsylhmesjqtmgjvwqgfosfzbrsfbpc5vttkixqu Modules/IO/NIFTI/test/Input/SmallVoxels.nii.gz @@ -284,6 +397,7 @@ bafkreiay4wgc2thnkkrellosm7htbgz5ooidzkyysheb5k477zqyfkbbbe Modules/IO/NIFTI/tes bafkreiamyaqz7uybrjgfnnnidw3cz3zcap335znltfgilkbgi5wqdxtxnu Modules/IO/NIFTI/test/Input/SmallVoxels_nosform.nii.gz bafkreiawqehmd75yk334c7pxcjumrdw4ide2dgg7x3ctopotkzyfz7cjva Modules/IO/NIFTI/test/Input/xyzt_units_test_scl_mm_s.nii.gz bafkreiblwwaa6orfdgxfbgwzsx4fxehs3nehoj3kcgjuyn2f4v3kxfns5e Modules/IO/PNG/test/Baseline/itkPNGImageIOTest2GreyAlpha.png +bafkreidfo67pypdutnvxpuy77e2so2shtiatnsnjgqpojfuvj222244nzq Modules/IO/PNG/test/Input/GrayAlpha.png bafkreic73nr3gc4qyk2v4q7eflulowwfzn3rpfhvt2ci53erkbjlt3wfvi Modules/IO/PNG/test/Input/HeliconiusNumataPaletteGrey.png bafkreictimjuvz5semh7yd44svdwwpszwkvc5enrdmr3vugloctsjgq4gq Modules/IO/PNG/test/Input/cthead1-257-corrupt.png bafkreic66j47xtsk7o7f4uzlz6w7faly7ixixyup4nizmrafazz55idc6e Modules/IO/PhilipsREC/test/Input/Test_Cardiac_Phase_7_1.PAR @@ -296,18 +410,29 @@ bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Modules/IO/TIFF/test bafkreicg7h7nqzyiia7dekwwhp6ini4klwavu7cs2werjfkzqdkoavuxi4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_PackBits.tif bafkreiawwlhu5pst56okylhogxdwswqxf6g27ipzt4l7bg7e4o2svaaii4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG.tif bafkreiarqtxlwwbtbz67ejmmy4jfcajjfersknnlh2ueudamjzdxca4gnu Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_1.tif +bafkreidssd46txb7ijg752ecxxisr57ia6bajjcqulh54chdvgn3ggcuwi Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_50.tif bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_LZW.tif bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_PackBits.tif bafkreiawjlwvba7r7cofo4ld5cdeqed2y32iny6wlpwzm2f7rhs7o4vdpy Modules/IO/TIFF/test/Baseline/rampFloat.tif +bafkreidviawir2jjupcqgf5dooevjazhlh3hslzrakhak2ljacrx6zmk7q Modules/IO/TIFF/test/Input/HeliconiusNumataPalette.tif bafkreibiojnnkmu6oqycherjhopy7i6nczwk4od7jflyr7fwcxcy36apqu Modules/IO/TIFF/test/Input/cthead_oriet_bl.tif bafkreic6yjaz5ptkv433pvfey3rd2zv5gyjilfmyg7grn75zzet4nknojq Modules/IO/TIFF/test/Input/cthead_oriet_tr.tif +bafkreie73tuuxe5r5jtvizilka4duinbsirapazzip2opf4uh4y63anlqu Modules/IO/TIFF/test/Input/int.tiff bafkreicn5vtm2e6ypi3lpuz6my7dx7wxykqvaqmvph6wjeoqttkdp4mo3q Modules/IO/TIFF/test/Input/jello.tif bafkreibyhe4flgn2jcgg3ykqeqihy6yplog47ty7x5rycwibjlu7xpw6sq Modules/IO/TIFF/test/Input/ps-separated.tif +bafkreidxn3xdiqzj7sef6tvv3uzub4wrruzbd5oa4hw33ym3s2lbdwhgpy Modules/IO/TransformInsightLegacy/test/Baseline/itkBSplineTransform00.txt +bafkreicuj5t5m3n3rn46jact6ey5mfhceximvjyc7u7wsaytgew5iem7pe Modules/IO/VTK/test/Input/ironProt.vtk +bafkreidu5ycakcrqe6gu6smbgnnlsj4j7oonc3x44din6uw7mhwjqfkluy Modules/Numerics/FEM/test/Input/2DC0LinearLineStressTest.meta bafkreiaxoniq2r2lubgmgw2y6jgb52h37mgtvyft23aau4kktfis36ggbu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralMembraneTest.meta +bafkreidz6w5mwbm2wl4j7oa6d6jchw3tqzddq27zfmet34eka3iag72hwu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralStrainTest.meta +bafkreidhpc632r4vldssaoru6hny5qp2c67jt7afdj63nc6jounijwa73u Modules/Numerics/FEM/test/Input/2DC0LinearTriangleStrainTest.meta +bafkreidt7u3qukjbc5tlkb7rh632reg72d7phuezu2jlylbcqum5ukc6ba Modules/Numerics/FEM/test/Input/2DC1BeamTest.meta bafkreicrc5iflantef32ytxybjpyqqxqj5korxonnliggtzrgib5jlzqgi Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronMembraneTest.meta bafkreibzitvyck2r7vmxghb7emmnwi3yhdcp54qefrkrdag4ajshkf4rt4 Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronStrainTest.meta bafkreia4gfypioq6kzb6xe5tqdop7dmdnmr2mk5cghcsszml74zu4lcm3i Modules/Numerics/FEM/test/Input/3DC0LinearTetrahedronStrainTest.meta +bafkreidh27czlsr6dhfle4brtvursfqhgqdvd5qzxmosamzlizyiy64r7a Modules/Numerics/FEM/test/Input/LoadBCMFCTest.meta bafkreic5kelopijimf2io3ism7o2ow57ek77drgdxgtff73zyzclqwwl5y Modules/Numerics/FEM/test/Input/LoadGravConstTest.meta +bafkreidnaiztrxdfu7hdenhhzcbwi6f2ope5qnlygasuasmpsyh33vfrku Modules/Numerics/FEM/test/Input/hexa2.meta bafkreibsmxa3bguccx3pl5mmum2ulzm6swk27vp7jhnf4v7gxa7wfmq4tq Modules/Numerics/FEM/test/Input/hexa4-grav.meta bafkreiaqxndb33vzrmizj52d2azb6x7zjfs7eiwiwjilfd2tew73csmx5q Modules/Numerics/FEM/test/Input/quad-lm.meta bafkreibeqqq6klcguwmdpvu3kwrrvj6lhf664wulwj4trpuzw6fmanuwha Modules/Numerics/FEM/test/Input/quad2-small.meta @@ -320,21 +445,28 @@ bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Modules/Registration bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration1v4Test.png bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration6TestPixelCentered.png bafkreictwu645zxdtx2ky5pjckpif5i7figztm6mkw2xxfvr2qyjjukxk4 Modules/Registration/FEM/test/Input/PBNRRMesh.vtk +bafkreid523zj6igydbbhw7v3q7aqn7365xe2zgouici5j3a4qkkym7igay Modules/Registration/FEM/test/Input/PBNRRMovingImage.nii.gz bafkreib3qwnibtah25trmmn2idtdsyqz65ldqip4luszyz2vwwtqbqo3vm Modules/Registration/GPUPDEDeformable/test/Input/LenaFix.png +bafkreidskmlvfkifmtsc25lbnpnrrj376zxbxyieqa3q3qts24iyphlgde Modules/Registration/GPUPDEDeformable/test/Input/LenaMov.png bafkreibd3ic3fujyogccnuj43gnnnsywww6h3clxkoetgrglwogarnwmrq Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz bafkreib7mbf4mtwapdaxgl3br4owsit6nflqumlacqsovxq3463yd5rpp4 Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz bafkreib23kri5wmeqn6vackttmgudyvewx54576juctawn2wzuh6jv5api Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S1_T1_F0.nii.gz bafkreiabik4os7s5pndybppzakgsbakt42j5r34lajqqbfotewtmz7yw3a Modules/Registration/Metricsv4/test/Baseline/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz +bafkreidumkzsr45agxo6irb2yckcz7phywm4ecfp4xojhkqfeb2ui5hq3e Modules/Registration/Metricsv4/test/Input/orange.jpg bafkreicdrmvelsuyq2f55h7k6irrzsafycbqyyshp6l3g6uce7wdtfi4zm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p00.jpg +bafkreie4fjaroqeplc7mfcednrikg2fbah7xzm7sc47ytdk5ijnl2ph6te Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p05.jpg bafkreic5ii25egocjcsqw6w2j3owhojlpmhzenaxedyspwlmdtu6bt6x3e Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p08.jpg +bafkreidjjnxtxrdk4kxpevmp4cpantc7pw6e4jy6gfg7zp6doo2lqqrt3m Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p10.jpg bafkreibdrboamvsyp7r3frx3imnk2dtf35o2suif3ylrreshoaeu3y5upu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p11.jpg bafkreia2a7lbarlaac2z3ez3gq6bm4liqegmrk5xoup2mbtowa3oloq2xq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p12.jpg bafkreiatp622wdtsnbmlkirmabveozoondnj6winvspn7hrdaxk3sbfb3a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p14.jpg bafkreic36soefecz6pc2vdznnppp3ef5fb7ivgt65bqqwnced2rxdvswb4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p15.jpg +bafkreid3p2qyh55jtwvswhdqnfs25kjw3bw72tw4it3s4atgqshjjpuh4u Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p17.jpg bafkreibjeipnng7mze3ati33glnhvo5cxvxn5saw2rtvhotpkwkvk5lzrm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p18.jpg bafkreic2znw7ldy773onhvvuvo5wetmttjsxkedf2zn2kgvss4f7tcrhi4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p22.jpg bafkreiaoe734njdoxj2ehz4mait6lob2ywtdolzzerghb3u3sfnahu3ze4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p25.jpg bafkreibp3vzrwpmbjpnv3ijobr5pwnk7cnqtt3y23zseuho5hwr5dkslom Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p26.jpg +bafkreidce3v4wdkxdqp5avmw2w4blllnqmgiqcemkry3fguli3h7zc2pna Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p27.jpg bafkreicq27yz3am4sq4knekccsf5ltav3ox5mcriozjwjcrj4qflsu6k2a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p28.jpg bafkreia7fyci7apdz2dimupaj66poqrps5bvbldsnjbmt365xfbiyqf2mq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p29.jpg bafkreicb66lnbsivlwpw24wmguqjyoxh5nm5sznej33fxiboonqyx26pem Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p30.jpg @@ -344,20 +476,33 @@ bafkreibrhr2k7zehscingrbntexadvupg7ukkl3ctgt2yum7wfpnbc4tca Modules/Registration bafkreiawtqvuf2cnwihcbim2ytxqx5hkjtaizl736c3ob5z3w6krwa54by Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p39.jpg bafkreiahfoxrwff7kuy35fwruhgusqlqyszft7tvcjjy6sk4tybp5p6i6m Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p42.jpg bafkreibqllfcczrwistivweqtudjm5enjrb2nesuwn5dbpwqgwimhm6dne Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p43.jpg +bafkreiddnadxefwky5zsv5y623yclqjnh34eusob7h2eotp2m4hd44m7hu Modules/Registration/Montage/test/Input/10-129-C_2/TileConfiguration.registered.txt bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_inf.nrrd +bafkreidrpa4m5ncqt4npoqxby7lpcfxfz35iccsi6rxeecdcohltdvvupe Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_infN.nrrd +bafkreicwnhwnk3ogvn4ac5kipwcsgdlbvhevgbksawg4xfg5cc43nzyjv4 Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_orig.nhdr bafkreic42uwrp7ypzu36yemb36yvdrq33x2tcchzuwgmup3urlcbha7w4e Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_origN.nhdr bafkreibpppgh47od7bzyebdfisqg27mxpe4e52odwz6ockd3mbfg36ryse Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p01.png +bafkreidae2pr5ikpzq23agmh3mdajc72qvoq5zncwbgaorktezirqtooey Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p02.png +bafkreidpjh22fj6dfndyomysbuxisseppr6m2e2xyaxdjkxm7fyu32k54u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p03.png bafkreiavtmplnifw6xaavywwoy7k2ejefppdh77ftpxnzbpshgz56k4sta Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p04.png +bafkreidzy4n6agse2bsnrqag3b3hdmcj2jmseuj6jgtgqpg2zmbrecwt2u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p05.png +bafkreicxgco2gp4jsbgvrnmurv2gwgymez6o6dn4h2dpzvlndbrgoicvsa Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p07.png bafkreiaiq4csersp2jrg5sp6wzphs5fcq6gi7ajyv7v7jyzadmdoed2ori Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p08.png bafkreia6j6pdpmcwv5hnrihzq4gbcr6ktrm3pgvw7re736m5e7637iwkza Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p09.png bafkreiayiabphhyg5w6xbrpa4gludcyb2a66t3fr7tnjcguwkl6u5rxx2u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p10.png bafkreibjh34mu4wxjwvxozi7mjrzj56pqurcqqsuujy3gdqi5o3efezeba Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p19.png bafkreiab7fux6wvm5vhssnkzeqhybvq4qjrle4jbg22pmjt2iv4fcf7ax4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p00.png +bafkreiddwqxd7ln4cxe6n4v473m7ogs24ughtbmtznc6i3mvoduo3pnqz4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p01.png +bafkreidoizp5mu3nq6hknyqqnbny74o565pfwx7vm7i7tbcl5qrjvnqfsu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p04.png +bafkreidmb6op56j2s5djteoaww2r4hcwnzawqtyhbb6lghmqlqjg3etqoe Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p06.png +bafkreidvglbh3ueb2vyxov5x36zk2uofvhfmnkpsm6gukkk2twnc3ny4lu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p07.png bafkreibx4q4rh6mr6urhlroksxizsh72u3hpul6rmcxzipfzibdbp4pdm4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p08.png bafkreia6cjtobv7fgfa7ehfqptxr244r7ut74mhcd3qhl2f4u2pcxvtedm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p09.png +bafkreie7zbpqtmuwm2ouk24n5vedfk53j5vaabnx5t3zagrawnltytce6q Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p11.png bafkreibttwjptzunsfj2unxflcvqmymtstlcskm7ydb4dryv65ufdpf6fy Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p13.png bafkreiazi5mfjvdgxjnqmo5l3lnbv2whz3l5tsxd7jnsx3cujqyys3zu3i Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p17.png bafkreicjo6mko6kzhfzzll3kor6ckzj6dmc67yhpuybr6efkhyzh5qlhg4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p19.png +bafkreidv6fva7572fl4lcllz6dva7a37dq2yupmcfodkl5cj4mctmsqe3e Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p20.png bafkreib5xxo773yaxapme2qqsfusm3lt6fm3rawuu3uooqo6kjscwog3rq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p22.png bafkreibqg2htebrransl5qiq3lt5bwbayq4g6uabnc4h7ynmcttxm47fra Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p26.png bafkreial3iqdryttg3kv5yc3l2q25zviqxxogw57oawidix7hj4r4bnmhu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p33.png @@ -366,25 +511,41 @@ bafkreiclk5uddh2h3w4bj223ytk6vbwqqlfdw3bls2u3l6w3pt5emvszbq Modules/Registration bafkreiavkh7luxjlqozuirrvl5tnfmlwimtqzf34znydzhojxw6eiqkgay Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p39.png bafkreibtzdx3xhehwc45c472np54m37wlnoiatjvq6f74r223ubxp2h3a4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p41.png bafkreibbe5yihhicqnllezne7k45wtmfdk6k4gxtkl2tc5xyqg47cywg4m Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p42.png +bafkreicumkhsbm7b2qqaz2h6vcxfn3x6qcxlhtwhss3xq5ixxlzmqlltxi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p43.png +bafkreidtj4yor5k4dwsk6buwuty3jyqyldbiw4tshl6tsxemugex5i5dw4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p44.png +bafkreieanuvjvfs7nfkptd2npk7yz7yoe3bwxl4wgzsl6ttvpe46z73yim Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p45.png +bafkreidxoejigoarcv4ea3tub4fua42u3ccamq7rblyvcyca2i2xgqkrry Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p47.png +bafkreie5nyzqje3wiucz4ucdtlo5e2ouvdm4nv4yumx3amr4dpyi2rypk4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p48.png +bafkreidyx6kle53vfwnkfprt7mlqvek6iau463lpnpjp7l7ieayjt6dmjm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p50.png +bafkreidnoxydbgdxujslf43tg6wfjpcqqynzzlvpbhww3yvxphbcxgwuq4 Modules/Registration/Montage/test/Input/OMC/FlatField/14/TileConfiguration.registered.txt bafkreiaorpzgu576pu34hoaawdkasyeuod7d6kha5nsxsmxznzlqb6nndq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p004.jpg bafkreic5zjhbtbpiuwzgo7pg4xbeu53ih4orxwxrgkvaufclu6qi3kbsve Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p005.jpg bafkreicjilmeofxufydcshjy66cs23jtbtdqy7dbqnqfm7gwxx2vxskb5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p006.jpg bafkreic5zq74de6pkg3iel4djy4f4hu7gbmgdoe45ff3fibrw24hgdyh44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p007.jpg bafkreibgxyh2pocwad45ludqngphkdii63pidocjbkacrrlr7ch7bqrzpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p009.jpg +bafkreidrkfp5ku3aayqhr72ymlrvjvbwxexoeosknqf6ws53s6lhpdmxyy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p011.jpg +bafkreidno56sfkr4dhn2u72r6zcucaacphtjtp5y2pebqmxfi3orj6wwiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p012.jpg bafkreibbtainn62dqmo2k3elgvwu3cgtonhvxauwpunfacqjohceutecsu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p013.jpg bafkreicjdlem5tbctfbcpbtd3rrsmietnigo4v44n2zm77c2rf4mxiur3a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p015.jpg bafkreicugz2rpjmm2xh5nhtdvjpp5xrt4uzpfj4nnjfdpjy5p2zs3tz5x4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p016.jpg bafkreiajmsrloxodkxc7bhdxijctn3crbw7qhtxrvrauahl5kllnxsucim Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p017.jpg +bafkreidqby5yoedmkake3gpzwsns6523ehan5teymclc6k46li55xtftd4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p018.jpg bafkreiaimzwncs6txl7vsgw46xfqmfidwu2dnvpg4it6zlifvi3l5b5m5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p020.jpg bafkreic5qnro2zxngsn4cgya5k4wpq6k5hzumekbxyzredo2jspavirf5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p023.jpg bafkreiazgdkdhjht64qdomzck52ebtsolwcddka3jjmirrs4xbp3j6x2uq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p024.jpg +bafkreidj2vqkvme7vtmmbuhjtzes3y65omkm6lppda27ipx44zdnwustvu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p025.jpg +bafkreidyp4bhlje643o3hgokk6myz3yfccfqqwutigdwd3zag6rg7hpi3m Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p026.jpg bafkreibteje2b73ued3mmbp5oe6egw3tbpj3rvm3q5gctjqgrbclpjhzbq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p028.jpg bafkreicl24aooy4evxu4mds3vlxx5edms5we3tht7hhncn4kdohdjuip4a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p037.jpg +bafkreie4fmxd2grlaqun6owdtbkhfaf4miblywmquhhooozphk2kitm4bi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p038.jpg +bafkreidajnnfo5ultptfsmxsn7mv35bvz53q3oadkaelq7prnoyinicszu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p040.jpg bafkreibh2r6pk6u35j2ioubsxbbztoeo6ltfmuud2hhwyfaqlte57fgihe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p051.jpg bafkreiac2qnwsfezhcn4ayicxctrxge6anaebhugogrradmozxsonrsvzu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p052.jpg bafkreicccjmbfty37d43qzxsxgexzfbhuo2yw3voxai4bxq7gsmmeeuedy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p054.jpg bafkreibtatnvwxssqjrb4fedb5z6w2q6chysyzk4qx5rlfz7ooiywvfgny Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p056.jpg bafkreib2fvkt5jar2lh3aqrwgzs2xqbj7npelv3ywhm7tsseh2kg3v7hwe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p057.jpg +bafkreidsctg7pqbn4bl3u67nuxszoqobfiw2g3akq33sl73l3hgkrf7z3e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p058.jpg +bafkreicxhj3npuolpizc4mmb4i5pwvpfnq2yycypdu73cwlcudxqxokejy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p059.jpg bafkreib3v5vzazy476pyif47elmu3pw7js5uvfjyv6e4jdlfk2vwm3znpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p060.jpg bafkreibmketaxvhnxeurylbxgxicaksjbbyv4dr7xltbzapawqfsc3eaje Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p061.jpg bafkreibfnh7e2qtcupfpdealjm4wblq36oc5im4c2o5srn6kfnt7s3yo2i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p063.jpg @@ -392,8 +553,12 @@ bafkreiaaxc36ewgwitoymz6t5iilsnyk6dz4hgenuv6wuwpe645jutot4q Modules/Registration bafkreiajgq4r6np3k2wf43juxxhoo3npbwpqd6ol6crr7geylrboniskay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p065.jpg bafkreicrczfjrhqlqsivk4c2lroj4gk23kk2bcd53otbjkudawazxz2ddi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p066.jpg bafkreib7tqavgxol2wbyub3mhqlqhfanl7s7fnmf7isbtqwv73rlzg7tfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p068.jpg +bafkreidolhfq6h4hucibmbm2buwvkmdajeht4hjlizcnwcmgr3j5gjhg64 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p069.jpg bafkreibemfy62f63o5u2hr5e63s2en57slx2gensjghlyumv7zavunz5ui Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p071.jpg +bafkreie7jdjb2x2x5etoyoulfghzxtx2ul7smjjth34262soxpdy4deose Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p074.jpg bafkreic7veiqlnct72ruyc4of6mntovlbdcwjqufaw7fusm6mhhs5igoqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p077.jpg +bafkreid26cu5djwu5zrwdvphyrhvn5djucmip2gvn7v5cxwsioee55slla Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p078.jpg +bafkreidxgrw3usa5ukmjfd5tfpfax4vqjujpykpdrhgxwsonm2qyg657ee Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p079.jpg bafkreibe7zf6r24xjedgerxxbimk3je4fnb72prrzamlkt4cxpabvw7qym Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p082.jpg bafkreiacm6fulhjdufm5wuhaz7dz4rmh4ncmy4bcaxzop3wgend663drn4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p083.jpg bafkreicepchlzusia6ui7ixdqiykkn2xqbftd6dpza6gipsfr3puvxec7e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p084.jpg @@ -413,12 +578,18 @@ bafkreicrxdsjmoogonsok6kaqecaqief25p7izn7gpyzoncdllkcpop4lq Modules/Registration bafkreibtbvbojri6va36qi5rpjtpjanuc5fkaah6ijxmjovlwji5j35gv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p109.jpg bafkreiblru7f3x35ngmuxm7s4osm4obgmg36egmxnzeug3t3a2kixu4v7a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p110.jpg bafkreicftlccxcxesxsdwj3hh23scxbdwfkka2iddx4shjpdxeawqz73gm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p111.jpg +bafkreie2puervvrlp5hk6645oxahm3cxytfeeg744gcxqd4lf2lqlehcfy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p114.jpg bafkreicfi3j6bwctbypekiznas2ff4kzdmnfqiihxl7acuv67nhkyjhuka Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p117.jpg bafkreiblyxf4zc4tcdkbeyoh3bo7mw3xici7a44jickh24yhwphqq57cl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p118.jpg +bafkreidhs5kasjdlu7po374ac3byewfatl33d2wjhpw6smvfszjmpwtpma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p120.jpg +bafkreicy2w2w7kjuve6236bjjabeu3dfz6wrcmzithzmvyzc5wxfdvvlzi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p121.jpg +bafkreiczj5lkpea3wc4tx7u42ijzn7imuzrqrvi7rdjzz6z5j36onpqkcm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p122.jpg bafkreibpadkezm6nygus7vaox35xhmfr4mbefrp6fkkjdb24af7h5betwu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p124.jpg bafkreicmsci2vmkx3vq4jdkehcsffo3kyff56rou36kjmonauxmoqnxlxq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p125.jpg bafkreiat6i35mejotccxzj4lgxnu6ikizkpnaaccq2hjflmeux674fmbma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p127.jpg bafkreicjsgtk4qhirmkblfy7atjurh3ptlg5wwfttt47wbt6elfkyqniz4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p131.jpg +bafkreiebpiefq5f2qaesonnvlxxstupajw4qkzz3cqnvo5d5p2d5wdalqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p132.jpg +bafkreidyu3gfvpt7z7ozgmstwbj3hozc5c6g6lvobsi674ikeknik4q7my Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p133.jpg bafkreiaaxp65mjjmabedx2lkdpaqwls3f7m2twwep6bluklekvomhb6wgi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p135.jpg bafkreialee3e62okzzm7m7ofwhny6bvtgoegh7kmpfl43mu7j6yzt4yvay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p138.jpg bafkreibm7tey5lt3kfb3c4oii7jzfwkxha2mu4kavtarcvneafxlzcc77y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p139.jpg @@ -426,51 +597,76 @@ bafkreia5pzs2sbyzcqmv7hgira56hpkazmdfabtff6vt6k4wmzhj43asjm Modules/Registration bafkreicq7yyl4dc6pue4jiiq7guzgpcol2ktz72haa64shpt75p3sachki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p142.jpg bafkreib3bjpx2xw2fmdqlnjopiv6lcrdkqgen6re7zjdaiwwzlllagrjiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p143.jpg bafkreibttgxfy3l6k3e75qjtoamtx5f3uwaeqx2csdx6oekwr2bh7fppea Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p145.jpg +bafkreicxeewfipjftum74igjifycrw3aq7vam4nhncelokpvwt7p4pbhi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p146.jpg bafkreibvrbam32thgpzu4oybnvvbiropa4giwqvpr7dt6jduycrln3w5fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p148.jpg bafkreicgo6uuqvamastv2uwradagudf42yvq54tbe2n5xqrpb4cryidtnu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p149.jpg bafkreic7oufmbsdprhy2qvkjmlvqvyrqdyxmohppbxjhznrssr5dogwnkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p150.jpg +bafkreidyt2gqbeh26fidetmoghpznrzxcwhakkd5tfsyc23o5vhtdpatfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p152.jpg bafkreiba5d2icqcsgapjznjp4ysspvw3xgsfiguesdh44c5ahmy2egsbl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p154.jpg bafkreibqpl4fliy4khbimysr6jw4hzafykazuwner5v6ue4hglot7eu5je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p155.jpg +bafkreideuxwjwgjfwqsavkssugcl7jhceo5u4pl4mfesm5hd5wo4igmucq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p157.jpg bafkreiacz5odzgqhql6aidkylwoivx7yg6grx6vmcsifsgi5mqnllmlepe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p158.jpg bafkreibyecothj2mfftqovxkprgjq732chnq2437neyjjgfjujo6qfyizu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p159.jpg bafkreibuqi2oa4pyodz6ogtc6mnxp3xi6pudzr6eapu7g2itmiemjk5mfq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p160.jpg bafkreiah6l73blswn4i6ksmjhjunz6cn3bhntvcgcwrqxn2qitkct2thwa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p163.jpg bafkreiadw3ym4nvmgszvdu3g6quiid3qfdpra44vpxfqli5kmu4jyoip5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p164.jpg bafkreiazk4o7r7mxsvqz4zm6ykzkuerr3b5rgsyhfjoalg3bqkitmpi2di Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p166.jpg +bafkreidt3kvzoluz22c3nbiieh6tdlm2gdh6jq3empfpm2vglkb5uc2cee Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p167.jpg bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p169.jpg +bafkreidx7gl2vqozh4e26blif4sp3fmj4ugxcmlvi2jkptujbexx3jffgm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p172.jpg bafkreicd3f62eym6iax6avtrutsbkpwwpsi67mu5g5qyrhhzlscd3mbnnq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p178.jpg bafkreicda5gbucmr7jwp66hxl3rqldyltkspujcssxfqyzwhvcpqv5toi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p182.jpg bafkreibi77qjk7zkdscudpxyzowecsmmgswxxm2xa7rlhtz7d4pxhtgxae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p183.jpg +bafkreidocp47drn3i4p3y632ovwhg6peuave5ozkr6nyatxjayggqhc3iy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p185.jpg bafkreicapwzim4mfjsgcdm2h6j4b3l5idpo6jw3f4lxtqi77frwryl4ugy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p186.jpg +bafkreie2kqmyk5j7xhi4pxmdw6w56bet2q2cc7io7kpo7hbocgohfny2yu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p187.jpg +bafkreidtkmtnks3eejc5wkvzb2yb3josvjpilms64ydabhwso2uj4tswdy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p190.jpg bafkreibzckxuoilm7msm5aszimi7bhzxkrk2w2dywrw3m6slcrkh2q7zra Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p191.jpg bafkreibmaqe6kp75az4xhmeityxxvjjdgfshfayhhc5k4m6gmgity6j4pq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p195.jpg +bafkreidy3mjlz37wwfwppxwf7piyqytqln2ktfy3oge7dp22comuwz77qi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p196.jpg bafkreiaueoad3a7bonxllif6gro63sgc62y5g3ova635qbas6qwd5pb4za Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p197.jpg bafkreiauxrue6yrevjvxvybwyo564uwrf2d6owbv5pempv2yoyip4qv3me Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p198.jpg bafkreicbau53kuqrpvz4es6cm43ucv5zz4e4jetjnlrxh6mct7lfok7wqy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p199.jpg bafkreiclp7oai7xrwp7pchvorrqe2kob6g7gube77ba7nj52qzeo27qmae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p200.jpg +bafkreidjbfd5sbllcniqra6vlqj5r7sylmiazugdmybkw3sayfng5utg6u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p201.jpg bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p202.jpg bafkreiclb4tfs656bkgvnjlan2fnrnkafuwawjqj6wi56i6glw74mhb4fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p205.jpg bafkreia724pkmsfqmbhkddixbjbxhld526xubtbogjtmr64gcnukqbszvq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p206.jpg +bafkreidamxgqsllyanjwsjzqxfu2ey4mm46p4nj4byag7j74dzdlmjapi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p207.jpg +bafkreid7faqakfcx26pq7irynbivnqia72tmwftps34h2bujbxluph7bgq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p208.jpg bafkreicdu3boestqksh25t6lmtdw4yirdkwr5tccxgxkk5wlupztj32zzm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p210.jpg +bafkreie25fo4v5ucaqnioowwyexhgcjkb4jtmqfvjdmh75keqcumlqvuce Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p212.jpg bafkreibdiwd75o344lpnrxw3bko425egkbl6di7b7bbzlvntuqzzxtd62e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p213.jpg bafkreic7xxqrzmojpudptamytkup4dm3hhqut4kjq2hd7ssn3bbgb6i6ya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p214.jpg bafkreibedo2o73o7rakzradzya62uloqq5tu5wfrfdibqgp6cq2xqgfgne Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p216.jpg bafkreiadt4ubvytwsybxjn5mc3dmbu2sdzpgnsxbgzubl37nlocvtqrq44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p218.jpg +bafkreida4rsykaerugpteh3btk6f77gtb2qr6uzi47bsioamfdpawp7wkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p219.jpg +bafkreidn5gi2d3m7y3wbmqbxp4tlxg4ul6ghwldlz5f5w6wziu5nwho7bm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p221.jpg bafkreic66ce23sqhgjvomov4aotvjwcyxy7uzhpz2iidrr4heit7rl265a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p222.jpg +bafkreicyjzjjddvvdc6n2jbcu7wqc5vjshke5q6m374djwqf7lsjlctgly Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p225.jpg +bafkreidhsnfap32pa46uwdo2wxmy5q6ov23wrbfreldwestk3cu63udv4y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p227.jpg +bafkreicvb2llom3nob7sceozzjniv4pexdplrafexppj4br7loojrgicoy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p228.jpg bafkreicd7wcsml2kinzppz4oexwfwqhcwwqsxsaipiw6dhpszjcdtz7eiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p229.jpg +bafkreicz6iin4nwl37k53vov2utypezgtvsf4unuo4ui2buc3gpynwucxy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p231.jpg bafkreib6fmo2ipazx6vdxk6fc4eslo4o43ygcbhgula27c6xg4tixuvejq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p238.jpg bafkreic5u6yysa2ewa5psvi3rr4ncycvnbi5tnmidbr6u5v6pnou5pzb3e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p240.jpg bafkreiaujcpaottzy2rbwnpzo3k6cgqw6b3drpohblomcp73rfiyuywsl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p241.jpg bafkreicoilcugxt4amhxe7atvf4kamlp2obp3zifqwzehbr6vpqenvlcti Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p244.jpg +bafkreidgykzbmgtua6fou54zz6gqmn6a6bavuurzkawwc656nxp4ug57eq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p247.jpg bafkreicbnzxdiujtu2wntatne6wlpu63zbto24xcd7bklhvxnyuk2izhs4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p249.jpg bafkreibvbhvvc7hsutg7zzdwnt56rz5kgvds7wlwx7vbli7ibxjrmgyfki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p252.jpg +bafkreid3ipmugzicquzsdk33ahhzckj7streugl3chuwlbfy6mqo53g6d4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p257.jpg +bafkreidmenhtc66wm4e2veqe23vnjx45l2cnopnpxeofrq2esfui3egm6q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p258.jpg +bafkreidkajo26izsfp74xaygioewn4rmv6aaof3ibsd52jeff723pxwawm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p259.jpg bafkreiayoswtitw4l2vra74vrwy65riqq7pnhkgqzbtljwyq6aqtgqatja Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p260.jpg bafkreicon7s3icz43kegyrgoxmobxw55kwa7uqu5hzmjklviix32epj4qy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p262.jpg bafkreiaksej5vgapaibxp2be3dmuohctzprgfqc55wpjfobd4jvyzm3tta Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p263.jpg bafkreibj5u7w63ebggqnzgbw3vbj7xfyyl5xafinmhkwcp6j2upmauqcuq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p264.jpg bafkreicd3n5d4bg2uej3bpy4kjpqrq5dr3fi6gdcw3tbc5opsyy6iexcxi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p266.jpg +bafkreie6rdowcpuvuytfky6i7qvlv4agxm2ubbf3rvefn2fo3vqv5u6yxe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p269.jpg bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p271.jpg bafkreia3pjdp7img6livz4vyctkw4b2rbnulon23hnch3jtg3aa4plianm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p272.jpg +bafkreidi2imyj2fzg5kls7oiuuu3bvfsv32ivyxasq7vmp7b6ubmczdaki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p273.jpg bafkreibk2qyatqhwgs4xueaxtwndxwinkm3mzo4ax4hqwun4czrcq5rwi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p274.jpg bafkreibhsnbowo4dlul7zx56pfovymve2udcuxesjixac4mvd3bo3epxhi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p276.jpg bafkreib3lgmb7hj5jldqzfhhl2evqozu7tziym63y3w4rwkfzsrxjbptya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p277.jpg @@ -478,6 +674,8 @@ bafkreia2dw47rumodvvjrhowspskonhfbe5jiff2hcjv2a3j366xdsj5bu Modules/Registration bafkreich4266o526dji25mmvkmvy3meudgurh7yra2zkv6e2uzolg7pe2y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p283.jpg bafkreiac4rff3gx427atdr3fgp7wbi7ebdlrviqtkm4yh6jl45jxcplrae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p290.jpg bafkreice2gzuvpehhqem3kwxser4l7p3plukcm2ojdbveaj2zkp76rsvqm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p294.jpg +bafkreidtlahe7myzifb5pxbvy6vl5zfiunrqocsntbywdcr4i4mkzljlm4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p295.jpg +bafkreidbgxwzfrc53q75ouqlp5gw4a7m4as4pzbt35klmhqwezzcezqro4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p297.jpg bafkreiaxkhhq7fdm5sp7p3e4ntyllgn75wu27mizndmk4u2x75oz3ua6je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p298.jpg bafkreibts352wtwgllsqbr3abhfstejqoeahdrqq3gasisiyw26poiipei Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p302.jpg bafkreib54356tstd5cx5atvpmoewpcy6qes3q3dagc5sqyfdgmsi2vqt2a Modules/Registration/Montage/test/Input/S200-6-C/TileConfiguration.txt @@ -489,8 +687,11 @@ bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration bafkreiag7lmo6ysxdnbhfwdphc4hv4ihur6rz6ejdk3vhouisfp3xluij4 Modules/Registration/Montage/test/Input/S200-small/TileConfiguration.registered.txt bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/SingleLayer3D/DzZ_T1_inf.nrrd bafkreibm6l5ajqhve6vzqyq7ekq4zmuetmkkchpacxbyd2jip6btazfvji Modules/Registration/Montage/test/Input/Synthetic/Cuboid1.mha +bafkreidx4yoj7kef6aoewd5adwuczq6xbwb5kqspybrl263ydzbgwxgpvu Modules/Registration/Montage/test/Input/Synthetic/Cuboid2.mha +bafkreiearus6rugqb5jlm63cf4y5cwo6x2g3rdv4biwrib6k2pd2dd2z3a Modules/Registration/Montage/test/Input/Synthetic/Cuboid2.nrrd bafkreibojmzncczdyv6lfbiyqux6skiicpdonirdlrbjumoudsfbc4bbqi Modules/Registration/Montage/test/Input/Synthetic/FocusSample.png bafkreiav66h6tgrqa7iupmow34eaaa2hngcpisepa3aa6staqfr7u2prji Modules/Registration/Montage/test/Input/Synthetic/MNML3_03bottom.png +bafkreidvegyxnbx3kjlisz5qfisjzg45adrnqsccn6j2ldy7h4u7w5gb3i Modules/Registration/Montage/test/Input/Synthetic/Rect1N.png bafkreiaam33ofytsf3wmp4gakpnmwgtgtrxiyn4no7gxz7ueg4s2bbvh6e Modules/Registration/Montage/test/Input/Synthetic/Rect2.png bafkreiagtlczegb2znsj5ohtooykgzqrdcquc3fqwncsxmvietu6eyea7e Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.1.nii bafkreibuvr4ual4tvllt356minn6dikbeagwsggukxlp44zs7x7pjjat34 Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.2.nii @@ -507,72 +708,115 @@ bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Modules/Segmentation bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetWhiteMatterTest.png bafkreiasq35o3m5x3vzre7t42j3ca4djb2ik7ccpzeei6xvd7rklylndhi Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_malcolm_single.mha bafkreic6e4lfa7yfa22revrekqucwe7malsoeftlvayvwjywensknouptq Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_shi_single.mha +bafkreid2yxsj35hcsklijdcpggvc4rosgjrqy6z634um6uzwl7j6pfyaei Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_shi_two.mha +bafkreidrjrxppoag3yntixvkannnmhtlksvbzzzilm5af3oqqf2sbwhhpa Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_sparse_single.mha +bafkreicwnlscpmqmhv5hg75humnfzeozpic2bmohttmph54akmwlhojbwi Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.1.png bafkreibyrioiaqyeltyiy3pb54ijzaj26ueavscmw3gr2stce2vgq5weji Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.2.png bafkreic5yv3ytahvx7zebnh2r7wh6qfmauvexdhaoqjxrb5kgpkv4hxg7i Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.png bafkreiaizh7kmys2v3vxffr5lex6jbbyj4nygb7w3mk6clahmyzjhelgs4 Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest2.png bafkreiagtbgz7lz4237i3j6nxcmvincoc4szh5mpagmeuxvgnhhnmblque Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest3.png +bafkreidjnngeexpoh5biglb7nk4zr5g4kpmlu2j55zoliaavmde5lc37wa Modules/Segmentation/SuperPixel/test/Data/Input/VM1111Shrink-RGB.png +bafkreidcbxhzrmpj32sdua7oxkh57pkc4okksr2dhmttetpwwbzn46bgze Modules/Segmentation/Watersheds/test/Baseline/PythonWatershedSegmentation1Test.png bafkreicjrizawfoe33ajvirkd5rox3d6u4hfx2rrpyla6ss7aaumg5v3au Modules/Segmentation/Watersheds/test/Baseline/itkIsolatedWatershedImageFilterTest.png bafkreic2lv6e5wksf6vfwiffw7gzsp2ys6tcxd7p3nejr35cs77qjr7zm4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM0F0.png bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM1F1.png bafkreicglzw4rex2h2fjy75tvmibb3ipld7afptgxsx2m4zaopxu7olqji Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F0.png bafkreib3srvr66khz6tuzc5xvcvoafg5odecglr6xvijosc5gohijqt5wa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F1.png +bafkreid576jebdnvwt7f7goonz4etijq7fbcglh6biyrt3qnf7iqnpm4s4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel20.png bafkreibmmy464u4sxui2fdixiztbqlbc5ztoh5mad4uvazk2ukg5aqc2cu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM0F1.png +bafkreie6nwcz2pg6vsxqxfb7zpwmybwngsdenrgnjvvnulft5kvxevm3fu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM1F0.png bafkreiaemp2tfchx67u2fnm7ueagdhtyllsn3mq2qasdfzk34rrfz4himi Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM1F1.png bafkreic3ycdimqokabffkn7tz3l3e7mxx6l2qkwnigxqoufwq2oeax66mu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM0F0.png bafkreicpseocu5swseywbojuzfckwlseltbdzqc65zaftkbgh65oytisea Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM1F0.png bafkreiahe2zjg7s5nmfzzwouvkhute4wn7poiownhvkw4qca6ofxythmfm Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM0F0.png bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Modules/Segmentation/Watersheds/test/Input/VisibleWomanEyeSlice.png bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/BridgeOpenCV/test/Input/frame0.mha +bafkreidxj6yehrsmjg3pxefmmgeanhz5a2s6zq4fqjw24dccslohh6l25m Modules/Video/BridgeOpenCV/test/Input/frame0_gray.mha bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeOpenCV/test/Input/inde-circulation_short.avi bafkreibu4jnuqgubtjo5sysw7nberapze3ywjuxkdqysbtnui3ac72o6ae Modules/Video/BridgeOpenCV/test/Input/peppers_513x512.jpg bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeVXL/test/Input/inde-circulation_short.avi bafkreib4utjmhhmwvmtmz64vmy5pbmmn3phbj22yje32knkrq5x7435bju Modules/Video/Core/test/Baseline/HeadMRVolume_Frame0.mha bafkreibpxxg22wjeybjhwqo3jq2fbtgq37okajug6mgcisbrmmr2flzwdi Modules/Video/Core/test/Baseline/RGBTestImage_Slice0.png +bafkreicwxyke666r2kdfbhzxleo6lqndujusrpgsb6ocdkqlfjsqm2vsha Modules/Video/Filtering/test/Input/frame1.jpg +bafkreidqcvqljc3r2t5peixdsz4t374aea3f2sm7bfcpyjn5qgwj3dhuna Modules/Video/Filtering/test/Input/frame2.jpg bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/Filtering/test/Input/frame4.jpg bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/IO/test/Input/frame0.mha +bafkreidxj6yehrsmjg3pxefmmgeanhz5a2s6zq4fqjw24dccslohh6l25m Modules/Video/IO/test/Input/frame0_gray.mha +bafkreicwxyke666r2kdfbhzxleo6lqndujusrpgsb6ocdkqlfjsqm2vsha Modules/Video/IO/test/Input/frame1.jpg +bafkreidqcvqljc3r2t5peixdsz4t374aea3f2sm7bfcpyjn5qgwj3dhuna Modules/Video/IO/test/Input/frame2.jpg bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/IO/test/Input/frame4.jpg bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/IO/test/Input/inde-circulation_short.avi bafkreiasjnds4cteut4obmcg3lmdwnxiznxduku3xiycikifwo32n65wqy Testing/Data/Baseline/Algorithms/BinaryThinningImageFilterTest.png +bafkreidz26diuhhpgs5i4gmddfm5bbw4xlm5bvj4hw2xo6wbsklfsvuz2e Testing/Data/Baseline/Algorithms/STAPLEImageFilterTest.mha bafkreicqovvvqiq43b3kkrhoyz6v4sbrispqhivbcnlo3hnupz4gs5lshi Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.1.png bafkreib7ii6emilldxu5xjhf33dxt72zfoscicnybkeezuae6ncpehysve Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.2.png +bafkreicy4natfdarvdqim7vczonuny4mqh5g6wygqsnzomvtaelbkrrfou Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.1.png bafkreialoeavh6bwgemrpuaf4zq53hz5drlkv4lfvcmbqg6v33odhsmxue Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.2.png bafkreibca27ybu5z2c3v3e5zvc4enfud7p3ufqizr5z5ulhgrafuk3hzyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.4.png bafkreickfry6kf3zd2t5cozaeid6thhovvt2lwx7bhhapptejty3mrybyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.5.png bafkreiamzbuibkxicf625j7h3jppwagjw7ntu23hrftia3kutyg7ghfxoe Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.6.png +bafkreidq4nxkdwaotyssiy3whae32xgqw7xdswu64likhoreigksff6nma Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.png bafkreickxsok552drtbssiitjnz3rs4m62brhbiccryledqi5sgyzrxb7e Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest2.png bafkreict3blly7wojg4razcbj4qudhkmpzrmikg3xlr7tcmbaoam2cyb6m Testing/Data/Baseline/Algorithms/itkNarrowBandCurvesLevelSetImageFilterTest.png bafkreiaanceijqbdjutqztgaxjmvqf7naohnu75tq2nckevtybuyikm7bu Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest1.png bafkreiagcm2vrnxatl24qlijnirmsowkq2u2yftc6r4r42orulju3iizqm Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest2.png bafkreibjz6wbh5d53weoweusyewrxabmxaijtrfnsh72rye5pyptyp2hpy Testing/Data/Baseline/BasicFilters/BilateralImageFilterTest2.png +bafkreie7jr74p6utof3tekr63rb2vl2dvx5jwkwuzvebsobsjxnhknt2by Testing/Data/Baseline/BasicFilters/ConfidenceConnectedImageFilterTest.png bafkreicqlhg6xztvfqmgynbf3xb6qhbghwfzvkugt6nwxn2kloiwnfalp4 Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.1.png +bafkreidv7hznlkcvddhdi7udpvsvqd7q677dhiamqenhskxyq53vogf62q Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.png +bafkreidngvamh6ejxx5j6lzf57p3kqtjjvgm4dtil7ofekz4blhmns3pf4 Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest2.1.png bafkreiav5grdw7gqzsi26zgb4vuyicm476hrxit4i2fi67vq6gfioehgkq Testing/Data/Baseline/BasicFilters/ConnectedThresholdImageFilterTest.png +bafkreidmaabiea6sccf3chnvdrdnz5fwflxnffzil3yu7xibsqtjrfkhde Testing/Data/Baseline/BasicFilters/DiscreteGaussianImageFilterTest2_OutputA.mha +bafkreie6rdqbbamvnjyk4otbozyciicxupwmigs6jqllx222kxkt76pfim Testing/Data/Baseline/BasicFilters/GradientAnisotropicDiffusionImageFilterTest2.png +bafkreidrk6nz4jodgpnumnvm2xovovut6sgfeeynbhzomrms4vvfusu3ga Testing/Data/Baseline/BasicFilters/GrayscaleConnectedClosingImageFilterTest.png bafkreias2tq2qrj2evw4aohcf5boogi6m27mxigqahnz6f7p5fsxznqxde Testing/Data/Baseline/BasicFilters/GrayscaleConnectedOpeningImageFilterTest.png +bafkreidbd43nki76hventqynwkhyspovsikv3p27pqcae4g2dopoc2iqlu Testing/Data/Baseline/BasicFilters/GrayscaleConnectedOpeningImageFilterTest2.png +bafkreicwrf2w4h5jhzp6d63d5nl34jkqrnokwh63efzyt623zzrflhdd2q Testing/Data/Baseline/BasicFilters/GrayscaleMorphologicalClosingImageFilterTest.png bafkreiblud6dlgkrm7cqaqidfximgecask6ccvlidfclp2omlnd43r4viq Testing/Data/Baseline/BasicFilters/HeadMRVolumeBinaryProjection100.tif +bafkreiddbbslasi4ajmnhl7vyatylmfst5sejt7yp6z2nimvozr75f2w4e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection1.mha +bafkreicxghmvo5ep462qjx33cpmjisqcifmj23eectlaimnrh2jugctbwi Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection2D0.mha +bafkreiddrud5elsp4ynxcuuk7hgjhqpoupipom2t4owp7mfofibbmz7vxy Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection2D1.tif +bafkreidegqbs44x7g3jfgphjgy54rkh45xadipc3xqc53g4dfh4fducyim Testing/Data/Baseline/BasicFilters/HeadMRVolumeMeanProjection.tif bafkreibenixkqpjpjwypcrqurj2ijpiaxq5wmqytmzanly2s6u6qzvdv4e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMinimumProjection.tif bafkreibem3y4u5ghauie2vdv7ukgeldpa4nh3jy3h56ge7jr6j63mjxzsq Testing/Data/Baseline/BasicFilters/HeadMRVolumeStandardDeviationProjection.tif bafkreiafa6byahozgex6f775n3jwy7o6uunaczsymimkqcnptuo4rzwfey Testing/Data/Baseline/BasicFilters/HeadMRVolumeSumProjection.tif +bafkreid7j3ycqotplzrqwo2fw2u2r7cd4qaziazjqsioftrxp7b4hannc4 Testing/Data/Baseline/BasicFilters/ImageToVectorImageFilterTest.png bafkreibvprb22lqcixyj25yagmiys5k7ebjv4hbwv4fk6wj2jjxiqdqd6q Testing/Data/Baseline/BasicFilters/IsolatedConnectedImageFilterTest2.png +bafkreicztmzt6gfzpiciayza237l5ztuzh4ozgzfh7x5phgzkm7eeabvpa Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.2.png bafkreicqtexpewprsxilynurejzm5hwuwtbqv2awypf4a777ovavehhrqi Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.png bafkreiaff5ercu3mmke7cfgeawkgxf65xh5ptvo5tlsxvrjxhymghobbdy Testing/Data/Baseline/BasicFilters/MatrixIndexSelectionImageFilterTest.png bafkreicqoe55dwpxhw3hoghrmvh3tf5jf6vcfifblbstn2um6zgcfblaqq Testing/Data/Baseline/BasicFilters/ModulusImageFilterTest.png +bafkreidwxsmr7dix3jxmeapz7mdjccp733avuw7ngiycfu7ikfpcvpjyse Testing/Data/Baseline/BasicFilters/MorphologicalGradientImageFilterTest.png bafkreibkfrzq2huzrzah75sv6tnhd26blgd5xuwo44h3pfhnws4ij7s4nu Testing/Data/Baseline/BasicFilters/PasteImageFilterTest.png bafkreiavzx2y27jhdw3g27aufwakrunaqat65atoqq2zo6uhyi56zaxvjy Testing/Data/Baseline/BasicFilters/PromoteDimensionImageTest.mhd +bafkreidfola3euhdz2y2fbp7pnu2kbowyfdi3j6bfm5zeihcpjsaxubqre Testing/Data/Baseline/BasicFilters/PushPopTileImageFilterTest.png bafkreiaxkvkxjjyssdgw7wko5inbtw55ademkwn7ezupgieqheayxgj3yi Testing/Data/Baseline/BasicFilters/RelabelComponentImageFilterTest.png +bafkreidhljx7n2pbkn6hg7li4dqxabsyjpaavmhb2f33t4iwmj5woyfc7q Testing/Data/Baseline/BasicFilters/RemoveBoundaryObjectsTest.png +bafkreid4t4i2pohiait66uaj6m2sorw5wlqsjpo5auymxjfr2ajw3625tq Testing/Data/Baseline/BasicFilters/ScalarConnectedComponentImageFilterTest.png +bafkreiczethurvl5wqaecsvhkv7unran6t77yxakq6bvt5m5ocefojrc2a Testing/Data/Baseline/BasicFilters/VectorConfidenceConnectedImageFilterTest.png bafkreib53z5v7zm2z6ur6mujzdvis36ahlg6pmkux3vgxj6i4zpxnpkvc4 Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest1a.png bafkreibm7iet43zebqvt3xr6f7fyp4wak35fkkck2un3qo6ht6cidmsy2q Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2.png bafkreiafyamdkwvuzkhnyigakqycb3kbt3zzcdjf4pwrdz6ftbzhgusshm Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2b.png bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-0-0.png bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-150-0.png +bafkreicxbt7gq5tpfe3kqglfad2j46f7m4jdaw2nbu5o6c272agpegkjz4 Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-0-0.png +bafkreicxbt7gq5tpfe3kqglfad2j46f7m4jdaw2nbu5o6c272agpegkjz4 Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-150-0.png bafkreicdlj7y2qtbj27ss45frlrjutpvm3kuk4vkpu4iaxprsobrlipopq Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-0-1.png bafkreia6ldmkxbaguz6c2nevxrkrmxsrejlkr6n3qbe4js7igpfv7kpkzm Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-150-0.png +bafkreidgcnmocoe7ffvwkxpibbl7lsegjb3uoiegdjljacrs3nspniduuq Testing/Data/Baseline/BasicFilters/itkBlackTopHatImageFilterTest.png bafkreib2hqjf3whgtnzymcs47u2iryydoxn2qw7e3a6oq7ub7kw4ncj72q Testing/Data/Baseline/BasicFilters/itkDanielssonDistanceMapImageFilterTest1.mhd bafkreibuuwpx7tw353uzx26vdhjikcj3cdndjqdsyewx5ingcfd2uv7io4 Testing/Data/Baseline/BasicFilters/itkGrayscaleFunctionDilateImageFilterTest.mha bafkreibkjtebepqruamhlpojsvuc4l2f3kd4yeyswn5smlpl5tgo562nji Testing/Data/Baseline/BasicFilters/itkNoiseImageFilterTest.png +bafkreicyzqyt2dujrlofauardpm6vtsuyoiz7pygeyxtg7ofbqmegrbqaa Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest1.mhd bafkreic6dupaomevdxo7swumevvhklb43jqhq37z3633s73ds4goqebj4m Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest2.mha bafkreiaobtqjj6rer6s4lwpw47kmtebayvxwpncmum4vshypoa2jvgyguy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest1.zraw bafkreibon4cl7sveflmwtu5kp6dz7hbpmylng7ycbazdrwpocz2mvd5ndy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest2.mhd +bafkreie5hflm2w3tntryhqbfo6eljkfamtafd5h7uukcbhqqvakiwtfxly Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest2.zraw bafkreibr3wd3ecyrwuh46kdns642p5tlvx4sbimqcsorr6wfdxhla7uvgu Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3.mhd +bafkreidpcntmmaw4sstzua3slkkr373c4ojo4xu6j2dnmzkcmpkkfk2qfm Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3D.mhd bafkreicitrffy367aorb7clkd7ablqcckg2zjd2cxs3mq677savsmz72pq Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3D.zraw +bafkreidjtoevp4au53zy3jfy7rhtqt3urlangigsgrrbtizama3t6quqke Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest4D.zraw +bafkreidhmvvimv6l43oskxfodqbtgywmllebscvytmehnzxl5mn4fjmayy Testing/Data/Baseline/BasicFilters/itkVectorIndexSelectionCastImageFilterTest1.mha bafkreicnhr2blw755lma44lc65s5miz534w55xucwvf2bqkoje75jucy6i Testing/Data/Baseline/BasicFilters/itkWhiteTopHatImageFilterTest.png bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Testing/Data/Baseline/Filtering/AntiAliasBinaryImageFilter.png bafkreiamztjyzhe3wr6l5eysfyxbvaxoie435vvwx5u4n5arbjwtp2awbu Testing/Data/Baseline/Filtering/BilateralImageFilter.1.png @@ -592,20 +836,34 @@ bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Testing/Data/Baselin bafkreiam5fq47yjwne7u6i6ms2orwencj633ukgxx7n7c2pmy6ndloc554 Testing/Data/Baseline/Filtering/GradientMagnitudeImageFilter.png bafkreibfmi462oio3b4yezwkfuwq7shzufuilblquyk6jc7jone45ajove Testing/Data/Baseline/Filtering/LaplacianImageFilter.2.png bafkreicbpea5dutn6sqbufhzlokk2nmg53hajjvajpegm6s5w52glcq46a Testing/Data/Baseline/Filtering/LaplacianRecursiveGaussianImageFilter1.mha +bafkreidct6huhfzrfmh2zm7eg5bnmdln5ifctpzxdrieymcapjtrbxqsxa Testing/Data/Baseline/Filtering/LaplacianRecursiveGaussianImageFilter2.mha bafkreicmssaml52ch56cx5w5bl67q7m5yvmwq2m3wrn5cxbl67jdjqvjlq Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.2.png bafkreiaixia732edo5ndmkfrudl6lmnctlvwilzj5igm6pphbdjzxpxjae Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.png +bafkreicvdtjckjrsvit7gqx4bw4tz3nwoe5hglzjzhyq3gq6q4ywzis5na Testing/Data/Baseline/Filtering/MorphologicalImageEnhancement.png bafkreicmoenbnq6qwc5gryr4a35pxhqznd26vqazq5azicqzhyomh6nonm Testing/Data/Baseline/Filtering/RACorpusCallosum.mhd +bafkreiczlwldalhb5slwfevp3pvppwinihdbudys2wmilrgc7klhjh2zqq Testing/Data/Baseline/Filtering/RACorpusCallosum.raw +bafkreicwv75irta3lzk7iik5i33ticyn6ope7cdwozlsly7m32mft7nvmm Testing/Data/Baseline/Filtering/RGBCurvatureAnisotropicDiffusionImageFilter.png +bafkreicwv75irta3lzk7iik5i33ticyn6ope7cdwozlsly7m32mft7nvmm Testing/Data/Baseline/Filtering/RGBGradientAnisotropicDiffusionImageFilter.png bafkreiat3ii7mmzurs5fdq2tahb6nqbkdpupoh4cjyznemv32ei7ond5ba Testing/Data/Baseline/Filtering/RGBToGrayscale.png bafkreicqopucdi3lu6bss2ov73etfvvekfm2smquzmp5th3likwzy7rmxi Testing/Data/Baseline/Filtering/ResampleImageFilter2Test1.png +bafkreidliqqdbwtundge2e6cz7wkynzq7chflcswdxposrnxs2qzf4tuky Testing/Data/Baseline/Filtering/ResampleImageFilter2Test2.png +bafkreidliqqdbwtundge2e6cz7wkynzq7chflcswdxposrnxs2qzf4tuky Testing/Data/Baseline/Filtering/ResampleImageFilter2Test3.png +bafkreicvsh7kgal7ik3avtzhzed3di2idh4nylopumzutd7satkvebadd4 Testing/Data/Baseline/Filtering/ResampleImageFilter5TestPixelCentered.png bafkreiasynrqd3zfhmbdjm4rfht4g3p74rvc5bo5imwbixmjqmminh6y44 Testing/Data/Baseline/Filtering/ResampleImageFilter6PixelCentered.png bafkreibnsxj6kaflygoicabrfclqi3q4fc5px4ykfayw5refaawxlqonci Testing/Data/Baseline/Filtering/ResampleImageFilter8TestPixelCentered.png +bafkreieaweeuk3zpdbyqkqrbq77ff7xrwgyetvfjg7bnndlzh2kap54lmq Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.4.png bafkreibx5jakzrnnkua475ceigcciipkve4cdlkcxcv4x4u3u2jj4klwxm Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.5.png bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest1.png bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Testing/Data/Baseline/Filtering/ResampleImageFilterTest2.png +bafkreie4ryn3gpcj4lwlpbvvbjeftywo47n4x4xrcr2yu5dqhz4c3ooppa Testing/Data/Baseline/Filtering/ResampleImageFilterTest3.png bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest4.png +bafkreidgqswnjeyj2zztvuq7tir3jmp2auqqqgrg3wdoxhapkbccccwrhi Testing/Data/Baseline/Filtering/ResampleVolumesToBeIsotropic.mha +bafkreidu3v4ix623wvczhsu7on2xxr6skoi622trifcivwuouwgrv7hk5i Testing/Data/Baseline/Filtering/SigmoidImageFilter.1.png bafkreiafhyn2npt622zajj2ssueb2f7u5ndrs4jcsugclybt7avde36xui Testing/Data/Baseline/Filtering/SigmoidImageFilter.png bafkreick6lvynqwryxvgrvihxreenwgxzteirqnafbmis765rnuwrowzyy Testing/Data/Baseline/Filtering/SubsampleVolume.mha bafkreibz4lev7yffgvhowec32bz5piliy3trirheaqlz7qfahv6ob6xkiq Testing/Data/Baseline/Filtering/ThresholdAboveImageFilter.png +bafkreiczua2bho4jbawrj6vy3wqmqd5i37743cxfitaskvpjknfeoxt5ae Testing/Data/Baseline/Filtering/ThresholdBelowImageFilter.png +bafkreidf7cqcjaciyk77ezblhhhzmybbu5oxyet3iua4dsozk6rlqmnrxu Testing/Data/Baseline/Filtering/ThresholdOutsideImageFilter.png bafkreib2jqzewfumkszfdlt3aey4dxd5nobossn7lpcms5ai4ge4avbfdm Testing/Data/Baseline/Filtering/VectorGradientAnisotropicDiffusionImageFilter.png bafkreicd22hfyeqdu6yvuxzyqezsnuvpwakxnbzkydq6cnkulnhilk7lv4 Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter1.png bafkreiasasgob2hyouwf4vxhgc7p3ar3eoyx3s3zt2sjkn3mahbqbatevu Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter3.png @@ -613,6 +871,7 @@ bafkreicnnzrss4flzplfoapfxqzssydgiastpuo77kj35b6puwo42nr5lq Testing/Data/Baselin bafkreicjcvtr5ohidankms2xq6nol46t3oqgv245ppamldconn75g3v344 Testing/Data/Baseline/Filtering/itkBoxMeanImageFilter10.png bafkreib6tdfaws5vdxruimwxlscg32mdlm5leispvhkrfhj3vv22b5yrie Testing/Data/Baseline/Filtering/itkBoxMeanImageFilter3.png bafkreicr6otruuwal2s5eqbzsqq66fmuzbt5dzkygiseak6b6ns45cle7e Testing/Data/Baseline/Filtering/itkBoxSigmaImageFilter10.png +bafkreidyly7tmu4wpxgnsjdhbc54l4qaiov3z5kom4fywftz2p472optxq Testing/Data/Baseline/Filtering/itkBoxSigmaImageFilter3.png bafkreibde3rnayttitw3gbgozk4jrcah4hr6jz7m6oyabxk66xyhls5nzq Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.nhdr bafkreib22wyomojq5ypxf5rmqc73qfxbxww3nucchljlp3ffelchytdjhi Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.raw.gz bafkreibtjzbp7d3uexbx2aonzn7dghnq4a3gvpxtqzuo6vzjyhrhovirkm Testing/Data/Baseline/Filtering/itkGridImageSourceTest2.raw.gz @@ -622,90 +881,156 @@ bafkreibnehii2boqlgkgqvrsvdl2h44xpusmrog4sgvg2izzjobxt4w5xq Testing/Data/Baselin bafkreicj7kwskxqjnr5vu7wvv5doevf75ukfbdsm372mxfjt23gx6yki5m Testing/Data/Baseline/Filtering/itkHessianToObjectnessMeasureImageFilterTest2.mha bafkreiavhsqmxzstsenewtjnm345hhs7jj72xhocg7oooc6qc3welrl22e Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest0.mha bafkreibr4uwgufqxmuvd5k5iknfgvcoxlnnihs2r6gfmarujjbadgblcme Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest2.mha +bafkreidvxasu7bdqrqvsicgkmirp4tzunpgnm6z4y6egoo5ch3f6yyrxyi Testing/Data/Baseline/IO/19771.002.001.mha +bafkreidgwdoheash37qmhqxfqqxankyix4oue2jzop5hcdopcl5okhdp6m Testing/Data/Baseline/IO/3868-2-100.mha +bafkreidrj723fw2z2odhm5oq6jazyjfhd3jdjgc3hhob5kb647lsceg6jm Testing/Data/Baseline/IO/HeadMRVolume.raw bafkreibytlcsh66hlrpeiqh4iyhcwkv44su6apo4jrwcnd2265zqwpnwqm Testing/Data/Baseline/IO/I.001.mha bafkreicpwzzviseloun3r4yan4s5272kehmxzl4gzxggeeri3n6ye4wbqa Testing/Data/Baseline/IO/NrrdImageReadWriteTest1.nrrd bafkreiaq3edmqewhisoa53dnyjun3p4chzgpywhjnb3igfs6pa4sjjj7ae Testing/Data/Baseline/IO/NrrdRGBAImageReadWriteTest.png bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax3.mha bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax4.mha +bafkreidxxbfmekjiwx3gvriyzjypajhy7w5hmxplwu3o7drg2uvpejguhu Testing/Data/Baseline/IO/RGBTestImageGray.tif bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Testing/Data/Baseline/IO/RGBTestImageJPEG.tif +bafkreidi6pvgrjbx3hbukpmfntvqi57t7owpdc5bhfdtyjdaxvs7fuhgzi Testing/Data/Baseline/IO/ShortTestImage.tiff +bafkreie5illuxlceh2x33gdycrnxiu4h5mjzof2dgjlexsh2nw2bjkzyd4 Testing/Data/Baseline/IO/SmallRampVolume.raw bafkreiah4ethblr4oobqkn7m4dqt4f4br3d4id2iqkudiml3epjhhmf5rq Testing/Data/Baseline/IO/cthead1-unitspacing.tif +bafkreidb4rqzbyx27vsfhrmyvwshhmlen3qgzdpqfeaztvws3fk4nshpsu Testing/Data/Baseline/IO/cthead254x254.bmp bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Baseline/IO/image_color.bmp +bafkreieaognb5sft3tywkwkxxc6jfrxxvn254fzgym227fotl6ewzawvei Testing/Data/Baseline/IO/mini-complex-fast.nrrd +bafkreidr6bht6m76ccmgnz3kzqyjec4to7vl2yi34yfusfby7dqm3qpkhq Testing/Data/Baseline/IO/mini-covector.nrrd +bafkreidqkj3vhhgwv2pgncyw7vfavdvmlbjbqyqnb6eqn3q3ofwaouinny Testing/Data/Baseline/IO/mini-ten.nrrd bafkreibybxnagopkoydjp67r3w2i2hkl57fxxthwnf4ap33ngmg3vl2z7u Testing/Data/Baseline/IO/ramp.mhd bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Baseline/IO/vol-ascii.nrrd bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageLinearIteratorWithIndexTest.png bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageRegionIteratorWithIndexTest.png bafkreiagw27c3upgcb6xubt6yycqitchcot6cbfokk62afyybtcrbtnvjm Testing/Data/Baseline/Registration/DeformableRegistration2Test.png +bafkreid5djqbzslzasphhx5v45tm2lnxgp7gawtw3sdmh344456gumwghe Testing/Data/Baseline/Registration/DeformableRegistration3Test.2.png bafkreia3zlrg4hcrj6en6lxj7xnpfxlbyarzqegk5kgn7dm2oyb7y5oroi Testing/Data/Baseline/Registration/DeformableRegistration3Test.4.png +bafkreido63mhlq7ald2ebqce7myvbozkccqpqozahco653x7pzcuzmfgam Testing/Data/Baseline/Registration/DeformableRegistration3Test.5.png +bafkreidq2ivclbubxjyymuw6elg43pjspuotzjyasjowholmvipaf4vadi Testing/Data/Baseline/Registration/DeformableRegistration3Test.png bafkreia7rqwil6gcwokxw3y7ytsmgwc5mukx72pgaezxt7vssxnesahzme Testing/Data/Baseline/Registration/DeformableRegistration5Test.1.png +bafkreiduyff2nhustpqzquebofpnto3dw7o4fdmzcs2sacviwg6fdet5oi Testing/Data/Baseline/Registration/DeformableRegistration5Test.2.png +bafkreidoqzb7dulzv75ctbvjupfjwvvkyrikioqt57tikfz3rwwubinybq Testing/Data/Baseline/Registration/DeformableRegistration5Test.5.png bafkreicua6u7ayas2qsqyuwh4zi3naxrw3u663i7ynfz2osy67qpoa7d2q Testing/Data/Baseline/Registration/DeformableRegistration5Test.png bafkreiaub3fzo2qgrtd2f3jecpmpk5foowpeo7oa24drqwegkfwr64hgya Testing/Data/Baseline/Registration/ITKv3ImageRegistration5Test2PixelCentered.png bafkreiax4tqmaotwthxi625wvvny4mozpnlnczih4hfjvwntcrbwpmqyyy Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.2.png bafkreiaveozihczoh73mjk3g23ohq5fdwasdql627avmb44i6vdve7mfmm Testing/Data/Baseline/Registration/ImageRegistration14Test.png bafkreiai4dfush33eye42aost26m3ts3jpm7kzvrf542c2lbxm474rakwu Testing/Data/Baseline/Registration/ImageRegistration15TestPixelCentered.png bafkreiba7tqeqyp446bspzygjw35hjtufjy2b324sun77ie3xzx5kanjsy Testing/Data/Baseline/Registration/ImageRegistration16TestPixelCentered.png +bafkreiea7l5i3dgcfjdienzj4blmf23jeqle2breuptdlg7za6ionqhrge Testing/Data/Baseline/Registration/ImageRegistration17TestPixelCentered.1.png bafkreia6b2npxxh7bejgwenkysjrilt6piysvfk3p7ijttx3bh45iy6gma Testing/Data/Baseline/Registration/ImageRegistration17TestPixelCentered.png bafkreiadx2ih7h2amqka7ay3qycnncx7syo4ppldl7plwteyancfnbzqk4 Testing/Data/Baseline/Registration/ImageRegistration2Test.png +bafkreidqfisl5uy2uor5ru5iniayhkgiurt5lxrsznc5llywbp4anxoqny Testing/Data/Baseline/Registration/ImageRegistration4Test.png bafkreibnfj37v5crhu42av6vasj7pz5daeemyhgj756xyzaseyjmy77s6i Testing/Data/Baseline/Registration/ImageRegistration6TestPixelCentered.png bafkreibjjpb66r4lcxgxtk6u6qcegvfuz3yviwcisjgxq4h4i2kkwueb4a Testing/Data/Baseline/Registration/ImageRegistration8RegisteredSlice.png bafkreibdqeblsv5nsaoitbwqo2g5ue4vgixfh2e4u4cdog3cvsby7fjzai Testing/Data/Baseline/Registration/ImageRegistration9TestPixelCentered.png +bafkreidti6bjrjbfrrhofmqzhge4ubxddezsve2fc6qjz7a27r3efgkyhu Testing/Data/Baseline/Registration/JointEntropyHistogramAfterRegistration.1.png bafkreibnrzoyef3f2kxmey3tku5jpdmdbycxpjiqj52ad354ucljhgxjy4 Testing/Data/Baseline/Registration/JointEntropyHistogramAfterRegistration.png +bafkreid537fzz5uvwjhr6byj4wyq2nwdgtat32d2s5dv7t45cslyh3wyie Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.2.png bafkreiccoudx65pd3cra6wjbaoy2u4ran7mwavdk35l37ms62rdv3wypyi Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.3.png bafkreic66wr4u7je44vmqxlh565cxwduvuaht6zohxgk7ttmab3nzwfek4 Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.2.png bafkreib4mwlqupj3a43kdqkpa6a3iohroqlzmjrh4tfn46pml4bfj7n3fe Testing/Data/Baseline/Review/itkAreaClosingImageFilterTest0.png +bafkreidpn6t2wm3jcil53xa5gs65l7uvknj5fw35kozkwzy5le74ugmapq Testing/Data/Baseline/Review/itkAreaOpeningImageFilterTest0.png bafkreibsuexxa3wkco7faediffwewe4f2wlsxh2645l3yhyaeoh2ox6asm Testing/Data/Baseline/Review/itkBinaryClosingByReconstructionImageFilterTest.png bafkreicspb6kq37nbnubtddg2rawvqf3ck3wno7zx3loil2meokmcgnmdy Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest01.png +bafkreidzz7epihrp2hvgzqe4aefdyjozqv5bkzdqty4jupfnxo3j4bwvly Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest02.png bafkreici3tmqbrgock2z7l7bva5tyn7hhg6tdaytr36ybq53macp7nqqam Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest03.png bafkreia4tevn26uqejybgd2fdtiqg3tfdw4q2fiy67zkvogpnr7tu7a5pu Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest12.png +bafkreidtedqmn5op3pofnrbgrrprtjpm5epsa62jldq6r5fjif2we3r5si Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest21.png bafkreibw5fa3uorze7g6whpbaed5pdn4tb3orn3r7a3ovz7rxqlkplkkbm Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest30.png +bafkreiec2n3jbfpdcnkl7onbsbx5cw2gkfwgvbbpreeydpdqcbvuco6w5u Testing/Data/Baseline/Review/itkFastApproximateRankImageFilter3.png bafkreicl3dd4bmbxsu45xtarzletbjkh5kizsefotq277qnzks5ruj43ya Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest.csv bafkreibba3t5ux5jpp6so3uz5ulftmua7hu7irfzddponz7rsslfeej22e Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest2Image.png bafkreia5vkolpuqomo6mqic7abinoonkchyvyr2pi4f3qmdzs6w5temfnq Testing/Data/Baseline/Review/itkRobustAutomaticThresholdImageFilterTest.png +bafkreid4cfuprunmalg555gwzs6xsafvtklrqng4dv3foecoruvrlnmdja Testing/Data/Baseline/Review/itkScalarChanAndVeseDenseLevelSetImageFilterTest2_1.mha +bafkreie5zg4dz3v7mewepibidtwtwc25su6enhjyo3vzkag2qbwqpuygoe Testing/Data/Baseline/Review/itkStochasticFractalDimensionImageFilterTest1.mha +bafkreie5zg4dz3v7mewepibidtwtwc25su6enhjyo3vzkag2qbwqpuygoe Testing/Data/Baseline/Review/itkStochasticFractalDimensionImageFilterTest2.mha +bafkreieajle2sg3tveq6wjv3x6malnlfpooupgbfvwici6hb355y73uap4 Testing/Data/Baseline/Review/reconstruct.mha bafkreia3e2gljtecxctuwflzoaoxyxovbg7m35eqnjbb44r33wefxv47ye Testing/Data/Baseline/Segmentation/CannySegmentationLevelSetImageFilterTest.png +bafkreidcixpbxuki257oy7wwlwk623sjncskqpghh7vvgtg7vln6zm4bim Testing/Data/Baseline/Segmentation/ConfidenceConnectedVentricleTest.png +bafkreie2b3wpvtb5jpkyxdonb62fgeej4ohjztq44gbjnns32jdudcvzua Testing/Data/Baseline/Segmentation/ConfidenceConnectedWhiteTest.png bafkreiclzw7e7pqcqrxim4omiojbxkxt3e6amawrwi4jg33rzkqqywf43m Testing/Data/Baseline/Segmentation/ConnectedThresholdGrayTest.png bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/ConnectedThresholdWhiteTest.png bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/CurvesLevelSetImageFilterTest.png +bafkreicxwixp55bg3dudsmivlavs4tqy3mso4iohba3zyi6tq3lbc5oyum Testing/Data/Baseline/Segmentation/FastMarchingGrayMatterTest.png +bafkreid3s53u5vkgxth5ygy4zmwiohk65ukiotkocgvxjsc4znpjxw4xm4 Testing/Data/Baseline/Segmentation/FastMarchingLeftVentricleTest.png bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Testing/Data/Baseline/Segmentation/FastMarchingRightVentricleTest.png +bafkreidpd6eavtoqau6w4u2dsy3r77qhbta2z2mjiyqjcrh6ba66g5yzoy Testing/Data/Baseline/Segmentation/FastMarchingWhiteMatterTest.1.png bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Testing/Data/Baseline/Segmentation/FastMarchingWhiteMatterTest.png bafkreic5hqdcvandl4meeevjxgn7up6nnefrgcijsp33eleksjchdkkrxq Testing/Data/Baseline/Segmentation/GeodesicActiveContourGrayMatterTest.png +bafkreidx2nexb4w7ui6cwae3abgooybh6vh7hlqrpxggjhvzwqpdx5wa4y Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.1.png bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.png bafkreicetvgjze6imuowupp4ctkszqy26ziytrfpaxkgtqxdac2cjoxpki Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.1.png bafkreicu6ukhlwyxpp26ilqkm7wwv6pnimmivasqd56lm42klcvkro4duy Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.png bafkreibdujpchvv4oyo6bnf6y4arjpr5t3in2iswoimbte45sidc4mls3q Testing/Data/Baseline/Segmentation/GeodesicActiveContourShapePriorCallosumTest.png +bafkreidxqpw5n2geowldruo3h5zdzvnnl4idr5ufatiqo5vbzehwmjx7aq Testing/Data/Baseline/Segmentation/GeodesicActiveContourWhiteMatterTest.png bafkreibsbodzjqgiqjraobc4l2wamn4ufd6dgnbcfd7qs64oaxbwt6im2e Testing/Data/Baseline/Segmentation/HoughTransformTwoCirclesTest.png +bafkreidok3eqrti2q2k6ijt6fcxczvmk4pvvc56ecfvpgduzfnzuzufnpe Testing/Data/Baseline/Segmentation/HoughTransformTwoLinesTest.png bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/IsolatedConnectedTest.png bafkreibgg75j26o4vamf7dwddjie4jjg7kllxdor7fudkfogoibqmffema Testing/Data/Baseline/Segmentation/NeighborhoodConnectedGrayTest.png bafkreic5jk6tyftvpmarvmk632h6dnp4hlxmo4tbhc7a6yfjhpllendqay Testing/Data/Baseline/Segmentation/NeighborhoodConnectedVentricleTest.png bafkreib3zv5ox7hrrw2tnzdjvbjtafkgbicy473potgvcoggwigkuigix4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetGrayMatterTest.png bafkreic6x7r2lt3wn2utmmqhjo2ifh4uurk6rdszxtmhtbjp5m5u55efm4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetLeftVentricleTest.png bafkreichhlbb3lazar5nsrqkj6buvkqucqcnyomsarskoynbmqmmd62hea Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetRightVentricleTest.1.png +bafkreidbifcyhtvjvborndvavyjghlk2cjrlvk2yp5hdzilzr2rf5e54ri Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetWhiteMatterTest.png +bafkreidr5l2wofnaeiv6ve7ttmkz7dop72uhf5peyuitpl2b3plkgxbflq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetGrayMatterTest.2.png +bafkreidp2wrz2txmolffeuagfpjgkoaiftfyvh3ay2wojok2we7i426xyi Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricle.png +bafkreidpcj4h5qd7lk6hm46vxgdb5oipmbjoioeso4747irfzbxyztyy4a Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricleTest.1.png bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricleTest.png bafkreibbsgmdzzltnpdlwgoqcgdkotbm6kz2qwkqsw6sxgen5xuof352om Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.2.png bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.png +bafkreie3pkunkzncsxzzlk7awzch736m32q4aailo25e3fozhjexypps7i Testing/Data/Baseline/Segmentation/VectorConfidenceConnected3.png +bafkreid66vjq2plzuqtacwnxzsnedue4zshz6m43ta7uv2hmbtv3rtliy4 Testing/Data/Baseline/SpatialObjects/BoxSpatialObjectTest.png bafkreic7zvpt3te3neyjish5bq7ovckvczzo3qe3rgdnty4g6ena32ivva Testing/Data/Baseline/Statistics/BayesianClassifierInitializerClass2Output.png +bafkreidahg53dwft7cjem7e364v7nnadddaqepcd436322yvtq6gknu6d4 Testing/Data/Baseline/Statistics/BayesianClassifierLabelMap.png bafkreict7pqaa5qiwacm2c2dnxpnkfyfsj3e47r3r5v4sevv63vxhvphg4 Testing/Data/Baseline/Statistics/ImageClassifierFilterTestClassifiedImageTest.png bafkreibpleftqacav3cxmv7ruaehver35veg2xc7qqiach4biml2qusuza Testing/Data/Input/012345.002.050 +bafkreicw4z6w4v462wyaggi5p342af4nrfqz7ee7vpevml7xkr2hmmo2fe Testing/Data/Input/289.png bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Testing/Data/Input/2th_cthead1.png bafkreiazem3elmai3lwipyvxcajfd2afrg5gjtswvh2udtwc5ztku6x344 Testing/Data/Input/Archetype/a5b1.PNG bafkreialo6gyuvvb7jpt2m7cw2shvk4hmvi7wto7cthudztfa23kwt6m5y Testing/Data/Input/Archetype/a6b1.PNG bafkreibd6yioa2vazw77nkr5pcmopnpu6nrsd7q74mo6opbjtliu6ytgsy Testing/Data/Input/Archetype/a7b2.PNG +bafkreid2hwujxisw4cxuvnujnyrka6nktlgssijeirgy5o3kx454pcbmem Testing/Data/Input/Archetype/a7b3.PNG bafkreiam56gz5lzrrsj5fdkf5tpgkjkmxflk4gg7lkddlx6rpjnvoasmxy Testing/Data/Input/Archetype/a7b4.PNG bafkreicctcog4hcfivk3nj3xdzes3qks7vmxybv4ez262aonmdtwukxboa Testing/Data/Input/Archetype/a8b1.PNG +bafkreidixagwmglbsjk2juae2vchnxsr7ekxvtiktwl42kkkbi4gfswt3u Testing/Data/Input/Archetype/image.001 bafkreiaje6otkkjwwcqhsm3joaadthk5oeclsm6k2sbf4jipcgm2xzgydq Testing/Data/Input/Archetype/image.003 bafkreia3rdnljnpjh3l3dp374vs4auapbhsr7gflwnlxazoz6oo2oza7na Testing/Data/Input/Archetype/image.006 +bafkreidqxzqjdp77sx6k73hrapg64ra7nws42pdcf4ekbshf5p5zo3dwgm Testing/Data/Input/Archetype/image.007 bafkreiceaml262ln6chfswtem3mxrlpngx4tqzll27m2irbl2rj56rezt4 Testing/Data/Input/Archetype/image.008 bafkreia4xk74iupjj5d5lqzy7cq6zgax3f3s2zjrwun6wkvnzhtiisuf6m Testing/Data/Input/Archetype/image.010 bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndian.img +bafkreid2z2qz3txmgcpkssvkvzy4ohsukft5ojhj2nsdhr7sn7f5b7zzgu Testing/Data/Input/BigEndian.mhd bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndianCompressed.img bafkreicrb6uyivbjq7axm43xoloz4way2tnos5i6ivurieoblnfqtu3esi Testing/Data/Input/BigEndianCompressed.img.gz +bafkreidb65rh5qc2vvw6tklzljubukjw5smveoepf6k4ybyw3i3nayi2xi Testing/Data/Input/BinarySquare3D.mhd bafkreia3xcwr4rd3wu7u7dd7mn3iru7uzcavscpbrmklwussqvyab6uaia Testing/Data/Input/BinarySquare4D.mhd bafkreiagampuouhpaftl77q2t7w6kg3ubyarphibws5fiudpqpy4hjqihi Testing/Data/Input/BinarySquare4D.zraw +bafkreiczdu4gg7sl6o4oocjd7qqa5rzr4rnumkp5odbl5gqtyatd3nsjo4 Testing/Data/Input/CTCardioCropped.seq.nrrd +bafkreidcjj3ntkh53eoxnw2yfse4pg42ijbk4wq7k5dghhjljtw7lrnmuq Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.2.dcm bafkreichsot47hdalj3tosr72dmvfso7zwsgc5n4orrue6jbznu3e7yhtm Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.3.dcm +bafkreicztxb5yxsktbeop3yy5cswb3lsrj7t7o3l7ccsya7446cyark3mu Testing/Data/Input/DicomSeries/Image0075.dcm +bafkreicztxb5yxsktbeop3yy5cswb3lsrj7t7o3l7ccsya7446cyark3mu Testing/Data/Input/DicomSeries2/Image0075.dcm bafkreicpkbc2vba2lap3a6fn2p5j6ljbn4fgaivg3qdzpmiaqedpu45lgi Testing/Data/Input/Gourds.png +bafkreidfo67pypdutnvxpuy77e2so2shtiatnsnjgqpojfuvj222244nzq Testing/Data/Input/GrayAlpha.png +bafkreid7el3rna5o7g6pw4am7q6pbgjqsv2z2xdbixmwh2pjpjq7avy7qq Testing/Data/Input/GrayscaleVolumeWithVariousShapes.mhd +bafkreidrj723fw2z2odhm5oq6jazyjfhd3jdjgc3hhob5kb647lsceg6jm Testing/Data/Input/HeadMRVolume.raw +bafkreieawnk457jzi3oshe6fzpxghwhzuldwf3skbijorwxkbcvzfdxucq Testing/Data/Input/HeadMRVolume1.cub.gz +bafkreieawnk457jzi3oshe6fzpxghwhzuldwf3skbijorwxkbcvzfdxucq Testing/Data/Input/HeadMRVolume2.cub.gz +bafkreid54i4w3c7hw3pgglrfexxpv5iftnuye3nca2ctqyml3rvzk6p6ny Testing/Data/Input/HeadMRVolumeCompressed.mha bafkreibgc3v7omkekea4k5fzsyotfvahpkuzmecm4ik6nmf37vlhzhjnvy Testing/Data/Input/HeadMRVolumeWithDirection.nhdr +bafkreidmlpyfhnoaswsdwarxyiweeuf4ebsvdvbtljawrdlimkbrxsoxsu Testing/Data/Input/HeadMRVolumeWithDirection.raw.gz +bafkreie6pylc5fpjq5xzyvbstb2ycsenufgknk6cpis3r73yqejmtxpoem Testing/Data/Input/HeadMRVolumeWithDirection001.mhd +bafkreidcemq7u4lwpxhgtlsbmjlwk5ch5ftvubu3ngr5u2qnzdnspzj32q Testing/Data/Input/HeadMRVolumeWithDirection002.mhd +bafkreieck5xt4bjfe4dhz7ikwxir5f5qqijw66xjpjzeiyqzkatvz2bsra Testing/Data/Input/HeadMRVolumeWithDirectionIdentity.nhdr bafkreiapsruqlhchlkgwzalja2drpdsixoitiphzu2nrptun4txws7hfci Testing/Data/Input/LPSLabels.nii.gz bafkreiayifmz2arvb5gyvhhmwyoeggin75tx2retastdpy2buuxnz4ktpa Testing/Data/Input/LPSLabels_nosform.nii.gz +bafkreidv26ctqs3l4tkpupgij3myhnezhb36t2awp24ydnyjgqxnzgt4g4 Testing/Data/Input/LabelVolumeWithVariousShapes.mhd +bafkreidy5qsaj7suku65t3ytg6ng5kvoqhvmlyu5qgsqrraydlraidmgym Testing/Data/Input/LabelVolumeWithVariousShapes.raw bafkreicdjbd4wnnbfzh44hdt3gp46brt7v3mbyqm6kspxb4btldmkweojy Testing/Data/Input/LinearTransform.h5 bafkreiccntubvccyuviu4ftzizt5xuoceuwgu7vozcw5gd7cxe6bjsr6za Testing/Data/Input/LittleEndian.img +bafkreidybxsps47unhxj3h34djbwmzbjmfxsfwanwhwxzha5vahcvrvg6a Testing/Data/Input/LittleEndian.mhd +bafkreidqao4n7uhgo7hwsaixvy6koeprjnwvaqcctpter4u4rwwtdn3jdi Testing/Data/Input/LittleEndianCompressed.img.gz bafkreibsm7pxeylg3nun5jdeubzzhabhwtgmwzu3x54amkzlxo3mecavcm Testing/Data/Input/MetaIO/SmallRampVolume01.tif bafkreibwgb5aqw76qqqz6xqwlwtvbv6tdz6m7wjehfbeekgq7iehwvtcrq Testing/Data/Input/MetaIO/SmallRampVolume02.tif bafkreiacernybemiaok4zsz4kegmzh7eh7b53rwml2w2f5kicnwxsde44e Testing/Data/Input/MetaIO/SmallRampVolume04.tif @@ -714,33 +1039,52 @@ bafkreiabv2oshlbykm2uhoojgcki435zvkrlwj54nwfcohjmaeqhxyjz3a Testing/Data/Input/M bafkreibf4ax3y4f5d4d7gu4sncsyy7qmdx4y2l32rdjvptbny62f4wr7bu Testing/Data/Input/MetaImageError.mhd bafkreicshs5i7vygmntrhvdboiqnwl6bfp6dmmtmqclun7lkss7ignljmy Testing/Data/Input/NonOrthoSform.nii.gz bafkreibct4vqe3frlihsfvh32a3x67idg42n3cbzyx72luw46tznn6rfie Testing/Data/Input/Number3inText.png +bafkreidwwx2643j5w7iezpbjk4b32qcfkfia46iun3re6n2tqku3ovqtsa Testing/Data/Input/OrthogonalDirectionsTest.dcm bafkreibnb3piktjl6rnmxokouwugvxj5ifutv6njivbxo7unfx654hwbay Testing/Data/Input/RGBTestImageCCITTFax4.tif +bafkreidy7fgl33hl2nlb2zh33p5ugqfczcdqct3y6ki7ghnj3cugjr6x6a Testing/Data/Input/RGBTestImageGray.tif bafkreichkfizkrmy3ymsdmx6djruyznwsz2l7ut7pufhyapdk3qibxmd3m Testing/Data/Input/RGBTestImageLZW.tif +bafkreiddwcjiwdxnwjcbvwzc6ynljgs474z5dcyonjamcgbnvy7e7ha3by Testing/Data/Input/RGBTestImagePackBits.tif bafkreibhdstyfeaiag4slqklyzemsgcwh7ka6sxe4uc4ya7er554ptrsua Testing/Data/Input/STAPLE4.png bafkreic2hm3cma4ucr3pdzqqshdplo6tu4mlovjraerl74agvxebgk5cfa Testing/Data/Input/ShortTestImage.tiff +bafkreiebtec36rsbd4habywaidhp22x7u2ksf4l6ia2yxsxvxnq5ocvody Testing/Data/Input/SpatialObjects.meta +bafkreidl2fpnnw7cjlgjosn6ff7n5hiwqbdntr5y5smsnumcswyoznqudi Testing/Data/Input/Spots-markers.png +bafkreidbyuse534mnlbekkaqpvompi3c5bqipmdyotefpvxlwp2yarlho4 Testing/Data/Input/SquareBinary201.png bafkreialct4roz556epsous5logatfdgujhx3d3y64cegbqn2vhmzrilcu Testing/Data/Input/Statistics/TwoDimensionTwoGaussianTesting.dat bafkreiakdptaidn43xwmsjxewkk3jahakcy6ttjps4p2uh6xc5pjwy22dq Testing/Data/Input/T1_MEASUREMENT_4_1.PAR bafkreicjfacm2duvhctivq2ohsjtgjqqz24m654kdbd5jco2bmozl5rhoi Testing/Data/Input/T1_MEASUREMENT_4_1.REC bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Testing/Data/Input/TreeBarkTexture.png bafkreiagrsbz7ruqqapa4b5x4pqenrs3erqhqyk4vr5do5b4zzgou4ocvm Testing/Data/Input/VHFColor.mhd bafkreiaqa6gvexvgen3yc3ug4caw5ob3qtyfbs7yith5vfjbbq4a7s2yoe Testing/Data/Input/VHFColor.raw +bafkreie3uxik4q5vv4s6s2sj4omm42z7rckpkys3v5wiss4cyke5sn5kba Testing/Data/Input/VisibleWomanEyeSlice.png bafkreico44qbyjwtuji7dxcbychpq4km5sgepnmvqlruyrf62exkajp23u Testing/Data/Input/XML/test.pso.xml bafkreibo5jx5hrwuqwtrwoplrxwixhc4hali7ajh7iyusegb6figbqgsri Testing/Data/Input/box.nhdr bafkreiaein6l3pxmcpyv3w6pu5mx5tdnazqwouffcbkjh4azg4kphur6vq Testing/Data/Input/chondt.png bafkreibegteuabwy7gpqhoxjr5akjlku5litxockmjuce3iwib7pqj6sae Testing/Data/Input/cthead1-markers.png bafkreia6zkmi7zcu7wzfrmt2lpggn2gln43tcipkk4tj3f5quyrnpdvalu Testing/Data/Input/cthead1-mask.png +bafkreidnkzw6sxzrzyb4tlyjqytxq5xbxfc2kku6s25j3qre7nptfhyvcq Testing/Data/Input/cthead1-multires.tif bafkreiaphgjig3eiyx2soc34anrjgtip7hpt6nakmf72xexah44ghnb63i Testing/Data/Input/cthead1-threshmask.png bafkreiag3r5eotbcnaxxvznnfzgr44liqsmccv52swubvgfgmjd4nqsdjq Testing/Data/Input/cthead1.jpg bafkreibnzmariwkrmk3l55xlsngj6kfrt7qryyid6v4jggww4eo66kd54q Testing/Data/Input/cthead1.tif bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Testing/Data/Input/cthead1Label.png +bafkreidb4rqzbyx27vsfhrmyvwshhmlen3qgzdpqfeaztvws3fk4nshpsu Testing/Data/Input/cthead254x254.bmp +bafkreid4luuamv7d4ypvlpx3iahgyzx6cnbbkrltsfecwnt6fl4lfd2amm Testing/Data/Input/dicom-sc_cs-1.dcm bafkreibpbglgwfvyda3xqki2p64vzkiuaenhzvzqqpftscemf5mzs37iti Testing/Data/Input/grayscale_lowerleft.bmp bafkreic3hoowztk7glic2o7bxemfefblzzekzjsff63q62w5qhffuscali Testing/Data/Input/grayscale_lowerleft_rle.bmp +bafkreid2h7exryfznak5mdp2mifusnzi22ihoc66vmhbwxcygn47g6ygui Testing/Data/Input/historical_misspelled_TranformParameters.h5 bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Input/image_color.bmp +bafkreidrlyovpi4tuxmegzwpiytkvuk3hgwcg4rzrjeyodc2bs6gi7qtti Testing/Data/Input/itkNiftisform2DirectionDef.nii.gz bafkreia54nwpkhz4fxjtuivhoibzci5vzulvh3yrtysi7z4njy77syo2qa Testing/Data/Input/metamesh.txt bafkreickcfrkdhd5gorlbn3wzrnarbkdqeslgbd5n2tfevuabpieayu23a Testing/Data/Input/mini-complex-slow.nrrd +bafkreidr6bht6m76ccmgnz3kzqyjec4to7vl2yi34yfusfby7dqm3qpkhq Testing/Data/Input/mini-covector-fast.nrrd +bafkreidng4sbczgdcbjjhdnq4dpqtoh756ddvclicatjhbbbbipgkbysve Testing/Data/Input/mini-ten-mask.nrrd +bafkreidqkj3vhhgwv2pgncyw7vfavdvmlbjbqyqnb6eqn3q3ofwaouinny Testing/Data/Input/mini-ten-nomask-fast.nrrd +bafkreidnvruwpzif65e6r7bq4opnr5fb5yef5tv4udax6cvabamb7qytaq Testing/Data/Input/mini-ten-nomask-slow.nrrd bafkreibmodaapwlmwl25k3vp5fvx6a3e4mtrmjexyi6brdjbgvnmtly7qa Testing/Data/Input/mri3D.mhd bafkreiaosokxvuurl7k7wzvi3q6oyiqo2oxm2kq77loyivpeahxxzaild4 Testing/Data/Input/mushroom.vtk bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Testing/Data/Input/parametersBSpline.txt +bafkreicypztvbqgaqvjp6fiva4axuwlgnrlpxlmgzgcw3e7f6xp23pebim Testing/Data/Input/pass-values.png +bafkreidvsh557q6wq5mpzashhjhyqt27p46rkjrbytasf3jchui67fptvy Testing/Data/Input/peppers.png +bafkreidfkhnr57v4fa4f7ynp5ez7e6xeh6uto3c4lst7z75azgokjltiti Testing/Data/Input/plateau.png bafkreib2mnx73jbm2oprni2tqyt3nzvet2yj4miejszyr3w4if2fbwsvh4 Testing/Data/Input/pointsForKdTree.txt bafkreiajxeelq44vxxgpxlzqftii2km3vkpfvpxuqvar6zuyvf6pszqjbm Testing/Data/Input/r64slice.nii.gz bafkreibtmnmqob7py3i5yqrs7w2a3mjuax7guh7ouie74k2gdorv5agoee Testing/Data/Input/ramp.gipl @@ -748,39 +1092,56 @@ bafkreibl5gmdw32meh5mzqixf2vhlewk7elht2zcqcql5lgsj4oc5vcwkm Testing/Data/Input/s bafkreiaozkfgry4ohv4gk4fuo2fytkc6epemzlr66mn2nazevlaaxc36tm Testing/Data/Input/simple-label-b.png bafkreicbbhnqtl7rztos5dg2areyhxe3uwognu4fxa4yphuo2vk5sl76xq Testing/Data/Input/simple-label-c.png bafkreic6h2kau6larhvohrqibtm7lgl377ne5sixn6kblu7yqeade2sq7e Testing/Data/Input/simple-label-d.png +bafkreid3qzqlhub4tclws7acxa623jhpo7qqw7edbolu3424qukuprebfy Testing/Data/Input/smooth_square.png bafkreibzlnk4hi5htbabds53iv7xrofvjl6mvy75ergwflcapaigl7nv4e Testing/Data/Input/sobel_x.nii.gz bafkreicojrj773okbjnvhd3c5gopqn5til7wg23blbrsbefd2qopbemu4u Testing/Data/Input/sobel_y.nii.gz bafkreibgfih7jiwjdq7shpxfsjzz76r7ipcowmaitjokd3viwc2vyaaihy Testing/Data/Input/sphereBinary.vtk +bafkreidl5lywjunmfxfy6kbaocfok2fuehj5bx4ciiozw46pcxaa44rzte Testing/Data/Input/test_ge4/19771.002.001 bafkreib5x4r4zcroilk36n2bsx3wo7y5grmoosudojifnn2dcf2viwieiu Testing/Data/Input/test_ge4/19771.002.002 bafkreickggjzritwhvbdqj64w6s4olnsh5f4icp6ycqyvtidpzybqitndm Testing/Data/Input/test_ge4/19771.002.003 bafkreia6nz4nrxgal47ns5epex7wxgaag4gughg5xorjem7oewdj7ck6nu Testing/Data/Input/test_ge4/19771.002.004 bafkreic4zoyqnybqogydtkiwidosy3v6xwnofzjnofir7txgd553bel4zq Testing/Data/Input/test_ge4/19771.002.005 +bafkreiecl6v2p36p5ewgmmptvjajopa2bod3bcnqdgq2rosq4nmd25fl3e Testing/Data/Input/test_ge5/113766.003.001 bafkreicbywnrrjcl2wehhbqmff73bjcwwoucopxutj53g5virc5x2qal6m Testing/Data/Input/test_ge5/113766.003.002 bafkreiafcd4siu7wrrm7c6k5ou5a7wm4p2j7iyczgngjh5h5a74rmk4eem Testing/Data/Input/test_ge5/113766.003.005 +bafkreicv562xhqs7mdeasawxh5p5kjnhua4boomkvjp2i4ob6fskhvnv5i Testing/Data/Input/test_ge5/113766.003.006 bafkreickr2fah2h2eow544t5z3p6ilp26kts7ons6v4tgcebrtnrcosxdu Testing/Data/Input/test_geadw/I.001 bafkreicehz2rvpsyxmt2qqnofyqvlvzhcr2klv67oj3fpbmrmm65hjdxg4 Testing/Data/Input/test_geadw/I.002 bafkreibcl2o24ifudyyg7chregazecpaubgh3whbmzdkqd6uew65chvzzu Testing/Data/Input/test_geadw/I.003 bafkreic2vrkdkxhofmxigr7lgwr4dmfazgpgeex4pqisi7dalpou6k3cku Testing/Data/Input/test_siemens/3868-2-101.ima bafkreicrzykil4y5saxyhfrmjnow4sbcgsumthxttfoiigi74rtkwrbo3y Testing/Data/Input/test_siemens/3868-2-102.ima bafkreiabct5y5d3w6ktiwvrasown3g33zbeb3wgemuqn7ucocq2ajchvn4 Testing/Data/Input/test_siemens/3868-2-103.ima +bafkreie2uiz6ykfo5b5ipcy7pzmtwlkzyelfma6kzx6uvcjz65vlejr3oy Testing/Data/Input/test_siemens/3868-2-105.ima +bafkreidsru4x6dpwhfiezmb7cvasclio7bfllcv7tvqr5za7f2dhjrmmvu Testing/Data/Input/testrgb-1.raw bafkreiawz7ry7jt6jxhmdqd7p7a2fjpz6xrj3z2ngrcdllxmrsgyzjuw44 Testing/Data/Input/testrgb-2.nhdr bafkreiaih4ngm2xyi6yi72mvqfanvzcu2my7umdjrfw455kpueuzmbho3a Testing/Data/Input/testrgba.nrrd bafkreiclja3q74oxpulnhupowm5caitc2ejup4l22twvrz6ppixvhhuy2a Testing/Data/Input/tilt_series_big.mrc bafkreiatzfmbxkx3pvrhmmjiu45fx6ycbkkwwws7h753omhcxa3qial3ze Testing/Data/Input/tilt_series_little.mrc bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Input/vol-ascii.nrrd +bafkreie7hxmnxeyagogkweyikpjeri3kvgpkwxnwdlijkk2kf7tojapc34 Testing/Data/Input/vol-gzip-big.nhdr bafkreiabp5bbsgyem2leiwwvclhtezvl2bqthpmclgl7mujdmwwoupduly Testing/Data/Input/vol-gzip-big.nrrd bafkreibgrckx4xhyefx7w74aj7amfzosfe4v6y6rxinctucrhllsz6ns4y Testing/Data/Input/vol-gzip-big.raw.gz +bafkreidtxgukzsttdbbw3jsykxob7ixbjpw3zpw2qkcdqxarsr2oua3rvi Testing/Data/Input/vol-gzip-little.nhdr bafkreiaj7adkflxcpouflo7z3trpxqmxuuaj2bxkgp7ixevpkadwzwq54y Testing/Data/Input/vol-gzip-little.nrrd bafkreiani5dcsbrgcnvcq2vdoqpuaemyfvem5mn725jjnk5aar7qi75iha Testing/Data/Input/vol-raw-big.nrrd +bafkreidaur5cvmokmm4ukuty3k4qwbvmkyfez4wtzcmwkn7t6oyzibl4ri Testing/Data/Input/vol-raw-little.nhdr bafkreic5vva2t5fdotrog2d4rufwe47oyt2gexjshc42ron5flw4jobrmq Testing/Data/Input/vol-raw-little.nrrd +bafkreie3krk647ehcxofowy7j3nal2alcsz4jm7zc6ds7ulhtfzvrjyrji Testing/Data/Input/vol-raw-little.raw +bafkreidscgxnze7fpjhbsyqubyjg2g255ycexl34jop34rcez3ktkvcpxu Testing/Data/Input/vtkPolyDataBad0.vtk bafkreiak7yqtd44rtoeaxpnvpm5sqxwlp4uucdrlwe3upgesbh6l7e4ss4 Testing/Data/Input/vtkPolyDataBad10.vtk bafkreiaq7vjyl62cqdtrbvxbaz3inlzulawmscuur6smxq72xa4ogmvsiy Testing/Data/Input/vtkPolyDataBad12.vtk +bafkreiebh4n26stwks3qiqqa5y2l2exmodw42ob5j3gy5qu7qcrbvfqjny Testing/Data/Input/vtkPolyDataBad13.vtk bafkreiappp5o3istpjgnvbmu25nxlssnq3ia4hxs7du7mzny42bzagszqu Testing/Data/Input/vtkPolyDataBad14.vtk +bafkreidcoxfjaqpeish7wnftdwgslittk6cpcn3d5uu4t3bk36pk6acyye Testing/Data/Input/vtkPolyDataBad15.vtk bafkreicflfkb27ejhagxb6cgkos7tfgtafecbyw2fkam2ibtopcu22kqru Testing/Data/Input/vtkPolyDataBad17.vtk bafkreibw6plrw2mto4fzkvnewwrqw2qo3wguxjgiuzy22v3j2i7h66zz6a Testing/Data/Input/vtkPolyDataBad2.vtk bafkreibh4zslddv3exzhvu7vhwagv4drk65peowia2l4fietc3wjyup4zy Testing/Data/Input/vtkPolyDataBad3.vtk bafkreibmk5ifogwqnuhj7644efuq4td66otyuxukvimpp6pokogd5l6tme Testing/Data/Input/vtkPolyDataBad5.vtk bafkreicczftwtwomlw7a66aa47cns3cswmxgs4myisjnrrk4csqwyb7b74 Testing/Data/Input/vtkPolyDataBad7.vtk +bafkreidgbnybvdbqxeho3wugi7dguf6bhae45wj7enplc54emxhisaezwy Testing/Data/Input/vtkPolyDataBad8.vtk +bafkreicumosfeby44q3brkjv26v5jyugq7svqy5njjngku33bw4j5remye Testing/Data/Input/whiteSpot.png bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Wrapping/images/2th_cthead1.png +bafkreid2daqt7b65x7id6zg2uvhs7uybz3pfu2gl5mla44rwj5eb6nbvc4 Wrapping/images/TestVLV.seg.nrrd bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Wrapping/images/VisibleWomanEyeSlice.png +bafkreicwiikwxij2sgwhw6phxmnbk2rc27rqn5mfk67sg7lfdaxril3zie Wrapping/images/templated_pipeline.png bafybeidgydpaoeu6qv4jupn3apal7ri47zr2q2qar435d3l4mdri66opby Wrapping/images/warp3D.nii.gz From fe1f34e32771823efb9df614b1001fd4e9f8b445 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 12:54:51 -0400 Subject: [PATCH 17/23] ENH: Add content links to manifest from ITKTestingData Via: pixi run -e external-data-upload python \ Utilities/Maintenance/ExternalDataUpload/sync.py \ --testing-data-repo ~/data/ITKTestingData --- Testing/Data/content-links.manifest | 1063 ++++++++++++++++++++++++++- 1 file changed, 1062 insertions(+), 1 deletion(-) diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index 1f5ac8b124f..c48ce890086 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -10,16 +10,42 @@ # Paths must not contain whitespace (the manifest uses a single space as # the field delimiter). Data lines are kept sorted by path; comment lines # above the first data line are preserved on re-write. +bafybeieknrqtu4l74dizn7ez2tf52yhvdziets2mzted63pfw4gcanbudu Examples/Data/BrainWeb/brainweb165a10f17.mha +bafybeie45s3wuuws3opz6iofk4oiaxa5jtzavi7adjkgoxrtbxg3pqxdu4 Examples/Data/BrainWeb/brainweb165a10f17Rot10Tx15.mha +bafybeihpofgyawoyci4n4kvhqviduj75rpxniga4hvpemtc3qe2vpvktze Examples/Data/BrainWeb/brainweb165a10f17Rot20Tx20.mha +bafybeif7pfmlsx4bmphuwc22ddjhtyuvlqsjcqhoygvlhksnwump4qqjbe Examples/Data/BrainWeb/brainweb165a10f17ThinPlateSplined.mha +bafybeicp4fvmsveu55ifcvlua7o3sm2u5zwnkhkvdi2rjsf3qkqmp6u62y Examples/Data/BrainWeb/brainweb165a10f17ThinPlateSplinedField.mha +bafybeigy6vq65bsustazrflz2fbaobqpyu7oirrkl247av2ryktcq75ojq Examples/Data/BrainWeb/brainweb165a10f17_FlippedY.mha +bafybeicpczar36txe324ctgvmzu52g5xkpqpklgfgb4bo54gvydqagbbsy Examples/Data/BrainWeb/brainweb1e1a10f20.mha +bafybeiann7u43etrqb5b7pwbsizelgo7fdixulso5skphrojlb457tcbdu Examples/Data/BrainWeb/brainweb1e1a10f20Rot10Tx15.mha +bafybeifw2qg5s7m4iyhuswy2lmi3pmwbfenvppikccjnhcuvew774bywg4 Examples/Data/BrainWeb/brainweb1e1a10f20Rot20Tx20.mha +bafybeibfircu2ngzkgudx3werrx2gz6mkjqtabh3bfz6hwo2nbvw5zfn4m Examples/Data/BrainWeb/brainweb1e1a10f20_FlippedY.mha +bafybeidninkemn6hmgzi3meddko4hk366z7tbynpcfapa3hbe3i4ozsacu Examples/Data/BrainWeb/brainweb1e5a10f17.mha +bafybeiee65vmgxadjb27bx5vwhacu3gfwsr5wyd7xns47b4xywq2tcrvpm Examples/Data/BrainWeb/brainweb1e5a10f17Rot10Tx15.mha +bafybeief25ss6iwguneu55a67apumpt5h4lmjll6nipompkqcwbl5jycgy Examples/Data/BrainWeb/brainweb1e5a10f17Rot20Tx20.mha +bafybeiduber3m3yaikhucdjrgtqmul4znbbs2hzi3plz6x3nadwgn4yzxe Examples/Data/BrainWeb/brainweb1e5a10f17_FlippedY.mha +bafkreifvqoxr7fig2nhlmmy33hq2nb5luhkyx4shhrrw562mprzztpvb4e Examples/Filtering/test/Baseline/CompositeFilterExample.mha +bafkreiffaidt2nkh2aipdpxh5jx4ita4wd4voth4iw46oprwzelfpghwne Examples/IO/test/Baseline/DicomSliceReadPythonOutputBaseline.png bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Examples/RegistrationITKv4/test/Baseline/BSplineWarping1Test.png +bafkreieyhhwn7pjg2atoizgfofnjqdnwbtxg4mumcmq2hslrk6dotwvjli Examples/RegistrationITKv4/test/Baseline/DeformableRegistration12Test.png +bafkreihjndsvswssefdsvswn2hzp5k2ydwooy5hxavyracjb6als4fhcx4 Examples/RegistrationITKv4/test/Baseline/DeformableRegistration13Test.png bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Examples/RegistrationITKv4/test/Baseline/DeformableRegistration1v4Test.png bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Examples/RegistrationITKv4/test/Baseline/DeformableRegistration6TestPixelCentered.png bafkreidhknrumzokrwbbchwhqxwk2iv4pcn3cwjew2qfegw75d3fc74fai Examples/RegistrationITKv4/test/Baseline/DeformableRegistration6v4Test.png +bafkreifhxraacollirhd34ucth243cw2qwhyiidmdujj2lclnzcwyqvlne Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.1.png +bafkreigv4nj5zxs2aa64uobfloniuojctur4xtxxrwrojhun6oz2xoiyki Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.2.png bafkreibuxy2iukcnscmcixlgkwmy2v7ozg257plxmmxgx2dex6dl7duvji Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.3.png +bafkreigv4nj5zxs2aa64uobfloniuojctur4xtxxrwrojhun6oz2xoiyki Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.4.png +bafkreifm6zrgdawqt5zbvnjyhonvfavxvh57vyoak4zt7jelxpdpmb2moq Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.5.png bafkreicjlvrdryxu4yssdo5hdf6mpwvgiftv466prtwwcevu2mj3t355wi Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.6.png bafkreicoqa4kn2aaxzivbbeffvbvw45frrekuefwu6dixafzssewhhdcne Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.7.png +bafkreihvjiap5jkkz5brhttizbsaizv77lv6ep3gzfioaxcnlbxytxy52e Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.8.png bafkreickjukon2bbehhjsjfmnjql33zuurki4cz3djw6cuatyxgwijoioq Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.9.png +bafkreigbpzudasafzfypqyzliaw3acuem7ez7eleoybtedaw5qe3t7bul4 Modules/Bridge/VtkGlue/test/Baseline/QuickViewTest.png bafkreicaxbvt4ok3vcft2i664w4iovrdljwpocbl5qctlxqo2p7usks2be Modules/Core/Common/test/Baseline/itkPointSetToImageFilterTest1.png +bafkreiehxwa7kiv4pefwnzu7rhxxybr26pg2fijwof4h4yzwyj4v3qqqvu Modules/Core/Common/test/Baseline/itkPointSetToImageFilterTest2.mha bafkreia46j4a53hnz6iup2x6x5fjrudaseyrte3y4fce5s3yytk53fd6aa Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionHorizTest.tiff +bafkreifyo7fqgjkvh2u5otxwfrwlgc4gatlmrxya73ifcghms6y4ylubvu Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionVertCircleTest.tiff bafkreidztz2gwhowfsgtiwuzg6wleobqwalnaq5pdmitibswpaothshuga Modules/Core/Common/test/Baseline/itkSobelOperatorImageConvolutionVertTest.tiff bafkreictm6jjboquhyrk736ly2klohvpypryfgn3paklbnejvadtohgckq Modules/Core/Common/test/Baseline/itkSobelOperatorImageFilterHorizTest.tiff bafkreidhkafpsqdpychpf3rljlrsm2o4gh5xiyp47zoniyokultxfsy7jq Modules/Core/Common/test/Baseline/itkSobelOperatorImageVertTest.tiff @@ -29,10 +55,16 @@ bafkreidcfy4yoah4gsszni5i3yzzpgdhkzvcdyyhpcclkmrctvvnwaalry Modules/Core/Spatial bafkreidxdbtv6bub7ligfei2qd7axjey6wxoiygcik6vqjcijh2twcv6ca Modules/Core/SpatialObjects/test/Input/PolygonContourPoints.csv bafkreic3w33ftya4ayrcg5jwvsgjiymswmnehrnlfjlk5rcimfluii7iuu Modules/Core/TestKernel/test/Baseline/itkRandomImageSourceValuesTest.mha bafkreicm7roru3x3zjg3t3u3dykpjf5jm7ud2t3f6btwjme77i5qerxtu4 Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements1.txt +bafkreihukk52nz5muzucyqpaws7py4kow5csblxlk22gqaa3knyvjvkana Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements3.txt bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/test/Baseline/BSplineDeformationTransformDisplacements5.txt +bafkreielqw4ok52rux52i7uyzlxyoyjxe57ifdvp7lih7fkmhjl7fnthta Modules/Core/Transform/test/Baseline/BrainProtonDensity3SlicesHardened.mha +bafkreiezzhgfrcsmrqiy6ezc4bqdsbdvglj6xtntlvoa7uxd2epbostt3q Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest2PixelCentered.png +bafkreifqt55mw4kvfcs3jolypxbmi4kwipr4v3gggv56xcrqiljrturzgm Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest3PixelCentered.png +bafkreihabachf6mjkmocnghz27yasepbrmn2va7vmm3ytovvrfhdmq2eba Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest4PixelCentered.png bafkreibqqfdwp4t4pjqsqjqts7mmclyqpwmhmjb5tixve6qna5vkrsdjay Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest5.png bafkreidesr33jwkack3rt6tq63zatphbatw44p76f5p4qcngmaz6i5e6qu Modules/Core/Transform/test/Baseline/itkBSplineDeformableTransformTest5PixelCentered.png bafkreiawvfi3k6cllwfh72ovzxwsyl6u665pjvq647inhlytzary3uhzga Modules/Core/Transform/test/Baseline/itkBSplineTransformTest2PixelCentered.png +bafkreighgtojimhbnzhs5u3rmau5ylwhcvzz4omkfi3gj2pwi6fqn5vgcm Modules/Core/Transform/test/Baseline/itkBSplineTransformTest3PixelCentered.png bafkreieabhe3q2csqz3gua5r4csyvg6gbzeu5wclwoemfzi4kzetzbqvp4 Modules/Core/Transform/test/Baseline/itkBSplineTransformTest4PixelCentered.png bafkreieabhe3q2csqz3gua5r4csyvg6gbzeu5wclwoemfzi4kzetzbqvp4 Modules/Core/Transform/test/Baseline/itkBSplineTransformTest5PixelCentered.png bafkreiarayxd2ksm2ldnqzws7vvyldrrsjntsqbmrrzmrwjosu52rpk2se Modules/Core/Transform/wrapping/test/Baseline/BSplineDeformationTransformDisplacements5.txt @@ -60,115 +92,229 @@ bafkreibhkebc4kkb5ysuelc2kfllixc2xq3looqfkvrq6f3qx5a42cvm5q Modules/Filtering/An bafkreicey264ntq4ew4wnlyoy23cu5k3cmxwvlm7fg4r5skcbtwhsh5jfe Modules/Filtering/AnisotropicDiffusionLBR/test/Input/Triangle.png bafkreics5ulkrwki4epnu6l4umam3on7ovr5ao4yfva7f2odkkp25j26gm Modules/Filtering/AnisotropicDiffusionLBR/test/Input/VectorField_CircleOpposites.vtk bafybeid6ongwkdpv3manmr4qpu22zybq4frslcqj3ysmkxc5tmps2aqnfu Modules/Filtering/AnisotropicDiffusionLBR/test/Input/mrbrain_noisy.vtk +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/AnisotropicSmoothing/test/Input/BrainProtonDensitySlice.png bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Modules/Filtering/AnisotropicSmoothing/wrapping/test/Baseline/PythonGradientAnisotropicDiffusionImageFilterTest.png +bafybeibvvuxtwnq5txm33jyccu5v52syfrzhdr3yyucd6dlwvjox6q5aua Modules/Filtering/AntiAlias/test/Baseline/itkAntiAliasBinaryImageFilterTestBaseline.mha bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Modules/Filtering/AntiAlias/wrapping/test/Baseline/PythonAntiAliasBinaryImageFilterTest.png +bafkreihamtumphomvhhiliqndovcfaor4bmlgbx4molf2lhg53dqxw4hba Modules/Filtering/AntiAlias/wrapping/test/Input/VentricleModel.png +bafkreifl5fptv66ezojtpsnd6xne677uqza5m2sxoi5txdwrnsgwolam5e Modules/Filtering/BiasCorrection/test/Baseline/N4ControlPoints_2D.nii.gz bafkreidj3fjlonee3awf6cp76v3ofhef4267b6k3ck27bth3nnndc42j5y Modules/Filtering/BiasCorrection/test/Baseline/N4ControlPoints_3D.nii.gz bafkreicvdqkt7fe4pkhrhhkhqeclvs2dppt6tdlv6tcj4qyopc7r4uht7y Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalClosingImageFilterTest.png bafkreicdkjlp7afamihunxzcsb4foifgcbx6qmo5cs36y5dmwcibhtvxqi Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalClosingImageFilterTestUnsafe.png +bafkreigmnd3bivxzm7q7vlvzy7gxjttngrwvhuifcuilmgzpkslo45wyyy Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryMorphologicalOpeningImageFilterTest.png bafkreicj6d2l5z25katef4afed4f3zaqguqt2r5zsqkwsgk2lrsff2qdfy Modules/Filtering/BinaryMathematicalMorphology/test/Baseline/itkBinaryOpeningByReconstructionImageFilterTest.png bafkreicbb3uzfc5qccebmo6sk7s72gbt5rfnigka2oz4fpliv5g37bxot4 Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryDilateImageFilterTest.png bafkreic4vmuubzrcau5aal5lolgnf2x3udnsoszwg76dk77dychtzqyvei Modules/Filtering/BinaryMathematicalMorphology/wrapping/test/Baseline/PythonBinaryErodeImageFilterTest.png +bafkreif4ablwxjjh2dfgirykb5wmhnpdgjlgq2ddvmihmi4vsz2qw7bh2m Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_autumn.png bafkreidiwsd7bc32qkhztmr57g2mlan5yn7bpilhh6no45qpv2jau5q6pu Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_blue.png bafkreidxq36r3thjmfjzswxdgnoktsdieocg5uxo5kf4y6sw2caa5kvpji Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_cool.png +bafkreiekp6qacbbjd2wejrlv4lh24v5bxtldz752lo4qo5shl52t6thvgu Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_copper.png bafkreibu6qij5pcahkgxkbjte7w66pkevjkylyadootaxtu2j5oobxfube Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_green.png bafkreib33bbmqabpybt3g5cnnrh7dvzptnzigkpivmykn2hhodx6jnhcgm Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_hot.png +bafkreihxizw6f3jld3drf6ghjx7kxaygmhbnvvnuxwjibf3zhms7ozo2je Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_hsv.png bafkreidx6rmrek2xyrzhcjtouqidpgcrxs4vvl54cnrm57kqqiuc6xvelm Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_jet.png +bafkreihj3om4p6zpphfgyl55l5kvfzqlwyfhwvmdicuhwsh666wdxzqsx4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_overunder.png bafkreiamtmf2eq724atw5wtygobzxrnb2q6bbyka7mjgn5i4jcuqfwear4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_red.png bafkreiannnuwbfoesz6omnu2zxbhvvjjqdihul2p5djn7nxrq5er4xyaue Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_spring.png +bafkreifuzr25rtzlaeorx7lsdjhzygpozpf5wz3j467bajqbhpoe4wipu4 Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_summer.png bafkreiaqef55kclq6twcdakxwotltuwby2r2w4bfpqbliw4jc7lq62x2ka Modules/Filtering/Colormap/test/Baseline/RGBColormapTest_winter.png +bafkreihqbjovkdqdqvw2wnrq7m7lnwuen4wce3wvjfg3ycbr5raqt5apgu Modules/Filtering/Colormap/test/Input/Colormap_Grey.png bafkreicrgk7yhx25za6lod5qguk735q6th4kcx2yezcvnqs7b5jldhwejq Modules/Filtering/Colormap/test/Input/bone.txt bafkreid7oaeiigj3cpci22qpt7pa2alsclt2tfiwanbbvi7moxzl5xwizy Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterStreamingTestOutput.mha +bafkreihi7bdkmzp3upwnyph5tpmcqqhgd4lh4wrj5lhjxe34aw7th3orsm Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterSubregionTestOutput.mha +bafkreiehodxllhfastbxm7jtsvxjsfomttfpse4za3lua55tsnfftwta2y Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterSubregionTestOutput2.mha +bafkreih36qqk2sfpniyqnfmvgroqcxx5sodte6vt7m3kg5cko5v726j7wa Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest4x4Mean.png +bafkreife5i3nza3zqjrvs6ixvz3qxe2wrdpz36fz5jgcfh55g3b5q5lcra Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest4x4MeanValidRegion.png +bafkreihm6hlqd27wvctte4ey3s73f224mp4owfxoiczx3kccw46lnpjx5m Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest4x5Mean.png +bafkreigqcxcnukmhnastrsqkcl4tczzzlnff5slpoaotlbbeiolt3zxnty Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest4x5MeanValidRegion.png bafkreiaob7e4r4qlenwpdsgxibbto7gwddlzdngmy6hfvtxkwbwj3akzba Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5Mean.png bafkreibfvub2xm2cosfzpy7hstbefskq2ep2jhzvz7idl2rmj2o4kxbyzi Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTest5x5MeanValidRegion.png bafkreiazebe4f3uzb47vlp5telxkr7dpeyf4lziep3yft55jilnbaqoq2i Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nii.gz bafkreiaru5qnadfuupum5shy3ufo66t4d65hww4jh5sh5bfnoqkxld67pq Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelX.nrrd +bafkreifwueqm2j3kpap3jkxei5pp4oscr5qczgomtaeunv2gjqghjk2l7y Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelXConstant.nrrd bafkreibqiulbqsp7mkqq2sbgz3ncly3bmmit4abf4lgv6h5ywwaabs2pdm Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelXZeroFluxNeumann.nrrd +bafkreieg3eqrsjs2mijdjklayf6e6p2kcwhleolxisygfqsewsfuphx3ay Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelY.nii.gz bafkreidw2kmmdohobpgwjrulqtshknksbzzacjkcj7sff4clihjj75ztia Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelY.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOff.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYNormalizeOn.nrrd bafkreiac6u7g7qspsn3rrifr6bopzhtn3gtqn66lap7zhfibixcdilgvpe Modules/Filtering/Convolution/test/Baseline/itkConvolutionImageFilterTestSobelYPeriodic.nrrd bafkreide3zt5x5m4ypemkoxdqh26uxzeut6lklsaaxc6riar3he5yfrmey Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterSubregionNormalizeTestOutput.mha +bafkreihlwd2z5jsvq2pfvyp2lplresw376jcr3nujqclajds3mqiydfsty Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterSubregionValidTestOutput.mha bafkreicsib2rv2s6jtfdjx6r4rdfakvdlwrbv3s22ir7sfd53usmlwnl3y Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTest4x4Mean.png bafkreie4lmz2oziqtnsxzplabxwyc7uur2x32gjx3kxhxdllfa2hojxn4m Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTest4x4MeanValidRegion.png +bafkreigshiyzofecr5lhxoptagatoomy2xbm2k5c6s6epq3hb6h5nitwbu Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTestSobelX.nrrd bafkreiapvvycnrewcuahsb73k4dif3gz7d7qfjy5uywnhoon4lxxoaeryi Modules/Filtering/Convolution/test/Baseline/itkFFTConvolutionImageFilterTestSobelY.nrrd +bafkreih3sike3ny6deue2hrjnccr3bc4rqa6vl4eg5smib5ktebjqm5alm Modules/Filtering/Convolution/test/Baseline/itkFFTNormalizedCorrelationImageFilterTest1.png +bafkreifofzocu7lqmx4kmtsc5hp33fjnqtrkgmkppabgs6nt2ktp4cjq4e Modules/Filtering/Convolution/test/Baseline/itkFFTNormalizedCorrelationImageFilterTest2.png +bafkreifkevs7cbqznxia6amvyjr7fywfehougtqlku6rzcwfg4bteahwpi Modules/Filtering/Convolution/test/Baseline/itkFFTNormalizedCorrelationImageFilterTest3.png +bafkreifoq2g45lfsrgprkktev2i73hyrvzpnwnn3q557s4ywkqy5xp4vly Modules/Filtering/Convolution/test/Baseline/itkFFTNormalizedCorrelationImageFilterTest4.png bafkreid4pj6ez7a5yihbvo6u254crd3xuzarughx6ddvhlvihfueni7xh4 Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest1.png bafkreidphtqtbdnvrlbaqfkvur7x6dzvpdhqsatr74ji42eszxbcatktjm Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest2.png bafkreibjisjejrnhepfssqqssznwhhzxgv2lgwvlhmuc54ealrqar7domy Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest3.png bafkreid7clije7quk7jkpbme2quw3dny7c4z7z2xlfdj2m2k2gb72pu77y Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest4.png +bafkreigdwbbplxkvdix4ivel4ddazmudew3dhwflhfkecejulvjpvipkqe Modules/Filtering/Convolution/test/Baseline/itkMaskedFFTNormalizedCorrelationImageFilterTest5.png +bafkreifqczkk2tni56olnn5lqgksk6k3ac5lflwfqr64fgiubbdompsvm4 Modules/Filtering/Convolution/test/Input/4x4-constant.png bafkreidai5traeqkilsaw7y4oko4np737qezdjkadrcdtuwpqwxznhbyve Modules/Filtering/Convolution/test/Input/4x5-constant.png bafkreidob6hvccmie4nrsxiord2ca5oluhyxxxyvoqki7cc7ewbz7dhe3e Modules/Filtering/Convolution/test/Input/FixedRectangle1.png +bafkreig6zkuguz3nnpxhikzl73gu5iu5jkvfepyeybq4fdc4gvxrqzxivi Modules/Filtering/Convolution/test/Input/FixedRectangle2.png bafkreidl6sgcawmuydsec6w3od543yvspy5owspu3252pwx3rnljl3zogm Modules/Filtering/Convolution/test/Input/FixedRectangle3.png bafkreibi5uu33l7syoe4li6kwoslls4znkgdt4gtpe3h75guinve2hp2ju Modules/Filtering/Convolution/test/Input/FixedRectangleMask1.png bafkreid67zzbvmeahq7k5zyrwr4c5vzulniqpuzcxt4fsjkdlfptss7x6u Modules/Filtering/Convolution/test/Input/FixedRectangleMask2.png bafkreibypyhdyds6wd7ano54ehk4g37yohxtmca2v6qxrsbsytudj73o5m Modules/Filtering/Convolution/test/Input/FixedRectangleMask3.png +bafkreig3tv2sq7ihphaf76nr4axbdqwle6tabmnt6vqgisukzrpiazfowq Modules/Filtering/Convolution/test/Input/FixedRectangles.png bafkreiag36wcsk47p5b6y7gxn5mul6fojop6g62pukzj556at5wb4w3sii Modules/Filtering/Convolution/test/Input/MovingRectangles.png bafkreibyq2olmktnxpyvy7ee7myrxttpvdfccwh2qkmdddmkfpxlovmzkq Modules/Filtering/Convolution/test/Input/MovingRectanglesCropped.png +bafkreigzunyu7tailkhzwrm2x7epkpzaa5mpvfjzp4xk5u6rmbx2tp5lmu Modules/Filtering/Convolution/test/Input/MovingRectanglesMask.png bafkreic7avzlu7ski3mwc5tmuzb5b42van7mai35yuy7pqqlwair4kesgy Modules/Filtering/Convolution/test/Input/cthead1.mha +bafkreiefecdsemyfapens22ocjomvdiz7z6s3zdlt36bnojlggxence6qe Modules/Filtering/Deconvolution/test/Baseline/itkInverseDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreigrjd4xkad2phdexdllerxua56p7ewundarcemf62xacabfi5u6f4 Modules/Filtering/Deconvolution/test/Baseline/itkInverseDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreig2zpaolwpbohvcg4agwz4u5brtnabxnhvui5vxpdohpwy73jewmy Modules/Filtering/Deconvolution/test/Baseline/itkLandweberDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreifc777azps7dzeb4jtrg57ofkwme6fmw335cpk52haqn6lgg7nnly Modules/Filtering/Deconvolution/test/Baseline/itkLandweberDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreietknk6phlvoh2rs32oykeupnmf64kunz5hdkkqu2unlaiwg74iba Modules/Filtering/Deconvolution/test/Baseline/itkParametricBlindLeastSquaresDeconvolutionImageFilterTest.nrrd bafkreialxxq5r2kdktzm5ka4ypgs4iqjs22znimr7poqkbv3jjy3jcpccu Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterGaussianKernelTest.nrrd bafkreibwusujxjz7mafw5nnr3k4zvlhnoykx2qtbjlmryrex3anarckxma Modules/Filtering/Deconvolution/test/Baseline/itkProjectedLandweberDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreiffcbkrbu2jz2fbyq4auphimakvr5osjm4bvmgoy6kwxii5xor6ca Modules/Filtering/Deconvolution/test/Baseline/itkRichardsonLucyDeconvolutionImageFilterGaussianKernelNonNullImageOriginTest.nrrd bafkreid6bux3qedo7gp2puxlnv5yi7zym5yr72lxb7w5cjlkec4hmrb7u4 Modules/Filtering/Deconvolution/test/Baseline/itkRichardsonLucyDeconvolutionImageFilterGaussianKernelTest.nrrd bafkreidw6hx33hrc6zic3syqz35tqwh6c2lmbzpqu73rkg667tpfbv5phi Modules/Filtering/Deconvolution/test/Baseline/itkRichardsonLucyDeconvolutionImageFilterIrregularKernelTest.nrrd bafkreiaqjggtmpogu5u4bjk5tkpkdg6hmejtxhbs2jkucekc634eqnsxhu Modules/Filtering/Deconvolution/test/Baseline/itkTikhonovDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreifej7znequ2durnf72bavsusuunzfoqximrpgork4sln3ebrvhvvq Modules/Filtering/Deconvolution/test/Baseline/itkTikhonovDeconvolutionImageFilterIrregularKernelTest.nrrd +bafkreigzz62usestkky5sdodbrwupoolzyvzwgbe2ybzl6f5synlls2l5m Modules/Filtering/Deconvolution/test/Baseline/itkWienerDeconvolutionImageFilterGaussianKernelTest.nrrd +bafkreihdcwok4nmaxnqo3uavjm5g74m2oq2dqbnxiybw5oqmaru46u5jbu Modules/Filtering/Deconvolution/test/Baseline/itkWienerDeconvolutionImageFilterIrregularKernelTest.nrrd bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestInput.png bafkreicumosfeby44q3brkjv26v5jyugq7svqy5njjngku33bw4j5remye Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestKernel.png bafkreic2bed3tisq3ycri6twmwhblpglykhsqsmh2b5yhspzol67fqtm6m Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestKernelIrregular.tif bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Deconvolution/test/Input/itkDeconvolutionImageFilterTestNonNullOriginInput.mha +bafkreifb2yxrr5xumw7eejsamaxl42nuqcshtyat44bd4jktadwv2i3jr4 Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterDefaultTest.mha bafkreic3eoaznugg5ojuwuzfkjaposh6k7zeepcmendg2l6ee4s3p73fdm Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTest0.mha bafkreichyfjvdememnr7npym2jpkywfdzqxf3x325frlvjwqcbnbca47dq Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestGaussian.mha +bafkreigdjlukycnzav3dwequ2pc3n4hcjpcvkixrxjyk5ihk6jyzwfvhla Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestPoisson.mha +bafkreiggk4fgwf5udmyzbt3x44bszos77dv5e2f54l73ejunw3jsjzw53i Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestRician.mha +bafkreif3v45oudhaivirq3e5ludq4bj6s2k55ueb3xp3fvekevrklfum44 Modules/Filtering/Denoising/test/Baseline/PatchBasedDenoisingImageFilterTestTensors.nrrd +bafkreih63aj2pno3ifsk6wsfviybjsxbd3wuosf3hskj7q33iarwceriva Modules/Filtering/Denoising/test/Input/checkerboard_noise10Gaussian.mha +bafkreigjen73srd5y2f5pk7qmyicm4kw5sejaplmn42riukzxwmcl6vz3u Modules/Filtering/Denoising/test/Input/checkerboard_noise10Poisson.mha bafkreicd4467ju2jltmyj2fsvhd5gakvppzu23iajsjrgjxnvjvvv4n4h4 Modules/Filtering/Denoising/test/Input/checkerboard_noise10Rician.mha bafkreiczqx64mue4le3aekvywqxox55rb5xxosorglfqhdaqyjmfoy42z4 Modules/Filtering/Denoising/test/Input/noisyDiffusionTensors.nrrd +bafkreig6u3rj4o4k6xjw4ne7grqxt37sgrgar3yb4fibj4idpch2fmvtrq Modules/Filtering/Denoising/test/Input/noisy_checkerboard.mha +bafkreifn45f7ohct3b5csti5lcbhdg5ttesq7os26txsbn5jhg5seyox2y Modules/Filtering/DisplacementField/test/Baseline/itkTransformToDisplacementFieldFilterTestField01.mha +bafkreiehfa3piuzyn3d7o5evsne46hmvrsknfldfrziqopyunkqsgqplsi Modules/Filtering/DisplacementField/test/Baseline/itkTransformToDisplacementFieldFilterTestField02.mha bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Modules/Filtering/DisplacementField/test/Input/parametersBSpline.txt +bafkreigx2rns6dnllvu4xpinltenbknjrwx45tlluxdx2imitepzi3sx2m Modules/Filtering/DistanceMap/test/Data/Baseline/itkApproximateSignedDistanceMapImageFilterTest0.mha +bafkreifab3c2vwnvrwzgkthllmgy24gncyg5wq5uxjsbllnpbjodbageou Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestMirror13.png +bafkreifa7oigvr2loehgbluz57kbgafdyvqzfpqn5grhkvevcz6jayb6si Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestMirror5.png +bafkreigb5rg77sc4ebatgbqonwzy54o5ipb5uvf5cthpjgvmnfu5fmfgru Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestWrap13.png bafkreia4q3fcvt6avb4tt5cmdw2l4rxvhmmszzgkvsziphcyyytoc3k4ze Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestWrap5.png +bafkreiflpujhhycvsr7v3n3i6okrfcgbbx7wuzpyfvrqfkkgrhbxrb3fry Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZero13.png +bafkreiethi4mntteyjc5xgtlkspdqeny37evf4sndq6j3wrbonntw2va5y Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZero5.png +bafkreieu4g7iahhnbo4grgr2yl3ejznpnwxogiaabve7ssr4b2kstp2iya Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZeroFluxNeumann13.png bafkreicqleapu3shlptziamyzu2s575oavdsevvxpsurlpeqhmxhmp4jda Modules/Filtering/FFT/test/Baseline/itkFFTPadImageFilterTestZeroFluxNeumann5.png +bafkreifeeoltviyw5ae7rtderbubv5kovvkgwyuupe523qaqrfcynefn2q Modules/Filtering/FFT/test/Baseline/itkFFTShiftImageFilterTest0.png bafkreiarnn37z64x3sl5xa4afct7wzfv27xzhoar6nvbfn75r7e75cewe4 Modules/Filtering/FFT/test/Baseline/itkFFTShiftImageFilterTestEven0.png bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Modules/Filtering/FFT/test/Input/TreeBarkTexture.png bafkreibrkmm7ajez2lunrkuxoeijb2xbyzpto5haorcgzcwcqq7eym6lem Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineImaginaryFull.mhd bafkreidq6cgsahlkpt2r7d3qypjlqecijv6hb5jwik66aahms5ll5vcuyu Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineImaginaryFull.raw +bafkreifhojypbmvakgjs3e3zqoumfqhs6x6d6lawdwakq7pmsy5c3vxy3u Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineRealFull.mhd +bafkreielftgkccynji7ggitvtvbwswpkmjoahgvgsf76bdx5fj4ahht4xq Modules/Filtering/FFT/test/Input/itkForward1DFFTImageFilterTestBaselineRealFull.raw bafkreicuopx7y6fhwqcvietmcd2os3a4iee4a6fdwi2z76el2ybcmakgaa Modules/Filtering/FFT/wrapping/test/Baseline/PythonFFTImageFilterImaginaryTest.png bafkreia347cy3linuhybahy6uqployki6buqscbltl57g4umvfzurg6uxa Modules/Filtering/FFT/wrapping/test/Baseline/PythonFFTImageFilterRealTest.png +bafkreiadhbzhtn4fsqlgw4lscdcwzkqbrs5gntgirpbobrdbwv6hskaozy Modules/Filtering/FastBilateral/test/Baseline/itkFastBilateralImageFilterTest2Output.png +bafkreibryts52hwb7mtu5lab6lvf36omn5jlpk6hmedue2itn7f3s5zrvm Modules/Filtering/FastBilateral/test/Baseline/itkFastBilateralImageFilterTest3Output.png +bafkreickuip2r2uejp3bzrizyvis7vs77edil3kkuh45rnye5tvfrjof6i Modules/Filtering/FastBilateral/test/Baseline/itkFastBilateralImageFilterTestOutput.mha bafkreicf53yk55h7pmnrvlhaz35xv6re3754gd2d42boahekmpv2m35cjy Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds.nii.gz bafkreicv7dbuia4he56w2sym7vbaf6vdsdvwx3yb3glm5gsixegkwenug4 Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_NoHandlesTopo_out.nii.gz +bafkreih3l7menn2lzvn4mhj7xs5wroyhfqw6ufk7qnkqhjwqllu7kkh75a Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_NoTopo_out.nii.gz bafkreibfizsflouvfrzzy6tduf26dwkynvojec64goxy6sx4wuoadk6ete Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_multipleSeeds_StrictTopo_out.nii.gz +bafkreihalglmjlhobctx7wqn2fmgboz6ooioh3m3itamv7ntsye7jdcqx4 Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed.nii.gz bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_NoHandlesTopo_out.nii.gz +bafkreih3l7menn2lzvn4mhj7xs5wroyhfqw6ufk7qnkqhjwqllu7kkh75a Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_NoTopo_out.nii.gz bafkreiajbzbmx7e5zevkggqn7y5ikt54c5g6woa2jp454fvuzsbodraqxq Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_singleSeed_StrictTopo_out.nii.gz +bafkreiexrv5ih2n7wrelokn76olvukkpdflhmh3tn3f3fd5z3vncom675u Modules/Filtering/FastMarching/test/Baseline/BrainProtonDensitySlice_speed.nii.gz bafkreicxwixp55bg3dudsmivlavs4tqy3mso4iohba3zyi6tq3lbc5oyum Modules/Filtering/FastMarching/test/Baseline/FastMarchingGrayMatterTest.png bafkreid3s53u5vkgxth5ygy4zmwiohk65ukiotkocgvxjsc4znpjxw4xm4 Modules/Filtering/FastMarching/test/Baseline/FastMarchingLeftVentricleTest.png bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Modules/Filtering/FastMarching/test/Baseline/FastMarchingRightVentricleTest.png bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Modules/Filtering/FastMarching/test/Baseline/FastMarchingWhiteMatterTest.png +bafkreigle7phsewfwues5omh6sxqcl7dejyw3pmr3yfhzpbipc666xvkru Modules/Filtering/FastMarching/test/Baseline/torus.nii.gz bafkreiamfxpdlhrwa3urvxzbdyof7epsxhavq7zz3t6kgotblflrhvvkni Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds.nii.gz bafkreicpsr4z37juligbkl76rgbmfb2sinpi37zqqpkvkpuliqwe6trbwu Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds_NoHandlesTopo_out.nii.gz +bafkreihsu4flsiivqzsjhvjfe3qmy4qqy7yoelflobfzdxwc54mpzg4hom Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds_NoTopo_out.nii.gz +bafkreignqw6ot352fnbhydakskwietacfelk4grjbpdwwfcrx53zrstkz4 Modules/Filtering/FastMarching/test/Baseline/torus_multipleSeeds_StrictTopo_out.nii.gz bafkreidwqrksa65kirqol5tl7a5egztpe4qmrign7i4tiwgjdd6dvmbiye Modules/Filtering/FastMarching/test/Baseline/wm.nii.gz +bafkreifg4b5ixpwvtvqyqr4ev5rjith6ovm2jnkjrszd2zvgo4f5d7jbtq Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds.nii.gz +bafkreieuktky4nwbgod4mjfsfwpq5wwhjygspzk5hcc76ji6zwt3dei26q Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_NoHandlesTopo_out.nii.gz bafkreidncqnowdvn6dhawpxhsokwnfoy5vozs5pfbz5vhnc6w7iv7sfcui Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_NoTopo_out.nii.gz bafkreiclyq5szovgcwjosb3nludvvqh3ab6puj4vouyvykkplq4fu5hgj4 Modules/Filtering/FastMarching/test/Baseline/wm_multipleSeeds_StrictTopo_out.nii.gz +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/FastMarching/test/Input/BrainProtonDensitySlice.png +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/GPUAnisotropicSmoothing/test/Input/BrainProtonDensitySlice.png +bafkreifuwrvdclxmac5a7bky3lf3ylwmqfr2wfq3ivmawzjquztck7cr3u Modules/Filtering/GPUAnisotropicSmoothing/test/Input/HeadMRVolume.mha +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/GPUImageFilterBase/test/Input/BrainProtonDensitySlice.png +bafkreifuwrvdclxmac5a7bky3lf3ylwmqfr2wfq3ivmawzjquztck7cr3u Modules/Filtering/GPUImageFilterBase/test/Input/HeadMRVolume.mha +bafkreiexdollkq5tlsrd5b5zvwlyscxtbfzfhg5riljunknrz46zgacam4 Modules/Filtering/GPUSmoothing/test/Baseline/cpuMeanImageFilterTest2D.png +bafkreihpvh6lfvqbnwtv4lxkqu7xgp4lc4ej3lt7tbdun5awqtudai42ky Modules/Filtering/GPUSmoothing/test/Baseline/gpuMeanImageFilterTest3D.mha +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/GPUSmoothing/test/Input/BrainProtonDensitySlice.png +bafkreifuwrvdclxmac5a7bky3lf3ylwmqfr2wfq3ivmawzjquztck7cr3u Modules/Filtering/GPUSmoothing/test/Input/HeadMRVolume.mha bafkreia5urqtxe47qsms75ch2d4aqjosjbne5a7mujtxr3ifmhltwt4h5q Modules/Filtering/ImageCompare/test/Input/itkTestingComparisonImageFilterTest.png bafkreidwzyghudkj66qcayf53kq4k7y2phpbf5yizyssdlp4p5c65mghvi Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_3-3-15.nrrd bafkreib44cc42kjq46y3r5yqpwecc7nzifo4lxcnqoovjtiakcdjl3cz2u Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_Defaults.nrrd +bafkreihkocjpzta3z5soq2ut7jnekpbakgut4r4asdgjhuy5szcbpduici Modules/Filtering/ImageFeature/test/Baseline/SwirledUSM_Defaults.png bafkreibnzchm7dgpwjux3ehhdprkdj5xebv4xhsj3foxkt4o4batgyckue Modules/Filtering/ImageFeature/test/Baseline/itkGradientVectorFlowImageFilterPythonTestX.png +bafkreifo2s46irj4xhuxhwwzqce6krmll42cfu6fwhjukzd642y2o4czza Modules/Filtering/ImageFeature/test/Baseline/itkGradientVectorFlowImageFilterPythonTestY.png bafkreibe7pcuzn3vgbdwziw747oy5tqiv4f5hmadllkwaj5qljasdxv5ve Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianImageFilterTestBaseline.png +bafkreiguob4x7cb3j4lzuo7tkipqe4d7dpvrmzcogsr3qvqo557qk5mylq Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianImageFilterWithSpacingTestBaseline.png bafkreiat4j53ffhhnqrxc5gyfgp43smpt3436vgxp5ffjrwjxre2c4427u Modules/Filtering/ImageFeature/test/Baseline/itkLaplacianSharpeningImageFilterTest.png +bafkreihvs56f3vf7tlmws6lwzmpn2pa2bgabvxmw6pk6jhq6myps76sz6u Modules/Filtering/ImageFeature/test/Baseline/itkMaskFeaturePointSelectionFilterTest.mha +bafkreifdhyjlknxxchqnflozs5rpm65p5npwfgzmzzrpxefpj3fwfxti6q Modules/Filtering/ImageFeature/test/Baseline/itkMaskFeaturePointSelectionFilterTestMask.mha +bafkreif6ywbz2ybkni24qdfdoxljmlnveu7smsqkday2gjhjyjyy27feqi Modules/Filtering/ImageFeature/test/Baseline/itkMaskFeaturePointSelectionFilterTestTensors.mha +bafkreifz55ee2eaomxylmigujid7amdw2qz7ecfdwlde325dcjm7amsgoa Modules/Filtering/ImageFeature/test/Baseline/itkMultiScaleHessianBasedMeasureImageFilterTestEnhancedOutput.mha bafkreid7qabuh5afbykjuxmtrjl6aqakow3x7swlo2dbkop4le4r72skde Modules/Filtering/ImageFeature/test/Baseline/itkSobelEdgeDetectionImageFilterTestBaseline.png +bafkreihsko5rmgxrocnjabp7gpnwtsjudvvio4idbwhbhdpyyynuwizo2m Modules/Filtering/ImageFeature/test/Input/Contours.png bafkreid74fy6proziz4v3daj3ufm3534kitof443tzxvhhoitck6xswfqi Modules/Filtering/ImageFeature/test/Input/HeadMRVolumeMaskImage.mha +bafkreigwiwyrzzvkub6fejlth2smgfw6dg5drfwfk4b7ug5i664r3c5z2i Modules/Filtering/ImageFeature/test/Input/Swirled.png +bafkreigzlspm36smbey4l2evmcea3bzidcqrlwnwgg5rhmusx2cj3k2lgu Modules/Filtering/ImageFeature/wrapping/test/Baseline/PythonCannyEdgeDetectionImageFilterTest.png +bafkreifbhqz3cp254vktkme76jxlzqjlyhcoxtoazw7woqrphofeqqehnq Modules/Filtering/ImageFeature/wrapping/test/Baseline/itkHoughTransform2DLinesImageFilterTest.png bafkreibhyt2poizcznlpci74n2n3punxbios7fqrgpecppbsze2u5xtcce Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_0Overlay.png bafkreibsk6v5fkeera7ycklhtndc34xurwagjne24nccanbiujdratyadu Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_1Overlay.png bafkreialyrcnayuvzwndkin2vg77njxn6m5in4sijg3ax7gtlwj3iyh72u Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_2Overlay.png +bafkreihm23xj5mipt6mrj5tz7eambvxj2s6cbiqhmdlwm5enjoizmn7dku Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_3Overlay.png +bafkreigrf4uwhqdti2egx3o262q2wsvwrarrnoqex77dezvqcmubrf7cye Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_4Overlay.png +bafkreifsoimen6ylk2lgiidcvxdgsqidhgmnx5g3h45b7jcyitjxtlct6a Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_5Overlay.png +bafkreih3k7fda5iohpsjhzpgm5c3kldbqrzofopvdiwdeseltopjxia2ge Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_6Overlay.png +bafkreihmxmqzbgwewduxxqefqaznwfgk46mdx34kwmiqevkwgthcgyem6e Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_7Overlay.png +bafkreieer4mmaz3k3flc6kjvum6avvcvgalziyerk425zj6akog2kf5vdi Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_8Overlay.png bafkreidb2pobr3cyv2liquglzo62isayey435dwsb2lkvj74yxukhetccy Modules/Filtering/ImageFusion/test/Baseline/cthead1-0_9Overlay.png bafkreidzxum2kijvq2sphpb3xhbjbuxmmlohoyf2wgnljuyxukyhj6daia Modules/Filtering/ImageFusion/test/Baseline/cthead1-1_0Overlay.png bafkreiaafafrt7hm5wylsblewjup632dyn6zp4tt5jvzmc6sb3iufpod4u Modules/Filtering/ImageFusion/test/Baseline/cthead1Label-color.png +bafkreifqd3pozkxboo2awyt3rcswdbvk5dzgmdouyezkxkl67hcn7thjye Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest0.png +bafkreigdfch6gjpl4v55rpoie3vsczfnneci55u7krhxhf2nddgmk7oj6m Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest1.png bafkreice64ljtuopkxgd6kxrodan5kj6msdkqjd3xdv3aw5omouyee44vi Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest2.png bafkreiconbqbpp3nohzhuegau35f2khmai5x7sgtgjzpnc5r2qdua6v7mu Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapContourOverlayImageFilterTest4.png +bafkreigfgwnxb23rkoqe2jb6t5uphhclgxy7p4ehgrnlqtbpz6vp4xrk5u Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapOverlayImageFilterTest1.png bafkreibco7apln276jrqmxigdhwy3vd7durntmm6gvma7czq73ft3svowq Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapOverlayImageFilterTest3.png bafkreibhzjeqs7ynhgcmbp4znwpavhn2svd6vl3odedabzexmep46lyyc4 Modules/Filtering/ImageFusion/test/Baseline/itkLabelMapToRGBImageFilterTest1.png +bafkreihy4zqet3pdx6iossklclp2kislwviuryv7y4x5seu5kcw27ffupa Modules/Filtering/ImageGradient/test/Baseline/itkGradientRecursiveGaussianFilterTest3c.nii.gz +bafkreigoxr2try4tvtjsuatlddzxvl5txf7gx5e3h2yrwobi7thsrlobcu Modules/Filtering/ImageGradient/test/Baseline/itkGradientRecursiveGaussianFilterTest4.mha +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/ImageGradient/test/Input/BrainProtonDensitySlice.png +bafkreiej4ty3k7e3afhlxi4ad7x74ipxws7om6ulsrtmnvxjurkyhvabiu Modules/Filtering/ImageGradient/wrapping/test/Baseline/PythonGradientMagnitudeRecursiveGaussianImageFilterTest.png bafkreial4wyrncl2o4kec4o7zsxioqig7imp6firltaajuvhajxdi2ivwm Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_2D.nii.gz bafkreibqhhd2d55zj4hi7xk2uelnmswbwc2gcekbyewbbxyenvpcxmdwnq Modules/Filtering/ImageGrid/test/Baseline/N4ControlPoints_3D.nii.gz bafkreidlgjshvtp5ysio76so6o3f6xbh4o2ob3hvk6mhxbojia4byjlpnm Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2.mha bafkreiap2a7bcr7pspwmp4tcb34iurvjtclgrabftb2busg3tvpdcn3oee Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolate.mha bafkreidj5aetvkixbvhhvzerk7htkpi7qbasely3vfv2n5c4im3iqewdvq Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolateUseRefImageOff.png bafkreia2h2yywl2qjmmsfyahqpb5xvw2tciw3ulowfikiduqbxocljt2tm Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest2NearestExtrapolateUseRefImageOn.png +bafkreif6a3ils524c34kv7kpeo7buisv4f3cgroijms5pl3lu7algw53fu Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest3.png +bafkreied4bd6gvfm6zeoprog3wgwlapku4genvwsy67h7ibtb5qiabeqxq Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest5.png +bafkreifkbugdmokcfrbz4g4h4y5ospil6hqrqoydypeoyyv6eh3ltdhxyu Modules/Filtering/ImageGrid/test/Baseline/ResampleImageTest6.png bafkreidrv265l7734ndv4nr4ug6wvoy54xkjihyey5ljq3ahtn5btskoty Modules/Filtering/ImageGrid/test/Baseline/SwirledMirroredFloat_0.75-11-7.nrrd +bafkreifskhcsorjl36ea3u56ndb3hvzxuj2ii7dafwvpemoovyaqrnjrtm Modules/Filtering/ImageGrid/test/Baseline/SwirledMirroredUChar_0.75-11-7.nrrd bafkreiawv6zalp3eqc7ak2apuw2ytscnj6c4rttm5kob34ao53mltozlk4 Modules/Filtering/ImageGrid/test/Baseline/SwirledMirrored_0-11-7.nrrd +bafkreigxhvdsyqz3tcesarkae6fl6z4h66jpmg4oiczbosw5b7cy3ib3gi Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest01.mha +bafkreiera6coasfxfbnexvrcuej6if2v2tbngr56lm7gx75nnucks6vb5m Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest02.mha bafkreibgpk76suldbnblxtxidohhlmrs6juwgi4gkbycgj6du2kmicihtu Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest03.mha +bafkreigjqp66knrolkjjaqvrbp5jamed2exaney7brxgqb3oor7boimzua Modules/Filtering/ImageGrid/test/Baseline/itkBSplineScatteredDataPointSetToImageFilterTest05_magnitude.png +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Filtering/ImageGrid/test/Input/BrainProtonDensitySlice.png bafkreia2rtt6qpocb63z6x75s35bejgscimo62a6xrowbe4jprtoct6ggm Modules/Filtering/ImageGrid/test/Input/ScanConvertPhasedArray3DTestInput.mha +bafkreigwiwyrzzvkub6fejlth2smgfw6dg5drfwfk4b7ug5i664r3c5z2i Modules/Filtering/ImageGrid/test/Input/Swirled.png +bafkreihytwdqh24fds7jcif3ihivf5xiow2r6hjpe5zez7tdoxhdidqlly Modules/Filtering/ImageGrid/test/Input/circle.png bafkreicwnthmj6sfnbaggg3ubwmij3hdoq52igytahqjbnqrzkmcivwhwe Modules/Filtering/ImageGrid/test/Input/cthead1.mha +bafkreievzakfz2cwkqrsm5akjtcbn3h2dwonqym5aihprt4ii6ngzrc7a4 Modules/Filtering/ImageGrid/wrapping/test/Baseline/OrientImageFilterTest.mha bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest1.png bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest2.png bafkreie4ryn3gpcj4lwlpbvvbjeftywo47n4x4xrcr2yu5dqhz4c3ooppa Modules/Filtering/ImageGrid/wrapping/test/Baseline/PythonResampleImageFilterTest3.png @@ -177,104 +323,205 @@ bafkreiabsd4upcgss7erw4ayxsvpac3do5obqaskni4kdbynag3jtsai2u Modules/Filtering/Im bafkreiaakeqqbsobkemfpa547unyd7bwuc3gmrf2ndkiljdmec6r3zobky Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DITKWindowedSincTestOutput.mha bafkreicttypq3rju76jiel77jf4icreqwvyl7qmmbyhua546sxnoumwo6m Modules/Filtering/ImageGrid/wrapping/test/Baseline/ScanConvertPhasedArray3DTestOutput.mha bafkreiaa5tlak23i3zdddir3bikelpmegwm35cr6m7n5rrd575vq4lwts4 Modules/Filtering/ImageIntensity/test/Baseline/PolylineMaskImageFilterTest.mha +bafkreif6da3bwdw7pmytj6l2zecelqh46fclcmbztthrhblmkptuplfke4 Modules/Filtering/ImageIntensity/test/Baseline/itkDiscreteGaussianDerivativeImageFunctionTest01.png +bafkreihij6qld2mpmdn3neqypybcgave6oxeh4er4w6ayspnpexrjp2veu Modules/Filtering/ImageIntensity/test/Baseline/itkDiscreteGradientMagnitudeGaussianImageFunctionTest01.png bafkreiec5pblrbcnooeklhjq7bmbhshrafjfa6mtlxusmuaauj4b2e65wq Modules/Filtering/ImageIntensity/test/Baseline/itkDiscreteHessianGaussianImageFunctionTest.mha bafkreicbkpslqiepfbkg7tp7hl3cp45iv34s4t3msfpvycde3l2q7d4agi Modules/Filtering/ImageIntensity/test/Baseline/itkMagnitudeAndPhaseToComplexImageFilterTestBaseline.mha +bafkreigzz5azvkeqhrhnfxac23deznbyluqq4zl4psg4kfjydrmv2y5c7q Modules/Filtering/ImageIntensity/test/Input/itkBrainSliceComplexMagnitude.mha +bafkreigmqzqwqmiv5cq5hwyal2ex5gyizo7uk2cuqcsdogue7fz32u5fpq Modules/Filtering/ImageIntensity/test/Input/itkBrainSliceComplexPhase.mha bafkreibyp55hk4q5ez6ca7k2m74nh5swwdvrygttf55cpab3vorq5wo3c4 Modules/Filtering/ImageIntensity/wrapping/test/Baseline/PythonSigmoidImageFilterTest.png +bafkreiedf7i44wc76pnxa7hakbcz7bo725b4m2bvmnuflb26xg6pjqgqwm Modules/Filtering/ImageLabel/test/Baseline/itkBinaryContourImageFilterTest0.png bafkreidp2iun2poduyotysaam4b2diuyctuhppmt342ybf3fvylz5jelcm Modules/Filtering/ImageLabel/test/Baseline/itkBinaryContourImageFilterTest1.png bafkreiabs4xo3grkobwh4bjnrwyljffv7b6fe6f2tvet3bmi7w2hese7wy Modules/Filtering/ImageLabel/test/Baseline/itkLabelContourImageFilterTest0.png bafkreid564mt2u3hkcj66h6s53nh3umbnp3ymsaehagrgxtcd6adazypmu Modules/Filtering/ImageLabel/test/Baseline/itkLabelContourImageFilterTest1.png bafkreidpb356aruiokudkoxyo47ol4nyesw3hywpfd4dbvigbixmcebmwe Modules/Filtering/ImageSources/test/Baseline/itkGridImageSourceTest5.mha +bafkreigvn5oqo4nq2wr6ri2w3rewjebnyh4nac65lrjlpnfscibglg6ylm Modules/Filtering/ImageStatistics/test/Input/sourceImage.nii.gz bafkreic3tjfw7w3322yrhbepg55iyii24f2ldjkx5sjxvffr7adyvbmtz4 Modules/Filtering/ImageStatistics/test/Input/targetImage.nii.gz +bafkreignohgnupjs5so6tgy5upo3n2iew3i3xwb5mzfhqp74h2gtdzib2q Modules/Filtering/LabelErodeDilate/test/Baseline/axialdilate5.png +bafkreihutkwlxnie2aapzz3s2ysie74z7rszkhqt3znrw5uidvo56sxqta Modules/Filtering/LabelErodeDilate/test/Baseline/axialerode3.png +bafkreidx5qgnfstu7teg6zcpcswhltdi3d6oe64i4xojbyevcrkbcqje5a Modules/Filtering/LabelErodeDilate/test/Baseline/cortdilate_5.nii.gz +bafkreib4xillmbq46xyekntmegrixhggvhbh7ko5nvyzbnbrgfpvhqaprq Modules/Filtering/LabelErodeDilate/test/Baseline/corterode_3.nii.gz +bafkreibstbqwgyaqq564m42fn4lz2d2idanccbgme7y5zu7lm7aekmsxme Modules/Filtering/LabelErodeDilate/test/Baseline/dotdilate_41.nii.gz +bafkreigpzzhdxcwf4h6lqd7g5kbashk5aocrznygd7yh73yf5gbzpnyp7u Modules/Filtering/LabelErodeDilate/test/Baseline/holeerode_41.nii.gz +bafkreih4wdtayxyd4eidg4elaitxly52aav77jieynvqxgcqtxvvv7a7ue Modules/Filtering/LabelErodeDilate/test/Baseline/labdilate2d.png +bafkreidx5qgnfstu7teg6zcpcswhltdi3d6oe64i4xojbyevcrkbcqje5a Modules/Filtering/LabelErodeDilate/test/Baseline/labdilate3d.nii.gz +bafkreicdjwvwnesgl4debf4az55l53bioupi2opuyqcnxm4rv7u6lwcira Modules/Filtering/LabelErodeDilate/test/Baseline/labdilate3d_dez.nii.gz +bafkreihdcjzlzajfqzxjorxumyv7i4w63xve356jlya5pae3s4a4akgzhy Modules/Filtering/LabelErodeDilate/test/Baseline/labdilate3d_ell.nii.gz +bafkreihc2acgtjlasa5hzs5u4uh3gyzxy64fdhq4vewq3mzx23s656gute Modules/Filtering/LabelErodeDilate/test/Baseline/laberode2d.png +bafkreibw5okurput5fxz637uev44dwc6o6jowlo3t6epqlarqjtaotucpm Modules/Filtering/LabelErodeDilate/test/Baseline/laberode3d.nii.gz +bafkreihz4dy3rid4m52hncbw3ltrb7adhz6hkyeiu6cyvtspondubzznfq Modules/Filtering/LabelErodeDilate/test/Baseline/laberode3d_ell.nii.gz +bafkreibvmnnjqoxw32pn6grevl43jo5jn45e3pnnovxjt4cygjccj5bm5u Modules/Filtering/LabelErodeDilate/test/Input/HarvardOxford-cort-maxprob-thr50-1mm.nii.gz +bafkreidin7opdyo7vwldry6q4jxpsiglj4a6cukaojvhw5vten3njmp6t4 Modules/Filtering/LabelErodeDilate/test/Input/axial.png +bafkreiexf76zzkideuqez6nryen2ucat3i3yb7a53i7ydtrhyqmxnxx7zi Modules/Filtering/LabelErodeDilate/test/Input/dot.nii.gz +bafkreidr4hcmonqqjagd4wqlejhdrb4uzrccbja3wpbph6isxmo6fa47ky Modules/Filtering/LabelErodeDilate/test/Input/hole.nii.gz +bafkreie35wxlvvtapcrssnackka5fipw4w6aajermzeiv3dfiyyhbyxe2y Modules/Filtering/LabelErodeDilate/test/Input/point.nii.gz +bafkreigwxzu2l6cj2vzsikt6fctxcuwrfkcw3sgqopxkx6kv2jfm7xptfy Modules/Filtering/LabelMap/test/Baseline/Spots-binaryimage-to-shapelabel.mha bafkreid3h7ntijfnhljsbesg6vczwgy2xrcb5fbi3gpfi4bflrqbmmpcku Modules/Filtering/LabelMap/test/Baseline/Spots-binaryimage-to-statisticslabel.mha bafkreib7gcviltetx2tdzgynceqphyif3oint2flldewhbo7rcrexkqreq Modules/Filtering/LabelMap/test/Baseline/binary-image-various-shapes01-binary-shape-keep-n-objects.png +bafkreihnw6evv6hs52my63ztyb7ctqwkxehxmkqq4xucj5ahqtjluldnhu Modules/Filtering/LabelMap/test/Baseline/connected0lines-0.png bafkreibgnh73b4tmhyrhxjg4srbdicfewnrlq5gkquuxazpmamnqnaz7te Modules/Filtering/LabelMap/test/Baseline/connected0lines-1.png +bafkreifz5zdifwuilvajvwdmghfffknphp3d5zjzvplozhtchviqejqv7m Modules/Filtering/LabelMap/test/Baseline/cthead1-binary-shape-opening.mha +bafkreihf7kq6oaa7igtkkhjd3ptxvpv3kv3acibxeff574ojghypkge7za Modules/Filtering/LabelMap/test/Baseline/cthead1-keep-n-objects.mha +bafkreifhx73nenld46oioc7idtt4raild4gbygsf4z5bzu63zmo4hreuqy Modules/Filtering/LabelMap/test/Baseline/cthead1-label-autocrop.mha +bafkreihpzep4wv3v4qvh7zcytdtpxiumane7qplkvxh5o4e4lg7og2ocum Modules/Filtering/LabelMap/test/Baseline/cthead1-label-binary.mha +bafkreif4iqrb4ghmze573dekgdt5j5uxobn3p2jrpygcc5ngz4m47a6ioa Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changed.mha +bafkreigh6mfdnsufsnvhowbsb555obrb22lg4gy2esun3ojzx2mew2sloq Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changed2.mha bafkreiazk2vfa6ey27psukejvnjuocjil6wgtxyi4khwstzky65crzb77a Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changed3.png bafkreib7mqtcirlnrbjpjomqf26per3kr52vyvvio3nvfabzip6veuk3nq Modules/Filtering/LabelMap/test/Baseline/cthead1-label-changeregion.mha bafkreicuovubrq3mp2qbpop7mo3apeaoxgrl6ivu46atr3etr3eslqzt2i Modules/Filtering/LabelMap/test/Baseline/cthead1-label-crop.mha +bafkreiehefcpyss6z2x64ryyxnmqryjh5u56wyf25hhucjs3rzjtljcmqy Modules/Filtering/LabelMap/test/Baseline/cthead1-label-pad.mha bafkreids2jpmathkbofpi6lm6oh247rwfyykyz3uqsvrt34og77hoi7ram Modules/Filtering/LabelMap/test/Baseline/cthead1-label-regionreference.mha bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-label-relabeled.mha +bafkreigu2pwzu5bixsuien6hupcjvtgpwmezzhdypg2h6ignukkb3r7ynq Modules/Filtering/LabelMap/test/Baseline/cthead1-label-shiftscaled.mha +bafkreihumf36hcos7wg2eutxcpz2c3rfkahtido7vro777ot2b5wadglza Modules/Filtering/LabelMap/test/Baseline/cthead1-labelAggregate.mha bafkreidvdcokhtlqjx6rzsv4bmqnz6ddkuetompfnfmbns4ktey532rbxa Modules/Filtering/LabelMap/test/Baseline/cthead1-labeled.mha +bafkreihf7kq6oaa7igtkkhjd3ptxvpv3kv3acibxeff574ojghypkge7za Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-opening.mha bafkreic3rtoq6jn75kskfl2hus72kk4knlrbbcp57c4w2zatfakzeph7oy Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-relabel-labelmap.mha bafkreibx6ubenw7scurj3h5uaj7lmjrzowz5clapwvyxdezdrxtaal6dj4 Modules/Filtering/LabelMap/test/Baseline/cthead1-shape-unique-labelmap.mha bafkreic45iozaaxahsabdly573ku6tm3lwzjd3zqnkvtv2dfxmgt7vdzpu Modules/Filtering/LabelMap/test/Baseline/cthead1-statistics-object-removed-baseline.png +bafkreigqjhfzofer7yxeuieawecgu7v46rq3gx3o26mscslqohlocieks4 Modules/Filtering/LabelMap/test/Baseline/cthead1-statistics-relabel_image-baseline.png bafkreia7avfnbwl7pylctsqd3p3ub72pb3hazulavxmf6si3ap6pwvf5hi Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-opening-baseline.png bafkreidq7dpugcudka4kjzq4vzyap6hhqoknnt2uxxxbthfsi4x326i4tq Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-baseline1.png bafkreidilodoympii2vsg6zyrrmacmmddj5fnyz4kfqg7cx7u2e3po6eum Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-baseline2.png +bafkreievifnqmjzxan273wlen4aqp6okkoybmvojusmjluulff5p6byt5e Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-dilate-baseline1.png +bafkreievifnqmjzxan273wlen4aqp6okkoybmvojusmjluulff5p6byt5e Modules/Filtering/LabelMap/test/Baseline/cthead1Label-label-statistics-unique-labelmap-dilate-baseline2.png bafkreiaolvoytmswkya5jsqkkbbj5goehrb2v4njttn7tes2x34vnqfk6u Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-open-baseline.png bafkreicha3iqkizz4w3ukuwkkzoicfqxgbc7miah6sq4fkghsipbn7njx4 Modules/Filtering/LabelMap/test/Baseline/cthead1Label-shape-relabel-baseline.png bafkreidyr5bv7fsmkeq2edmlck7uedzmswqmnp5eqhgwkkjtu6ukfrjvpq Modules/Filtering/LabelMap/test/Baseline/cthead1Label-statistics-keep-NObjects-baseline.png +bafkreiedqykigqcan7723ddeqti6k7ax64nm6vhb6y274kbkkoqvwk7tsu Modules/Filtering/LabelMap/test/Baseline/fillhole_test_3D_0.nrrd bafkreibhouw5b6l7p5pjfhvqpjkykha4gjftpllyzzqkh6ocq6s37udw64 Modules/Filtering/LabelMap/test/Baseline/fillhole_test_3D_1.nrrd +bafkreigmujjnfplzi7mbseks5mchmzwyogtpqugt3uu6fhwqcc6fgv7txq Modules/Filtering/LabelMap/test/Baseline/itkAttributeKeepNObjectsLabelMapFilterTest0.png +bafkreifg2dkrzon2eqinoyuztfipkoi2q3z2cqsndl3zwovcs3zn5hj7fi Modules/Filtering/LabelMap/test/Baseline/itkAttributeKeepNObjectsLabelMapFilterTest1.png +bafkreigmujjnfplzi7mbseks5mchmzwyogtpqugt3uu6fhwqcc6fgv7txq Modules/Filtering/LabelMap/test/Baseline/itkAttributeOpeningLabelMapFilterTest0.png +bafkreifdpmjnn5nvmvl2p62d5r6l562burkhuj6jdbrwqxlvfwfbdlwesy Modules/Filtering/LabelMap/test/Baseline/itkAttributeOpeningLabelMapFilterTest1.png bafkreidpkzl657rxu6wifxnzsjzsefte3sv3bdnvufctskh6forjmb4jwu Modules/Filtering/LabelMap/test/Baseline/itkAttributePositionLabelMapFilterTest1.png bafkreiaa65dzpzwc7y4sxgyurcoozg2axceaf3fwskwqt6hmfszeafslxy Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest0.png bafkreicstgkyixnaa5lxas7q2kgslic6wyrcvodvsixjdo7hrg3yqeqp6e Modules/Filtering/LabelMap/test/Baseline/itkAttributeRelabelLabelMapFilterTest1.png bafkreid2trnawx2ivb72jqgmsv6xvgnyg3psscp67m225rm2sz5s4lv3va Modules/Filtering/LabelMap/test/Baseline/itkAttributeUniqueLabelMapFilterTest0.png +bafkreifyfbab4ufwvzmjhhdxgcmywdh2yuhgq5alusuosxkjhofka2mdva Modules/Filtering/LabelMap/test/Baseline/itkAttributeUniqueLabelMapFilterTest1.png +bafkreign2jum36onpsm2byjne54rzooblr4c5gy2kgipqtapxqugztrcnu Modules/Filtering/LabelMap/test/Baseline/itkAutoCropLabelMapFilterTest2-163.png bafkreibdx3cr6tnotzdanwfrmkprmz2jqqjcubj7vvh7mfnivm4dpy6tze Modules/Filtering/LabelMap/test/Baseline/itkAutoCropLabelMapFilterTest2-92.png bafkreidlbycgm2lwqy62w65tcakcy6hbqqho6yubaogvo7v3ekcdlpd47e Modules/Filtering/LabelMap/test/Baseline/itkBinaryFillholeImageFilterTest1.png bafkreids2esfeesjolyl2gt5t2hb3phjn4peampspomc7h7kjznew4os4a Modules/Filtering/LabelMap/test/Baseline/itkBinaryGrindPeakImageFilterTest1.png +bafkreifttmq3hpsiicfzunerutetp6tn5btccm2u6lwtrogijg2lo2bjmm Modules/Filtering/LabelMap/test/Baseline/itkBinaryGrindPeakImageFilterTest2.png bafkreie3zmi5chrtruqgiixbkcqf6nv4hjfth76xzoiuhxcngtsigcri3i Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByDilationImageFilterTest.png bafkreibyiq55l5aopgxp3jvb6du4d6fbmrhvrzlcsmuerfccazf3d3mve4 Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionByErosionImageFilterTest.png +bafkreihk5bvpxrnaeum44yjtl5s2hbh3fb5wzn5uus45meeyxaj3qaeyxq Modules/Filtering/LabelMap/test/Baseline/itkBinaryReconstructionLabelMapFilterTest.png bafkreibixcavzrfp7yffzvnzysy7blunaddrov62jx4awvxwykb7teh56m Modules/Filtering/LabelMap/test/Baseline/itkBinaryStatisticsKeepNObjectsImageFilterTest1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-0.png bafkreidza2r6typihyxvj4nsht75s2dsgd7n6hihlt32r7einkv5uflh6y Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-0-1.png bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-0.png bafkreie6v45im4bnhpnn23mrghme4v56ubooapuydel5dyjcv5wpua4z3q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-0-1-1.png +bafkreig5ts7bjilaivmctvproxcaphacxjjvc2ftmwosrgqumudzb5ayk4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-0-0.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-0-1.png +bafkreihr72kg6pnsianp5ryhsjh2tow67d7jxy4kncsyyyb5rj3imai3hm Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-1-0.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTest-100-1-1.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-0.png bafkreicgtdpaw2rbtkhvoydgpuwnmmjbd4qnk2g3bn47veizhapfw4czf4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-0-10.png bafkreibx4b5ws4ghnirs22ekrirf4sqix2o7z2frzobmdork35gn62tmpy Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-1-0.png +bafkreihxn4vwpfqmwyykmvf6ssreke67fnw64e76iq4e3bcpebka72cnky Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-0-1-10.png bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-0-0.png bafkreibxbrrkr3jz6uyx2f4uydr6lj7eaxaeceua2vkhfmoxiip6zwso5q Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-0-10.png bafkreian2rxokqsq2apfl3bi23xcahdsiny56i3tezblfsepuouagisgca Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-0.png bafkreibtlz634jlkl6qigh53sgxvkoktgkdpbf4s3jbda7frudzjycu4oq Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-0-1-1-10.png +bafkreigwfm3hpxxu7gjrcaqn3ftw46utvcbcxdeuit6j7hi2zg4pjbqbeu Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-0-0.png +bafkreifosj5xh4fsosbiqmp2f2hbwe4kddw3nbe2opepxuopqg3dfsrv7i Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-0-10.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-0.png bafkreicsigw22zlyk2g7vflffbe6mdrmx4xx6xv7b6j4ldajb6hicbsbxe Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-0-1-10.png bafkreidixrvvk4yzlz2d7y3i6jghhjflshlq3jheibwd4lmmxhkp323ef4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-0-0.png +bafkreigh76huxhigzk76nyovuessi3zr6pilbz2nqgnru3sojvi6suv77e Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-0-10.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-0.png bafkreiaj2tevbz3iscvtya56lymlf2amx5lhrcatv4ud4ywphoikjsw7ea Modules/Filtering/LabelMap/test/Baseline/itkLabelMapMaskImageFilterTestCrop-100-1-1-10.png bafkreicnfl7sb4dd3pa3rtl55j5jeuxfwixzxeendf6ecwqnqhnrme3oc4 Modules/Filtering/LabelMap/test/Baseline/itkLabelMapToAttributeImageFilterTest1.png +bafkreigigffes3qqhrrcut5sp3ncjhognyde52aodhyegagzqsnitnbcou Modules/Filtering/LabelMap/test/Baseline/itkLabelSelectionLabelMapFilterTest0.png +bafkreigw4263kq3og4suwzl4hh62obspvn3qhflyy2hux76vgqft44twhm Modules/Filtering/LabelMap/test/Baseline/itkLabelSelectionLabelMapFilterTest1.png bafkreiaravwcdt24qwqq5fqgizxnmagrxab7syd2pbxbvuot2dv6xiq3qq Modules/Filtering/LabelMap/test/Baseline/itkLabelShapeKeepNObjectsImageFilterTest1.png +bafkreiecpwejmmswftytro4ojf5umd56gviv37xzutevcwruohqfbqsugq Modules/Filtering/LabelMap/test/Baseline/itkLabelUniqueLabelMapFilterTest0.png +bafkreiftobgzokjmv3pzj2mfpbgcykkm3wxk4azxukk6b4xovf5fjtkv34 Modules/Filtering/LabelMap/test/Baseline/itkLabelUniqueLabelMapFilterTest1.png +bafkreiej33oqxchwslhghqdpmu2znqovllhjbsgwmmnq6psdq6rabxaq5q Modules/Filtering/LabelMap/test/Baseline/itkObjectByObjectLabelMapFilterTest0.png bafkreiddzk3n7kkckwvyqaulckf6lryjhkddldxdrjnwxglcadaaedvdme Modules/Filtering/LabelMap/test/Baseline/itkObjectByObjectLabelMapFilterTest1.png bafkreicjyx5wr6ehg42gfqoqpnidwtcjxqwzymdk46jjfbpdntvfrz754e Modules/Filtering/LabelMap/test/Baseline/itkShapePositionLabelMapFilterTest1.png bafkreidzqwp74yj3lyx5e4lqqtviheddkqk3tkeolijmx5fh46arwajmxy Modules/Filtering/LabelMap/test/Baseline/nonConnected3DLines-0.tif bafkreiazarivpcf5g5roteydftoqclzwhylaipzjydmzhcqtpcvhoqhd5i Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-aggregate.mha bafkreibgcx5ep44ack3p3smspyr3msp2ycc2xv2rnx4oqcsovazuij5qua Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-keep.mha +bafkreiff5x5gislledjzggmfkvmjlhknkt2kl36ewv3auwq4f3xrzvujzq Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-pack.mha +bafkreih2bcuzm7wxotfomjf5pp2yppnytgpj5vgqyzdtwl3thac3dpw4qq Modules/Filtering/LabelMap/test/Baseline/simple-label-merge-strict.mha bafkreickoaksql6nb7wktta2x6ps5oxxir2njwsuwcfwqqy6ajxvmojszi Modules/Filtering/LabelMap/test/Baseline/simple-label-to-shapelabelmap.mha +bafkreihk6cce3msivskjtcetf5rgxa2pr2mvvnctjm6hiyyuwj7jq3e6ki Modules/Filtering/LabelMap/test/Input/cthead1-bin.png +bafkreieilrgrns7xcna5yle2yw3q2wxkl3wn7lp22k4d4pwjhlhwc3ed4u Modules/Filtering/LabelMap/test/Input/cthead1.png bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Filtering/LabelMap/test/Input/cthead1Label.png +bafkreieiivjbu4msrzxudc4radedqkrt6k6d2uiptvnd4q72jxhnwonrdu Modules/Filtering/LabelMap/test/Input/fillhole_test_3D.nrrd +bafkreifxrmklaam4hvkiwdgkq7h73fph5or3mz25vavqzuwgdjddcttaje Modules/Filtering/MathematicalMorphology/test/Baseline/ClosingByReconstructionImageFilterTestFullyConnected.png +bafkreietqfebga5hfiajwxwsb6qi3cw2jl3jsqcvo3jiw2jbtwdedsoo44 Modules/Filtering/MathematicalMorphology/test/Baseline/FlatStructuringElementImageTest.png +bafkreig44hfoursifxcebhrjied663mb5wnqdfdq66hf6marqisxdg5ebq Modules/Filtering/MathematicalMorphology/test/Baseline/OpeningByReconstructionImageFilterTestFullyConnected.png +bafkreieys4nqq6qvu5gvwsse7twx2pusqcnkv6mjd5ykj7kokcf246sz2m Modules/Filtering/MathematicalMorphology/test/Baseline/OpeningByReconstructionImageFilterTestNoInput.png +bafkreieys4nqq6qvu5gvwsse7twx2pusqcnkv6mjd5ykj7kokcf246sz2m Modules/Filtering/MathematicalMorphology/test/Baseline/OpeningByReconstructionImageFilterTestNoInput2.png +bafkreiecmxeciskyrrq2qzcjwby7ri5jl5ogkpgqknvt77n2rqo2lqvdgu Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMaximal-ref1.png +bafkreighjflo2a43dohqb6d5gnh4eesjys2c7jz4bqevpud7whk5xqsnle Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMaximal-ref2.png bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal-ref1.png bafkreie6eqt74fjdime2sug4yhhkickcgt5sxrydtgm5r6hjyxnw6iedse Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal-ref2.png bafkreibth753xk6tt5jp7ii5ledk5wlqzwiug74uclwhymxhz775swscza Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal1.png bafkreie6eqt74fjdime2sug4yhhkickcgt5sxrydtgm5r6hjyxnw6iedse Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1RegionalMinimal2.png +bafkreifrr4vcj32pk2cmxneit7aaq56ecw6by33wuv6flra3vmp4agh4ie Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMaximal-ref.png bafkreibnunlresb3jsg2pxvepfn7huridcvmj73fszyo54ghy4e7sdpfvi Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMaximal-ref2.png +bafkreihgrlvq7kdcr6k74qy56bsm4ge6wiip3cqg5zbc7gauodfh2jqgpq Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMinimal-ref.png bafkreiaotugip2xb4csi77nbfq5ns3shcsycwr6gnxbrys6clc4hrxf4xm Modules/Filtering/MathematicalMorphology/test/Baseline/cthead1ValuedRegionalMinimal-ref2.png +bafkreiga7fx5volmkax7im42675tnzrqndalzfqw22zscbubcdhltp5f4m Modules/Filtering/MathematicalMorphology/test/Baseline/itkGrayscaleGrindPeakImageFilterTest.png +bafkreiejvf4gofyddmeppemhoumhop6emimqxbohvvbatxyfxtrvlwubzu Modules/Filtering/MathematicalMorphology/test/Baseline/itkMaskedRankImageFilter10.png +bafkreihxdslacor4t47jgufytz22ye5ymyqszirmv57irii4dkz2fssdf4 Modules/Filtering/MathematicalMorphology/test/Baseline/itkMaskedRankImageFilter3.png bafkreibmhc2r37iza5helbebjxtc6qvtb4s7kgf66iblapjzxbjdi4kzly Modules/Filtering/MathematicalMorphology/test/Baseline/itkRankImageFilter10.png +bafkreif6acvpwid2qu474okkqzmgsggw2zijjs5n26vdsj5kcwfjc2tzju Modules/Filtering/MathematicalMorphology/test/Baseline/itkRankImageFilter3.png bafkreiaqaq6eg2igma3pwwqzvcxru4c3g2q5ixsxotpisradvew56qxc2q Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonBoxGrayscaleDilateImageFilterTest.png +bafkreifak32lechhy3nebl7goqcdwgvpthkzog7gnicfx53ugw6ut75cny Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonGrayscaleDilateImageFilterTest.png bafkreiaoa7f6wv446lhb3qdejvs2yqedjq47a4onrruo2in5t36lpalwyq Modules/Filtering/MathematicalMorphology/wrapping/test/Baseline/PythonGrayscaleErodeImageFilterTest.png +bafkreieyxq2q637x2lb2o2ziv6kkg37di7c4gmsgacc5fk25boitvzgxza Modules/Filtering/Path/test/Baseline/ExtractOrthogonalSwath2DImageFilterTest.png bafkreiamwjgxwrccw45ezifqpo2cifxuvpq34c2jamj4ybobrvq4ms437u Modules/Filtering/Path/test/Input/ContourExtractor2DTest.tif +bafkreiel6kq4xwgafxgamqp7fo5hmvwyfxy5a4nzhrw25u65pj7iy2mjyq Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilter3DComparisonTestOutput.mha bafkreidg3jhkcudxy6hsjsbskzubv6sjzbkufrdwyly3p27lns3r565uaq Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilter3DComparisonTestOutput2.mha bafkreibk4tqhmbtujvrq4irwfq5xm44tobzxqqz76n6i4txw7kcisw7xyi Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterComparisonTestOutput.mha bafkreiadgikxnwpdkuqqfwb5cxjud5iv3w6lhk7gn3rxnabozxtksict4m Modules/Filtering/Smoothing/test/Baseline/DiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha +bafkreigjpzdfwi5nrhiskqbbcfurhdpu3sg6twhhogdhns267fai43qbty Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DComparisonTestOutput.mha +bafkreihrn42qu3loragbde3qspg6dv7fhds6dfizecbaalofeljap4upom Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DComparisonTestOutput2.mha bafkreie7amn2xiqlgurlwrs7azl4u2d23vlqfoakoecpaz4ef6z2elqefe Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DImageSourceTestOutput.mha bafkreie7amn2xiqlgurlwrs7azl4u2d23vlqfoakoecpaz4ef6z2elqefe Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilter3DVolumeTestOutput.mha +bafkreiehyf2zlg7qr6jp76d5ipdfwkbuowfm2fiwgo545zlq52bjl56cvu Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterComparisonTestOutput.mha bafkreiccqgvi6m2ce3h6ac2lw3yrksjecd22ndcujkr5xngq6uptpskwou Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterNonunitImageComparisonTestOutput.mha +bafkreihgvbswfw5bcohhzszqr2bqxtn2jw7fiozxvawvh72dsrqiagzjoa Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterTestImageSourceOutput.mha +bafkreihqf7bfl42zd52kktmmjfk2kezjq4r7ujq4kfz5kxwuis7l6ov3ei Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterTestKernelDimensionalityOutput.mha +bafkreihgvbswfw5bcohhzszqr2bqxtn2jw7fiozxvawvh72dsrqiagzjoa Modules/Filtering/Smoothing/test/Baseline/FFTDiscreteGaussianImageFilterTestOutput.mha +bafkreihkv6tcwxefripzcvy7zg3rrx52io7h2c2ovrzpv2feazaa7n4poi Modules/Filtering/Smoothing/test/Input/cthead1UC.png bafkreibvtk45wutfzl5stzflrs3qec3hc3xcfma5ljs3knobyoun2hz6aa Modules/Filtering/Smoothing/test/Input/itkDiscreteGaussianImageFilterTestNonNullOriginInput.mha +bafkreifqgplavbywfy2skdu5rxrlz3ovz7w4ugvkzdekt6ma3utrrky2ma Modules/Filtering/Smoothing/wrapping/test/Baseline/PythonMeanImageFilterFunctionCallTest.png bafkreibvkecapgicynipvtocl4hlauraurvge2ulwb7gdmpp6swcjbmgsy Modules/Filtering/Smoothing/wrapping/test/Baseline/PythonMeanImageFilterTest.png +bafkreihnhrejwpszvwuqkz4xxc6vcevkw3qn7pevjd7yb3brkzgfxsysbe Modules/Filtering/Smoothing/wrapping/test/Baseline/PythonMedianImageFilterTest.png bafkreicxwt7plyqbdjr3uwbxqtvu2fjqtprdmvactzztnkb4hcpj74n5la Modules/Filtering/Thresholding/test/Baseline/itkHuangMaskedThresholdImageFilterTest.png +bafkreifjm2enwogeegzhybs662cqjxewuf65zvxes7ul36ygubxqqxk4yu Modules/Filtering/Thresholding/test/Baseline/itkHuangThresholdImageFilterTest.png +bafkreigyna4yjgwsrwyecbue3rpi6ns52aqb6lt2nu2bj5yhqa52rcqnse Modules/Filtering/Thresholding/test/Baseline/itkHuangThresholdImageFilterTestNoAutoMinMax.png bafkreicv4umvfawdtgev2p6tksjirrwrhnn52wiczd75lg3piasfzi5j4u Modules/Filtering/Thresholding/test/Baseline/itkHuangThresholdImageFilterTestShort.png bafkreie5feezitdui6y2jjy5u5xugobxv2ux4ose65vujhtg5hpsmsp3c4 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesMaskedThresholdImageFilterTest.png bafkreibzn3b74i5zezq73duvw7lyswoq2d67tnyqto2vk4azoqmt6l64du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTest.png bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoAutoMinMax.png bafkreibmtygi5lbpzcdlviv5uatbqawsd7vdahkqprgjxw45zfkvolx6du Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestNoInterMode.png bafkreicjgfyc4ewexfsvkwteh2nnzvzpupq3cf6gbj3th436jit5q5t424 Modules/Filtering/Thresholding/test/Baseline/itkIntermodesThresholdImageFilterTestShort.png +bafkreievyvbwsgup4cymj6vlvbvq77cd6yrz5eqb4m53qurolzmfpmq3di Modules/Filtering/Thresholding/test/Baseline/itkIsoDataMaskedThresholdImageFilterTest.png bafkreib7vrf6g3iz3surspjdc7myzta3obaz7vm7ms25h2xor45dp3oqrq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTest.png bafkreiaapie6l3gbobvkct2c6hryaox4p2pcpuqstoxl43ewxmrgiucbcq Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTestNoAutoMinMax.png +bafkreigovvi2t7gsbh2mxy24bzdz3gv3asbwg237omktainnu3uzzcdwae Modules/Filtering/Thresholding/test/Baseline/itkIsoDataThresholdImageFilterTestShort.png bafkreideq7pl54n3rqmyhdigych7wfboz5kge767vur4cll53ybmystiqa Modules/Filtering/Thresholding/test/Baseline/itkKappaSigmaThresholdImageFilterTest01.png +bafkreihh4yz4ozk7h6izviqsdsj5v4kvwoobplpiqdry624fk4awrcjnui Modules/Filtering/Thresholding/test/Baseline/itkKappaSigmaThresholdImageFilterTest02.png bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthMaskedThresholdImageFilterTest.png +bafkreifdcao3eyvnct2odkllrsuabhu2kcb6st53rfuxzcjes6btjl7jvm Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTest.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTestNoAutoMinMax.png +bafkreife7qga45sxy62ohxh7dw2wwnwb5j6folwt6gb55g364hk24scvsm Modules/Filtering/Thresholding/test/Baseline/itkKittlerIllingworthThresholdImageFilterTestShort.png +bafkreiefv327deqpcvhl5o652m6k5h5t5j5gvf74lemlq6byoxxmnjomdy Modules/Filtering/Thresholding/test/Baseline/itkLiMaskedThresholdImageFilterTest.png +bafkreihq3splfcp56t2et63xqbtqdxj4fmtjls6i6zdkvfkm4tcizf4mqm Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTest.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestNoAutoMinMax.png bafkreiadkgfv43224uezlnzbo3h5mivcd5kcagi2domkqxrrwuc6fx3gm4 Modules/Filtering/Thresholding/test/Baseline/itkLiThresholdImageFilterTestShort.png +bafkreifvw6reb4cn53ip26ba5mmspvz6v3sudjr2p27ld7cyp5p4tee24u Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyMaskedThresholdImageFilterTest.png +bafkreifxxy6tvuw3gzm6lpjzbuzgpha7e4jez46mzu4fiofgepwac5rgey Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTestNoAutoMinMax.png bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkMaximumEntropyThresholdImageFilterTestShort.png +bafkreihb22mw7652axbcvy72lduknifaqc4izuhwn3a753in3sapdaxe6u Modules/Filtering/Thresholding/test/Baseline/itkMomentsMaskedThresholdImageFilterTest.png bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestNoAutoMinMax.png bafkreiaiqtcss2pmzbriei7ywwiqmr72ce2id3jwbcuodecxevzctjad3q Modules/Filtering/Thresholding/test/Baseline/itkMomentsThresholdImageFilterTestShort.png @@ -282,75 +529,154 @@ bafkreibhu2h5jlllfhjfdv3meoudfapshmb2mh5p3mgvrouufot5n6ayzq Modules/Filtering/Th bafkreiaqccnhzhddvv4kbz23lcezdi6toxtdryc25ktbatbhldydxfpnii Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest.png bafkreib4ggikzuopjpjqjvidx4mqq4ogkzsk5rc4hd7vzlxnnmug37g5me Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest2.png bafkreiaw5jajc4sfmag5ra2x2onvkdey2uxrpkvs5xjvbpbluejpbkpqzy Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest3.png +bafkreihubdljbl3xufonjv5gsiscfzokvut5hxxxdytzwku4lml7rk7jhi Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest4.png +bafkreigldei6vztd7l25twjjb2bxkhehzoovc63f72moovtjeahxdwa7mu Modules/Filtering/Thresholding/test/Baseline/itkOtsuMultipleThresholdsImageFilterTest5.png bafkreib5v6t4wwgohmli4zmvoscdfvl3wqg74tss6n7cplnnvfi7exxjle Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTest.png bafkreib4ggikzuopjpjqjvidx4mqq4ogkzsk5rc4hd7vzlxnnmug37g5me Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestFlipInsideOut.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestNoAutoMinMax.png bafkreiagapn4qalqljzg62d2xlaleljab5evfqkpjx7tpcdnmajbmvpylq Modules/Filtering/Thresholding/test/Baseline/itkOtsuThresholdImageFilterTestShort.png +bafkreifvw6reb4cn53ip26ba5mmspvz6v3sudjr2p27ld7cyp5p4tee24u Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyMaskedThresholdImageFilterTest.png +bafkreifnv5vfhu4jwxi7ysm6xwggnqm3ywgvwhvnxpquvwr5724m4bqdly Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyThresholdImageFilterTest.png +bafkreieixspqgqkaulgleywk4btlqmvwu3wfvp7of5l4ydejbl3icn2adu Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyThresholdImageFilterTestNoAutoMinMax.png bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkRenyiEntropyThresholdImageFilterTestShort.png +bafkreihabnjxwocr4ksmbbaflzpmtvargqopwex4rit2ynce3ticb26xg4 Modules/Filtering/Thresholding/test/Baseline/itkShanbhagMaskedThresholdImageFilterTest.png bafkreicr6yeiugeqeh4u6jfmjd5kdjzd5w3qygbsbdwjsm4qkyjqgyeeha Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestNoAutoMinMax.png bafkreiclkcj6vgvql6axqm4joameb5lh3gumvctcjiwsczquic45ajs6zu Modules/Filtering/Thresholding/test/Baseline/itkShanbhagThresholdImageFilterTestShort.png bafkreibnmfmadtx3k53wbg2cc6gnpnth5xv5xzqoys5iga6ncryag5fuma Modules/Filtering/Thresholding/test/Baseline/itkTriangleMaskedThresholdImageFilterTest.png +bafkreihuvkq4pvuf5zwkkkaeh2ftopff3fvby7ocsyjy4yogbv3rwglpfe Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTest.png bafkreiccigumdowwy6oas3nuoccg6dqguar3vjgqwuo4fq3pdeb5zzrrny Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTestNoAutoMinMax.png bafkreiea2mzggrfpuw2kijudb4cqnrgcwyvbeqvh7ejylpmhugpdfmpqri Modules/Filtering/Thresholding/test/Baseline/itkTriangleThresholdImageFilterTestShort.png +bafkreifvw6reb4cn53ip26ba5mmspvz6v3sudjr2p27ld7cyp5p4tee24u Modules/Filtering/Thresholding/test/Baseline/itkYenMaskedThresholdImageFilterTest.png +bafkreier56qbjd337v73koocyyk7ykzazc625uvnb57r5gt5b3dzujxhmy Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTest.png bafkreibkp33jf5s4e5k2ow3qtdfd5ggvmihlxbeavmsrxvwj74i6gvcxau Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTestNoAutoMinMax.png bafkreid35gnje4ezr4esquclevharr25vwffsexysno77n2ofdc47nls6y Modules/Filtering/Thresholding/test/Baseline/itkYenThresholdImageFilterTestShort.png bafkreial2pas6egwlkcpyiu5t6dhwrzbcn2dmjn34weektc65du3juopku Modules/Filtering/Thresholding/test/Input/image_3modes.png bafkreiaf6axgqa52icrai6ekwvj4ztntjothmfc4j67qsqagahx6queqay Modules/Filtering/Thresholding/wrapping/test/Baseline/PythonBinaryThresholdImageFilterTest.png +bafkreihb52hydakfa25mbyulnsjt34en7msatebkt6lccribotk3i5jaym Modules/Filtering/Thresholding/wrapping/test/Baseline/PythonThresholdImageFilterTest.png bafkreie7x5jrfg5gho75pxvtcu3fgeazyibbqpf2pnzdryppvb4bil6psq Modules/IO/BMP/test/Input/HeliconiusNumataPalette.bmp bafkreicpd66yibfo6o56oawyuyxcc645aqekapzctcuuq4mwybxgpnr7dy Modules/IO/BioRad/test/Input/biorad.pic +bafybeicbq6obiy7tphw7urjghf7ifx6cccd2wbm2grdpzopl6ogle6frhu Modules/IO/Bruker/test/Baseline/PV5.1_FSE_INT16.mha +bafkreieqtmim6xo7dstt7zpttr6wrze6cbp4sluxmnfvumyvrzxucr2zdq Modules/IO/Bruker/test/Baseline/PV6.0_FLASH_FLOAT32.mha +bafkreih7odnqxuawl3jysglfcuyfvtds6mi2wt7dldmcbh3fc2hopssv34 Modules/IO/Bruker/test/Baseline/PV6.0_FLASH_INT16.mha +bafkreieqtmim6xo7dstt7zpttr6wrze6cbp4sluxmnfvumyvrzxucr2zdq Modules/IO/Bruker/test/Baseline/PV6.0_FLASH_UINT8.mha +bafkreigypo3j7ihbcy3d7vacb2z3hyqartonmjxyzcegt34btsrt4dnbaa Modules/IO/Bruker/test/Input/PV5.1_FSE/.DS_Store bafkreie36scgdx3bgvb2tdulfhwx3s6y7jb4ovzsvdh6d2am6xrt6rmmea Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/.DS_Store +bafybeiao4jevbakjkxmka4zrjuezv2dhb3djpqldfbbgk2vibqoc2pd4qu Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/2dseq +bafkreigyqlbkneizrx7vm3ewlkjn2cbwmp7hoyhq5d7ot4h4pgy4raqily Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/d3proc bafkreia5wd3xlz66gvwpdnfi5bvpnv2ws2nc6p27toyuhwq5p2hgfthhky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/id bafkreidp4clligr364foldqsxkrad5kwtmdju5af5asgpay2kebzjvmbkm Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/meta bafkreiapkxryvtcstzb2xhxdx7mj24547lmjk3veforbutwaohe6t7qcky Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/procs bafkreibmjfvjkedwz36qfmde6pph7fvdrpj2z4okx5ogcpls3gtitb6pgq Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/reco +bafkreifjvgs67mssu6nxvtgwwwtvaugwx4e5nfudsisc4h5nlxs7zh3jfa Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/roi +bafkreih6oz5xcqmrdwhemcjj7ccpwygbcffnwfhy3uq2lrbb2kajioimby Modules/IO/Bruker/test/Input/PV5.1_FSE/pdata/1/visu_pars +bafkreifasyuyvmni23s2aeqbljatu23xy7f3x5b3n6zd45gzeo4hwrpnbq Modules/IO/Bruker/test/Input/PV6.0_FLASH/AdjStatePerScan +bafkreigtk2wi3th3ukhwylxtbx5ltut2yj4jvwsqyg7xycgjz6c4az4w7i Modules/IO/Bruker/test/Input/PV6.0_FLASH/acqp +bafkreihget22vg7arevtmeteabxv7toa2qy2d454wrbdbnjocuxvgjwlgy Modules/IO/Bruker/test/Input/PV6.0_FLASH/configscan bafkreidubmvtxf2s3rc3k47hpcsvc3w7n5j3mikrsklg6zjbkxofyvg6vi Modules/IO/Bruker/test/Input/PV6.0_FLASH/method +bafybeigvbdyyvgxw5khxcudhrvmrz3euzn7xpuo5impvovrqtvp36qs3qi Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/2dseq bafkreicugsxameb7vraybmu7fal3w7wfe6le7b2ovenwgf3zhv6uq6fzba Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/id bafkreia6dezn3wji7sz4edjwxrixhkwo5zju43dmrrf7asx3ckhgnoh4ga Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/methreco +bafkreif64buryxjxs5j7rgryarl43v3elv7hkhpr74okafawwgigw4y2pu Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/procs +bafkreiect4ymmmrf5dvzeg3vitegiyz2npiqd7xu6qwhk3kqlio4mfewoy Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/reco +bafkreiglrhunqipiopzltiay6rqbnh6p6t4vvg6ij4m3llsiz73mbewzta Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/1/visu_pars +bafkreigfhkhkkgnsyg3fddmfaxl34lizzn5bju65ft6k5eoibd35ugs2aa Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/2dseq bafkreica4q7r7ksbmldhao3poinrgksit4w7meadgh5e7vww7bhyptyjvm Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/id bafkreiaba5gipn3ln5ufagyf5kncyy77uk4bghmu7mi5xuztjkdldv4xou Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/methreco bafkreibwmf3snyrmne4brkvxszoe6f2wcjqvsbs7y73gphpaffpgm6pv3e Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/procs +bafkreiglleyusggnc2cizjtnta3ejml6r52kcxu35m3l4nca7oa7oqiwlu Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/reco +bafkreietbo3cz5xyngzqobfpu4bh34yrsjr6i6qiazbgut37gifvm3ykum Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/2/visu_pars +bafybeicvk7d3szmgqffqtglhxs3g3lk72x3teh5gly7k2vkth4hdzs5qam Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/2dseq +bafkreifurmrivur4ngosapseqkzf7lznkdcvl2pj6fd4dcmbr6msinv7ha Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/id +bafkreiehzqkibd32sd76plru26svigq74vkystr37uzlxquwi2sbd6ms4i Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/methreco +bafkreieig3754b755oze6hehjrrcxu3euogjen33cqdxi5ktpe4kxudrlm Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/procs +bafkreiheli3bwwrwss3hk6l62c4uya5zqyydyxpr2ihfzashqqwaabab3m Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/reco bafkreie2oos3gwojkqyiocf3li5jwlcg3avgrswcbtlljqfzd4emloaxwy Modules/IO/Bruker/test/Input/PV6.0_FLASH/pdata/3/visu_pars +bafkreieyo2o6nirf7udozd3ljhuucjpigtnfmdkl43sbhrl3m7lfpt4nea Modules/IO/Bruker/test/Input/PV6.0_FLASH/pulseprogram bafkreie5nvtnupw57f7cgu327gcjowyp32yytwqzhvz6t64q66h7c6zlt4 Modules/IO/Bruker/test/Input/PV6.0_FLASH/specpar bafkreiduu6lvittejbofj5oe7dtz3debf6osh52vicoeha33hh754p3fpq Modules/IO/Bruker/test/Input/PV6.0_FLASH/uxnmr.info +bafkreif5abbmg52bqsriieuyxtmsgqopbvmg6q22w2pv5mweaxuednk2ze Modules/IO/Bruker/test/Input/PV6.0_FLASH/uxnmr.par +bafkreihezoz3nzrmwxbssf4hmiolygwcpzw7j7knbnoidby74urikdzapq Modules/IO/Bruker/test/Input/PV6.0_FLASH/visu_pars +bafkreif25he2bab4qygiak6q334x3wg7bm4izzqb6qrqmsbpfvt64sfzti Modules/IO/CSV/test/Input/csvFileReaderTestInput.csv bafkreidhnxxjnfiucmnurx2kcvjo56pse3waxm6yuzqqrsygcknwx5fyyu Modules/IO/DCMTK/test/Baseline/itkDCMTKColorImage.png +bafybeiai2acs4g7k6aeneziwgi3tw2i33idmnzclpyh4mt4dqvgktca7gu Modules/IO/DCMTK/test/Baseline/itkDCMTKColorImageSpatialMetadata.nrrd bafkreiamstfxjy2fiyzoxubq6g5gmp5b47oro6iror6x3ps3zckmje55sa Modules/IO/DCMTK/test/Baseline/itkDCMTKNonSquare.nii.gz +bafkreieqfc7xcq7gogg5cisurwbcmhbfn3jo3stg32oh4ywbz6qqltll7q Modules/IO/DCMTK/test/Baseline/itkDCMTKSeriesImageOrientationWrite1.mha +bafybeibcdcnqx5hmsmlxsdqg6pfyjy6zx3n6hp47bnw7iyfal63iii7l6q Modules/IO/DCMTK/test/Input/MultiFrameDicomTest.dcm +bafybeiabdmcpjhqoi7hfxx4vep27nc5y2ubclimgkcosk2cgpovbulwxim Modules/IO/DCMTK/test/Input/MultiFrameMRIZSpacing.dcm bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/DCMTK/test/Input/NoPreambleDicomTest.dcm bafkreidvhgcecqrku7u63wbzocw52mragf5i4ycbixcon5yohdlfctr63y Modules/IO/DCMTK/test/Input/no_preamble.dcm bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/DCMTK/test/Input/preamble.dcm +bafkreiedrc4pxpexbyimlnqgx3shjcwdsklfsppa4po5lxo7rg4d253caq Modules/IO/DCMTK/test/Input/slopeIntercept.dcm +bafkreifu2zguvlkjiijot75jyyve4y34cokanyj6kp7xbukxifj2praily Modules/IO/DCMTK/test/Input/slopeInterceptOrig.dcm +bafybeiadtxwvshbmde3aywkzlzcudcoxypafxrshabby6gmdmtawapjzre Modules/IO/DCMTK/test/Input/visible-male-rgb-slice.dcm +bafkreih4irpsshtdat5dvqmkdmgzguaol6qmz5mrskxtxmvjvrawuy32bq Modules/IO/GDCM/test/Baseline/Lily.mha +bafkreif23iisdqxymfv6kfjxxz6cefjubw4vyltiiyixhhd6khnkqntrzi Modules/IO/GDCM/test/Baseline/Lily.png +bafybeig7pgo3x55bfh47ymckelybsug7rv2nqwjic2gzurvng6o3vqoux4 Modules/IO/GDCM/test/Baseline/Lily_full.mha bafkreidytocxwtbcum663dk53pgw7dx5dh57bzpqdmle5ar6yern4dxbq4 Modules/IO/GDCM/test/Baseline/US1_J2KI.mha +bafkreih3tgfsl2amikkipd5olxf3gohcgk72agbqkvz3dwrs2pb6ddszze Modules/IO/GDCM/test/Baseline/US1_J2KR.mha bafkreibzdrcgqyc3xtkxqh7rfpxf5oji35b2g5yujsaiwxltp3kwmxbixe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOSecondaryCaptureSpacingTestBaseline.mha +bafkreihk7sds7epiwm7p4qcy7tk4ym67byz2glgv5pxrh6bdxuwrbgekny Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest2Baseline.mha +bafkreihs2zis3vqg5kpxrojw57tq5xqg6t3lh77nmno6stsojo7y6dps7a Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest2RescaledBaseline.mha bafkreib3lktbjlrszzl5mzaolbdacndc3yuhsqdsloqtpm2m5pu3ieqwoe Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3Baseline.mha bafkreibbd7klq3uhpmfqxbmzglyrf3jwnp5hxn3udmrurnnplfflmoclka Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest3RescaledBaseline.mha bafkreiaywvi7sthuyqph4li4y44gmm2lhl6cindt7uruouvixmahnuw3xq Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4Baseline.mha bafkreickm3dtemtmkjzabwm2pk4cguqgetzopgzsctup3bbzv7nmajrgpi Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTest4RescaledBaseline.mha +bafkreififr5tzsowuizt3sg6eeponsdyue6f735q7feuiuyuis4flyal4i Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTestBaseline.mha +bafkreifqaycilgy52jjjytkjbfrfaioc57bfjnfhfuuynozr3g3xmv6apu Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTestIntToUint.mha bafkreidni6mcuqbmp6rv52v72om24g377nd7bjqcizcv2jiyrmujnecww4 Modules/IO/GDCM/test/Baseline/itkGDCMImageIOTestRescaledBaseline.mha +bafybeigx6mora3ivqvoroy7nz2ncq7rfwelcc6a2bbgc57jmwftpk5yrfi Modules/IO/GDCM/test/Baseline/itkGDCMImageReadWriteTest_MultiFrameMRIZSpacingBaseline.mha +bafkreigk2sz4oybg745nvwwqyrcehihiz5d4ds36qaopgn66hap5bf5lue Modules/IO/GDCM/test/Baseline/itkGDCMImageReadWriteTest_RGB.mha +bafybeib67xvtf44xwu4rxapchxqjflfutheq3wja47qvniz4gdwrqkqujy Modules/IO/GDCM/test/Baseline/itkGDCMImageReadWriteTest_SC_RGB.nrrd +bafybeiendxzfqkmrablywyj3bwiaiuyaw4hlqvyfjgzwn7osh5ygfxjczm Modules/IO/GDCM/test/Baseline/itkGDCMLegacyMultiFrameTest.mha bafkreicwoy4frgs5faincl6oqr6osu4zgn3dt74iyqphmthj7hs3x2y2w4 Modules/IO/GDCM/test/Baseline/no_preamble.mha bafkreicwoy4frgs5faincl6oqr6osu4zgn3dt74iyqphmthj7hs3x2y2w4 Modules/IO/GDCM/test/Baseline/preamble.mha +bafkreigtjrshej75u6msrxdrueasuhjc27fpnx2t6up6mg7jyvtg5lsji4 Modules/IO/GDCM/test/Baseline/single-bit.mha +bafkreieyej3y53xaqg6dcedbv5pa6y5m25rdrg42wdqm43oh4ijjrlpl4a Modules/IO/GDCM/test/Input/030658_001.dcm +bafkreigozo6hgejn3bksgs3acz4u4legsiclwjtqebh3vsni3ud46m6snq Modules/IO/GDCM/test/Input/JPEGBaseline1DicomTest.dcm +bafybeigqm3oiwrlqxqliwrdkrjvx3mivhtk2d2dba7x7wkkftrknjlx3qm Modules/IO/GDCM/test/Input/LegacyMultiFrame.dcm bafkreib5e6kni2tdbtaxpz2i77k7hp5gzkztppiuws3ov4yx4dswlna6p4 Modules/IO/GDCM/test/Input/Lily/HTJ2K-YBR_ICT.dcm +bafybeifxqqmljz3yrqhrdv7vzrqrfkvs7aq2mx7mo3g3mjykqq3onlgh6i Modules/IO/GDCM/test/Input/Lily/HTJ2K-YBR_RCT.dcm +bafkreifwqj6t6ptr7jukgt6tpervfjcpje2mejvaimdn6rrpy27w7yxobu Modules/IO/GDCM/test/Input/Lily/JPEG2000-YBR_RCT.dcm bafkreibn3fqjxfgyy5zhep6y5xfjqhmqucpwzyz5u2ylocu4trrbqppghu Modules/IO/GDCM/test/Input/Lily/JPEGLS-RGB.dcm +bafkreihznh6qbgbijb7xrcep4prjuddkza5vz3uo6rrrjoqlaakbzd4mge Modules/IO/GDCM/test/Input/Lily/RLE-RGB.dcm bafkreibf6gnnn5n2mhc36uxl37hxs7efmlfvx2vkyue7ctobu2ybavgk6i Modules/IO/GDCM/test/Input/Lily/losslessJPEG-RGB.dcm bafkreic2lcc3h4htvb6qorcetuxmnaht3xcqal2rbejclk3p3lqko5ocua Modules/IO/GDCM/test/Input/Lily/lossyJPEG-YBR_FULL_422.dcm bafkreiciwm5plkh7lydrtupwmlh42kofz752rrlwsgtwfp42ei6dhmdbne Modules/IO/GDCM/test/Input/Lily/raw-RGB.dcm +bafkreieuoltrkqlludf4of3f6rsbfckmtfe2k7gzw2a7uxbxishjkzbjwq Modules/IO/GDCM/test/Input/Lily/raw-YBR_FULL.dcm bafkreicrjre3ewaec3l2tgexols2mrnd6xywpbyj6imkqb4kgy5gmfhbgu Modules/IO/GDCM/test/Input/Lily/raw-YBR_FULL_422.dcm +bafybeiabdmcpjhqoi7hfxx4vep27nc5y2ubclimgkcosk2cgpovbulwxim Modules/IO/GDCM/test/Input/MultiFrameMRIZSpacing.dcm bafkreibyffqgypwfgdk35aid35skk7oin3ga4ydjwx5ze22fq6fmrg4fia Modules/IO/GDCM/test/Input/NoPreambleDicomTest.dcm bafkreibcgqbxkz2p6jjrs3hiufd2z4cfrpvd6ec76ldk7apq5mizoklalm Modules/IO/GDCM/test/Input/US1_J2KI.dcm bafkreibee764qlmqzvgorju3kfl65szxksmqfxhbhcwblrsfnj7k44fyhu Modules/IO/GDCM/test/Input/US1_J2KR.dcm bafkreibrnnomrtk7hi6hgcke7b4pars25g4teyddo4oazuz3g5kdf6w4ky Modules/IO/GDCM/test/Input/gdcmNoSpacingTest.dcm bafkreidnpqbiklc2mx45n2bo4mo3g6qh4fybdvhcpdtge55pmtjjmsercm Modules/IO/GDCM/test/Input/gdcmSpacingTest.dcm +bafybeihwecykoje6v7td77gmoe7m4ogghvxv4mgtkgdbnyo74jfeut7n44 Modules/IO/GDCM/test/Input/image32bitsStoredTest.dcm +bafkreigjtwunwnt7ilfegmhub73amtuyzdueyzj6ykftp7usibs57b2aya Modules/IO/GDCM/test/Input/image_slice0.dcm bafkreia27zimyd5h54hfvrkl5qbyuhscexgszud6hazqtw5pxzvc2clgzy Modules/IO/GDCM/test/Input/itkGDCMImageIOTest3_mono1.dcm bafkreidvhgcecqrku7u63wbzocw52mragf5i4ycbixcon5yohdlfctr63y Modules/IO/GDCM/test/Input/no_preamble.dcm bafkreibhyvtpyhwha2y5zjtx5mn4uod5mf33vwvtem3f5whyvivjpcde2a Modules/IO/GDCM/test/Input/preamble.dcm +bafkreif5ie77gxshnv3jpe4axvgpjwmf4vkwplj4xxn2wo6pz75oeevzkm Modules/IO/GDCM/test/Input/single-bit.dcm +bafybeiadtxwvshbmde3aywkzlzcudcoxypafxrshabby6gmdmtawapjzre Modules/IO/GDCM/test/Input/visible-male-rgb-slice.dcm +bafybeieqjaqvkwbubml5lsnwzy25wlgadhwqtytt6mig6g6n6f7yb3tfcu Modules/IO/GE/test/Baseline/c_vf1122.fre.mha +bafybeifecxwzugdiethtnupgvc5uumlkyucp7zbkokfbzpzgb6nk2xecri Modules/IO/GE/test/Baseline/c_vf1210.fre.mha bafkreia6hxgzn43ez65h4tren4dxlcoheh665pfaq4rysylc6tygazztd4 Modules/IO/GE/test/Input/c_vf1122.fre bafkreidcnq2bohnkvzvmexfbpedg4xlxvov77a2nqcvoyfn2deu2eqptmy Modules/IO/GE/test/Input/c_vf1123.fre +bafkreih35u5ecdox6sbbwphke7f3xsq7dea7gdeeeizorgyo67e6sabcwi Modules/IO/GE/test/Input/c_vf1210.fre +bafkreif26rvs3wdnvsoiyycpidrirr4fygob3fsn3bfhlde6e7frllfpgq Modules/IO/GE/test/Input/c_vf1211.fre bafkreibak73qruudepz3da3ipb6r452dhwp2lw5tgxquiorqta2achjppq Modules/IO/ImageBase/test/Input/Test64bit.mha bafkreidpj7erazqcplir7djhbrk3mcx4aqukepy7g6gchn5fwxo7y47fi4 Modules/IO/ImageBase/test/Input/Test64bit.nrrd +bafkreigfnnwheantnltrycahox5r3agtmf4q2vfmbabrjx7rjs66iikozi Modules/IO/ImageBase/test/Input/rf_voltage_15_freq_0005000000_2017-5-31_12-36-44_ReferenceSpectrum_side_lines_03_fft1d_size_128.mha bafkreidgnpubq7w7v4xzumenhdzibee43i4tjkwfokm63zhrpweizmk3tq Modules/IO/JPEG/test/Input/cmyk.jpg bafkreibhcntilukv7q5hj7xprmjzkjxz7l7noi4p65vzv4xmxzswuleuua Modules/IO/JPEG/test/Input/corrupted2.jpg bafkreia33a3mrs4scp7ewmoi4lbxo4vels4d45ppyqe6dyd75ua44vzoqu Modules/IO/JPEG/test/Input/corrupted_image.jpg +bafkreieh7bixyl7jl5qg7lluxntcjaav6es5bztcn4ys2jo4cdkc7vchci Modules/IO/JPEG2000/test/Input/Bretagne1.j2k bafkreibrrcuodrmpfgrzimrh2xef6abwcxqagt5di2wukbksqtclkjhtpa Modules/IO/JPEG2000/test/Input/Cevennes2.jp2 +bafkreig52nz7amg5azvvszmvaclvjmncy5shmsuxyitf7rtitpcuiqfk4q Modules/IO/JPEG2000/test/Input/cthead1.j2k bafkreie7ckx33z5ohtkxtysa7qbk3ib4chgwt6tvq6lyqxa4zhifnkfvui Modules/IO/MINC/test/Input/dti_sample.mnc +bafkreih7yohttcegr4rcv3sk73l6v32pkuvdtoxnzzkgizx3edd4ikfpaq Modules/IO/MINC/test/Input/labels_sample.mnc bafkreie2jsgmqh3xmhqxbbsszdhqr5gp2vo6j46mboritk3no6ras2dav4 Modules/IO/MINC/test/Input/t1_z+_byte_cor.mnc +bafkreifgxmembtwu5g7dlmbrpiughoathcdj4jndn4ntwjleyvw2h5nyfi Modules/IO/MINC/test/Input/t1_z+_byte_sag.mnc bafkreidffnmwmm2t2cwfmdlzuc6cnc2rjixrns2nriebv47ezsublspupe Modules/IO/MINC/test/Input/t1_z+_byte_trans.mnc bafkreib5ptk434cx6i7nmke65y2ckgxztcvc57harleltk52spnumk4cka Modules/IO/MINC/test/Input/t1_z+_double_cor.mnc bafkreibdmkjpimddr22mbj6j7okd7ymkrgpjllzwcy2a2scpxmqxskeqqi Modules/IO/MINC/test/Input/t1_z+_double_sag.mnc @@ -361,267 +687,524 @@ bafkreibd5rlfz3wtmihdrfsrnflu3grkxgkr73wqh7kkdy4s2guzttp3ve Modules/IO/MINC/test bafkreibx3ele7mywft2oj34gep32d6tiyvl264tk3by6d5o5ez7zg4excy Modules/IO/MINC/test/Input/t1_z+_float_yxz_nonorm.mnc bafkreia5r5t7bibazuimq62rzmscbmx4pqacrwv7dauitchi2d6k3ojh3q Modules/IO/MINC/test/Input/t1_z+_float_yxz_norm.mnc bafkreicgfqmuyzminfrpms4kusktfslyy62bhype6qyajeewuw3lgpjdsu Modules/IO/MINC/test/Input/t1_z+_long_cor.mnc +bafkreielzxltrtfygnzhbzcvdkiu77x4rk7lglkalpvc7kktrhienagdl4 Modules/IO/MINC/test/Input/t1_z+_long_sag.mnc bafkreiabiubax3voswprcugsbxs36r3eqf4ddovehijezkcnqbxssrgoey Modules/IO/MINC/test/Input/t1_z+_long_trans.mnc +bafkreieqo7tr7fyfadxo3hm7hnn535fqmzeqhjmkxd7ml2mdr3pu2dqoeu Modules/IO/MINC/test/Input/t1_z+_short_cor.mnc +bafkreihpepa6vhhhq5a6sm4hcohenr253qqnwhvwncfjoylgay5y4xchzq Modules/IO/MINC/test/Input/t1_z+_short_sag.mnc bafkreiabyqzkqaxxceyactghzurhcqvvi7bkb3fmav5qkksvp3fh4myscq Modules/IO/MINC/test/Input/t1_z+_short_trans.mnc +bafkreigheb67yxam24phxgzbmc2254fcgz7nrjronysowxjyuwd5j5b2e4 Modules/IO/MINC/test/Input/t1_z+_ubyte_cor.mnc bafkreicjze6ax27mhh6m7x2ghuiyz5hq7luhlhfn4rugzfqnwfb7nqhuei Modules/IO/MINC/test/Input/t1_z+_ubyte_sag.mnc bafkreidr6vyg5zcckl27rs3yq3qtchitldb2vdi2anvdrzp34fvsbqb5oq Modules/IO/MINC/test/Input/t1_z+_ubyte_trans.mnc +bafkreih34rprmwjuhbuno22ivwexxbkk5veeqini23z3rif37lvf5yz27e Modules/IO/MINC/test/Input/t1_z+_ubyte_yxz_nonorm.mnc +bafkreihcpysgsspttn2nm2t3wtwgi3v3uzgfb26rxtj46r3mdthd5ub4cy Modules/IO/MINC/test/Input/t1_z+_ulong_cor.mnc +bafkreigiiqfh73izqhzrx5f4o5r2vnkclw7ijn6rejj3tirldjk4jpraxa Modules/IO/MINC/test/Input/t1_z+_ulong_sag.mnc +bafkreifr5caxqkd3bhtvpuaddutkshy33g5tko46uywtu6rhlwg7hgoa24 Modules/IO/MINC/test/Input/t1_z+_ulong_trans.mnc bafkreicheaagepok4pt5uyxdqr62eokumosn25234ynrpx4ak4ewkktavq Modules/IO/MINC/test/Input/t1_z+_ushort_cor.mnc +bafkreiekl2rfxskuvjykt7dmeyipbzq4ulzbnurmcp6z5psasy25l25olm Modules/IO/MINC/test/Input/t1_z+_ushort_sag.mnc bafkreibfgldbyi7lcw6bursn5stmca3dz6f6j35f5yhrpor4sw5l467rqe Modules/IO/MINC/test/Input/t1_z+_ushort_trans.mnc bafkreiafcwcyfvtn6nbgoiuxvzvyjfiqqzsksohzmjlond777cnmydztvm Modules/IO/MINC/test/Input/t1_z-_byte_cor.mnc bafkreibybxs4h5o5dooapy3gqmurj5ddfns7hp7jul6e7r7kjaa26eawmy Modules/IO/MINC/test/Input/t1_z-_byte_sag.mnc +bafkreigcbocopib5honsli2tprf3krfg77epdchytixobxvcyixlj5ybr4 Modules/IO/MINC/test/Input/t1_z-_byte_trans.mnc +bafkreiet5ujjoll2axy5kio6se7efy6sflife3x5zqmsvyk5t7jugrlaty Modules/IO/MINC/test/Input/t1_z-_double_cor.mnc +bafkreihowzyxtkrh6terpi7hkeotqhzjiajez7mz2tgkdqlwcthuybkuqm Modules/IO/MINC/test/Input/t1_z-_double_sag.mnc +bafkreietsrkj7m3hiiv5etgcmp6rwmk5cgogptimlid7thqknam63cirgm Modules/IO/MINC/test/Input/t1_z-_double_trans.mnc +bafkreifwtan4jewkiyam2mhokjn5dlueyy3mwlg4e52szkjsioidlm6bqu Modules/IO/MINC/test/Input/t1_z-_float_cor.mnc bafkreiaqvynjndyvxcni5q5o5bciqragu53ayuunoxrp7utvxu547k5n5m Modules/IO/MINC/test/Input/t1_z-_float_sag.mnc bafkreidbsdn7lbisbpjhjyketg7kz3zug6ots554uamyyye5zqxtkz5kba Modules/IO/MINC/test/Input/t1_z-_float_trans.mnc bafkreic3t5yr3wbdkwpzdxfyz3eorbbn3mtis5riv4zkokjkmdoeavhjq4 Modules/IO/MINC/test/Input/t1_z-_long_cor.mnc bafkreidwzyykzadogd6tf2lorvog5y3iodxtkmr2aplnak7d6hn3w6oita Modules/IO/MINC/test/Input/t1_z-_long_sag.mnc bafkreidiflcifgn2vzyyeunm7ljo7tt2rddfiwtiytvauflnfzjboxbh2i Modules/IO/MINC/test/Input/t1_z-_long_trans.mnc +bafkreihfed5cfvpkug4j6wfukb4ok5flixsr4tss5nxesfafqstk345vou Modules/IO/MINC/test/Input/t1_z-_short_cor.mnc bafkreiapgvyolps6dfu63ec2jfuziqd3oi4qrgm2girzwl3afdvbepm4gu Modules/IO/MINC/test/Input/t1_z-_short_sag.mnc bafkreidyjfkccr63jilailqqxneybjefvqlaa3gniligiicqx3f7m2ewoe Modules/IO/MINC/test/Input/t1_z-_short_trans.mnc +bafkreihsff62sj65yfav5nqfvbofl2i727zps3ek4hws45j4jkyfoyawme Modules/IO/MINC/test/Input/t1_z-_ubyte_cor.mnc +bafkreiege6lsihcz2p7a5vipsaqswjo4ctamc2pvte6bdzygjrw3sqcumi Modules/IO/MINC/test/Input/t1_z-_ubyte_sag.mnc bafkreidndsua3kbvy6qkxwo3p7tsca374bgn4zwb6l2pqpr5fcwpcgnhee Modules/IO/MINC/test/Input/t1_z-_ubyte_trans.mnc bafkreiat4jzfu5jrpjglujdxjxwx6f7w2znzay2nrm6zqofrkcuzbqxwia Modules/IO/MINC/test/Input/t1_z-_ulong_cor.mnc bafkreibrh3pnqyhhl7g4r4eappzh6g6omkucngbpd5u3nva2ny6nxih4jm Modules/IO/MINC/test/Input/t1_z-_ulong_sag.mnc +bafkreiexlnu7vgmi237hzvh2pebqql6mhiar77i2nu5is3gc4xlq6h7iym Modules/IO/MINC/test/Input/t1_z-_ulong_trans.mnc bafkreidlzpkx2mdyg5ynfxn3qjlwgncq46gpcnwwcyjlucejcwngbgght4 Modules/IO/MINC/test/Input/t1_z-_ushort_cor.mnc +bafkreihdausby6hh23i36tege4hpae345snj7omlcvqnvnytz5v6ltref4 Modules/IO/MINC/test/Input/t1_z-_ushort_sag.mnc bafkreidaxboxpcib4wux5egrgisi6jihgk3pwjr6msmgthfwdgnulhma7a Modules/IO/MINC/test/Input/t1_z-_ushort_trans.mnc +bafkreigmo4fzrj2stsknar7xuebpmzx5dgfkcv7gd2q5sqaw5dt2cxi7my Modules/IO/MRC/test/Input/tilt_uint8.mrc bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/Mesh/test/Baseline/sphere.fsb +bafkreigen7b74iiwsgfx4zooj6ygklds3teoq6g3jgu72bgvzzltoynwzm Modules/IO/Mesh/test/Baseline/sphere_curv.vtk +bafkreih4q2ykpomq57g3fqelihzi6zowc7pbaik4eduy43tbjmnvlp62jq Modules/IO/Mesh/test/Baseline/sphere_curv_b.vtk +bafkreigq5sy4i7o35lokt62v44gdbhmoiprrvi6hpokfmobqxtvh32pog4 Modules/IO/Mesh/test/Baseline/thickness.fcv bafkreid2dnqvkrzzqlgdom6r64cbrzc2fwhscjx7qacazuq6sloztgf5te Modules/IO/MeshBYU/test/Baseline/cube.byu +bafkreierdzjpkdgxpib7mxjgtxhhsapyuonefg6fxyoixu4h7vn6iw37ye Modules/IO/MeshFreeSurfer/test/Baseline/sphere.fsa bafkreicr6qx6zrjzo7b2ro7xykzpf6omk7qtuy3is5itwp7bt6bg5r6sfm Modules/IO/MeshFreeSurfer/test/Baseline/sphere.fsb bafkreibnvnafbqexjgwjjqtyrdofdb7lalnoygcfszgfyn2zgpxdv55jne Modules/IO/MeshGifti/test/Baseline/aparc.gii +bafkreigjc7b64zx3rqxuu6q74rvmwbgpir3qn3gzxk2uwxexhpwpz62sbq Modules/IO/MeshGifti/test/Baseline/white.gii bafkreidn2mbuqydg6vxy3hyhpmokg7fsfc6ku56ch4cnyspqt5xrl6d2eu Modules/IO/MeshOBJ/test/Baseline/box.obj +bafkreifnfrac7txnvgm7j5267mwj7raptvvve6gd5bygdn5p2ffpaqcz6a Modules/IO/MeshOBJ/test/Baseline/bunny.obj bafkreibvqxc22xbozkv3t5a6dyy7nojn3pysbunjfbgnxpapuidkpeoifa Modules/IO/MeshOFF/test/Baseline/octa.off +bafkreihfhjfian2h6h4eahzpsswh5ztsvfip6r5gohex7mayopunjwfl24 Modules/IO/MeshVTK/test/Baseline/fibers.vtk bafkreidmx3fi4t4adhdsmbg3urdtvgpsjg64njw4c2o47eagevymtazpgm Modules/IO/MeshVTK/test/Baseline/hollow_test.vtk bafkreibltq442d4zfqxi4ffk4qitvr7wmbuwiytnlvl3j2t6bzwci5c33a Modules/IO/MeshVTK/test/Baseline/sphere_norm.vtk bafkreicuj5t5m3n3rn46jact6ey5mfhceximvjyc7u7wsaytgew5iem7pe Modules/IO/MeshVTK/test/Input/ironProt.vtk +bafkreifq7mquky7u7nyy6zeafrfgn56gybefmrshpmogvqexdmnkeeiyq4 Modules/IO/MeshVTK/test/Input/sphere.vtk +bafkreifuf5jg75us46ot7xfs7hmne7myzd4kdjkav4zet7tgdcbbhazo3e Modules/IO/MeshVTK/test/Input/sphere_51.vtk bafkreicbyipbwcnhtlxdvxzz4mwunj6payye5tygydcej7aw2cyn6l6ntu Modules/IO/MeshVTK/test/Input/sphere_51_b.vtk +bafkreihxhm7cer5pqwtpo2njyfwifddovzm6xlos3tcsfdtsv3gvfgywe4 Modules/IO/NIFTI/test/Baseline/SlopeInterceptUCHAR-midSlice.nrrd +bafkreigg3tjnmqih7nrml46c5rjwtyppit5so46z5mlk6kkd4j3dvqnqqi Modules/IO/NIFTI/test/Input/ChickenEgg-zeros.nii.gz bafkreibjy43ezabpmfhbm6ewdhm54gitzhinrduetz75dksvm6eiqf2haa Modules/IO/NIFTI/test/Input/SlopeInterceptUCHAR.nii.gz bafkreibkzncn66f3zg2rsylhmesjqtmgjvwqgfosfzbrsfbpc5vttkixqu Modules/IO/NIFTI/test/Input/SmallVoxels.nii.gz +bafkreifdvkzkw3hzudcctwiliwpej3y3tjt3nskwr2mh4tttsmpqlvwovq Modules/IO/NIFTI/test/Input/SmallVoxelsNonOrthoSform.nii.gz bafkreiay4wgc2thnkkrellosm7htbgz5ooidzkyysheb5k477zqyfkbbbe Modules/IO/NIFTI/test/Input/SmallVoxels_AffinePrecision.nii.gz +bafkreiensnm5skigw7sdrgb3prcezt5zvijb6ebwxbwiywm5vjgtacjf4m Modules/IO/NIFTI/test/Input/SmallVoxels_noqform.nii.gz bafkreiamyaqz7uybrjgfnnnidw3cz3zcap335znltfgilkbgi5wqdxtxnu Modules/IO/NIFTI/test/Input/SmallVoxels_nosform.nii.gz +bafkreifgv6rke262bhoeaa47lu3fmrtcv4gdfm4wjynctbuhkr3w43ccta Modules/IO/NIFTI/test/Input/xyzt_units_test_scl.nii.gz bafkreiawqehmd75yk334c7pxcjumrdw4ide2dgg7x3ctopotkzyfz7cjva Modules/IO/NIFTI/test/Input/xyzt_units_test_scl_mm_s.nii.gz bafkreiblwwaa6orfdgxfbgwzsx4fxehs3nehoj3kcgjuyn2f4v3kxfns5e Modules/IO/PNG/test/Baseline/itkPNGImageIOTest2GreyAlpha.png bafkreidfo67pypdutnvxpuy77e2so2shtiatnsnjgqpojfuvj222244nzq Modules/IO/PNG/test/Input/GrayAlpha.png +bafkreieikpqgk4xghuwyeral3g6exsm3yecvwzihf4pqy5yalwtg3ii6ae Modules/IO/PNG/test/Input/HeliconiusNumataPalette.png bafkreic73nr3gc4qyk2v4q7eflulowwfzn3rpfhvt2ci53erkbjlt3wfvi Modules/IO/PNG/test/Input/HeliconiusNumataPaletteGrey.png +bafkreihe3l3kbcnmbw3pmuqkq2ealpq3hkzi4r4nnrik5cmmx3pecif2n4 Modules/IO/PNG/test/Input/HeliconiusNumataPaletteRGB.png +bafkreihyfwmwyauxl3wl34echowvarysju6ri2qpxcae4n34gwby5utexa Modules/IO/PNG/test/Input/corrupted.png bafkreictimjuvz5semh7yd44svdwwpszwkvc5enrdmr3vugloctsjgq4gq Modules/IO/PNG/test/Input/cthead1-257-corrupt.png +bafybeiaekrspn6a3tgetn4yk4f3kxc5ts5wuuo2p5hopscnr5bzyinm6km Modules/IO/PhilipsREC/test/Baseline/itkPhilipsRECImageIOOrientationTest1.mha +bafybeihr6ft2in4lspjbm3dwtfepwk67ojg57y3iszuwxuzuotwwmpbu7i Modules/IO/PhilipsREC/test/Baseline/itkPhilipsRECImageIOOrientationTest2.mha +bafybeifvnnjbxnbjwhg2rxvtznnlgowywnbwqmwr5yqldux5cfqhp7kb5i Modules/IO/PhilipsREC/test/Baseline/itkPhilipsRECImageIOOrientationTest3.mha bafkreic66j47xtsk7o7f4uzlz6w7faly7ixixyup4nizmrafazz55idc6e Modules/IO/PhilipsREC/test/Input/Test_Cardiac_Phase_7_1.PAR +bafybeienapoll6em3sfq63nol3szwqwvcjreryd2a5ayxojjogbwyifnpe Modules/IO/PhilipsREC/test/Input/Test_Cardiac_Phase_7_1.REC.gz bafkreiclceys776636dg2qvrmjlh54kv56vmkbv2zwioju6agvmvpmwk2u Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_1.PAR +bafybeibvauatrwpk3afq6dm6xvkn2sze5cw6y3jbkhvm2ah6p476sodfqa Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_1.REC.gz bafkreicdjumo5anfgkylpmogbgqhbwg6fpyp7vrkpcvpltjxll7rpzmeaq Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_3.PAR +bafybeib4gfgoy4qt5ksitxzzoxo556zdxdytalf4jcjeyfzxwfcck7djbe Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_3.REC.gz +bafkreihixz6zz75pvdyiqrgjg524g36nbqtxmeumfemrdth4m7vfz6af4q Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_5.PAR +bafybeiaml4kjqhwuxuif34lxe3mj5e3whwt332f22yctkyap5fkz4bo73y Modules/IO/PhilipsREC/test/Input/Test_Orientation_2_5.REC.gz +bafkreifhml2xreluzhylbbccuptk7weaejdsme57zmmg3sclqxyvwr5zde Modules/IO/SpatialObjects/test/Input/Branch-truth.tre bafkreicpqiqyrcg6bio22phi2z6x2ntuyakrfmt6breeuej3vxqwnioily Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_AdobeDeflate.tif bafkreibsm2gas5pa5lbw6lpzcazm52s2xpgxdhr67jxjyspz7jw7kgi3qe Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_Deflate.tif +bafkreif2inbo4un7oowkfbcz4flgeajs5qqcdkfw23cge3on3mj474cojm Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_JPEG.tif bafkreicg7h7nqzyiia7dekwwhp6ini4klwavu7cs2werjfkzqdkoavuxi4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_LZW.tif bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_NoCompression.tif bafkreicg7h7nqzyiia7dekwwhp6ini4klwavu7cs2werjfkzqdkoavuxi4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_RGBTestImageJPEG_PackBits.tif +bafkreifhgko3jbmnao3xblusn5gqxwvuvtcuqmeoxycvwecjvoslw5m2xq Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_AdobeDeflate.tif +bafkreifsh43klzgxtkj7vloel4xgp64wrfe2gekshhy2cx5p56t3zkrk3i Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_Deflate.tif bafkreiawwlhu5pst56okylhogxdwswqxf6g27ipzt4l7bg7e4o2svaaii4 Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG.tif bafkreiarqtxlwwbtbz67ejmmy4jfcajjfersknnlh2ueudamjzdxca4gnu Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_1.tif +bafkreif6rkss3sohv4dijrq23f7w6nnhkgxp7uvlf36ehhqiovtkj4uveq Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_100.tif bafkreidssd46txb7ijg752ecxxisr57ia6bajjcqulh54chdvgn3ggcuwi Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_JPEG_50.tif bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_LZW.tif +bafkreifwsqkfemcrpqgtd6bwtggz4wkxq7rchac2e4xkel3idbkjzqijpa Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_NoCompression.tif bafkreia3us4abyvntxtm5yy45sahvpwbqtteeuhu5ent4smoirpxz7me5a Modules/IO/TIFF/test/Baseline/TestTIFFCompression_cthead1_PackBits.tif +bafkreifrnzpkbbithprs353xunsxhglaoqku6czelgsw4cnmmzlwdf2g6u Modules/IO/TIFF/test/Baseline/itkTIFFImageIORGBATestBaseline.tif bafkreiawjlwvba7r7cofo4ld5cdeqed2y32iny6wlpwzm2f7rhs7o4vdpy Modules/IO/TIFF/test/Baseline/rampFloat.tif +bafkreif3ngo423dyld54oyjsgqma6qtjah4dkd3pvtxj47t3hr6rczogbu Modules/IO/TIFF/test/Input/3d_spacing.tif bafkreidviawir2jjupcqgf5dooevjazhlh3hslzrakhak2ljacrx6zmk7q Modules/IO/TIFF/test/Input/HeliconiusNumataPalette.tif +bafybeicjtwyzvziverasrvrqi64xyle7oxk66wiyf4gvbjkvpq7ebim7hu Modules/IO/TIFF/test/Input/RGBAHead.tif bafkreibiojnnkmu6oqycherjhopy7i6nczwk4od7jflyr7fwcxcy36apqu Modules/IO/TIFF/test/Input/cthead_oriet_bl.tif +bafkreifwdcce2uchfnyyhlumzjoyldm5yyxwssnw4jmxeksiu5xgp57yhi Modules/IO/TIFF/test/Input/cthead_oriet_br.tif +bafkreifwsqkfemcrpqgtd6bwtggz4wkxq7rchac2e4xkel3idbkjzqijpa Modules/IO/TIFF/test/Input/cthead_oriet_tl.tif bafkreic6yjaz5ptkv433pvfey3rd2zv5gyjilfmyg7grn75zzet4nknojq Modules/IO/TIFF/test/Input/cthead_oriet_tr.tif bafkreie73tuuxe5r5jtvizilka4duinbsirapazzip2opf4uh4y63anlqu Modules/IO/TIFF/test/Input/int.tiff bafkreicn5vtm2e6ypi3lpuz6my7dx7wxykqvaqmvph6wjeoqttkdp4mo3q Modules/IO/TIFF/test/Input/jello.tif +bafkreievdmfnh2rabowevleuykelf53akg35d3smj6sgree22miq72l2ru Modules/IO/TIFF/test/Input/oxford.tif bafkreibyhe4flgn2jcgg3ykqeqihy6yplog47ty7x5rycwibjlu7xpw6sq Modules/IO/TIFF/test/Input/ps-separated.tif +bafkreihd7s5d7ronvayen3zmxuaixw4lojuiee27lbyqeyzsutzyte5ozq Modules/IO/TIFF/test/Input/single-channel.ome.tif bafkreidxn3xdiqzj7sef6tvv3uzub4wrruzbd5oa4hw33ym3s2lbdwhgpy Modules/IO/TransformInsightLegacy/test/Baseline/itkBSplineTransform00.txt +bafkreig2g64cxjhul6rrquljcgtrmoxh3is43wqjem4lhdl5muwcaqrwci Modules/IO/TransformInsightLegacy/test/Input/euler3DOldFormat.tfm +bafkreihfhjfian2h6h4eahzpsswh5ztsvfip6r5gohex7mayopunjwfl24 Modules/IO/VTK/test/Input/fibers.vtk bafkreicuj5t5m3n3rn46jact6ey5mfhceximvjyc7u7wsaytgew5iem7pe Modules/IO/VTK/test/Input/ironProt.vtk +bafkreigxopqtakalubt4kfood6nzgp5hzkgzgdl4m3cvusf4vzrng5u7pm Modules/IO/VTK/test/Input/matrix.vtk +bafkreih33stc5o3kzxwbx6ieg5r2qtqpvcfhkpfob6fbfxmxediauntlua Modules/Nonunit/Review/test/Baseline/itkBSplineTransformTest4.png bafkreidu5ycakcrqe6gu6smbgnnlsj4j7oonc3x44din6uw7mhwjqfkluy Modules/Numerics/FEM/test/Input/2DC0LinearLineStressTest.meta bafkreiaxoniq2r2lubgmgw2y6jgb52h37mgtvyft23aau4kktfis36ggbu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralMembraneTest.meta bafkreidz6w5mwbm2wl4j7oa6d6jchw3tqzddq27zfmet34eka3iag72hwu Modules/Numerics/FEM/test/Input/2DC0LinearQuadrilateralStrainTest.meta +bafkreig6ikjs2rvpqhqkcnhxzdgpck34itrgttldyopnhecjju7f3wpzwq Modules/Numerics/FEM/test/Input/2DC0LinearTriangleMembraneTest.meta bafkreidhpc632r4vldssaoru6hny5qp2c67jt7afdj63nc6jounijwa73u Modules/Numerics/FEM/test/Input/2DC0LinearTriangleStrainTest.meta +bafkreighhqrsmzqodu7d6ow4izpt65mhr6mwhgoxgxgej2p5jkvd7u2dm4 Modules/Numerics/FEM/test/Input/2DC0LinearTriangleStressTest.meta +bafkreihhrplxshnrwexmdk56hcjp6aq44fkcv333buxilc3frb74agvzsi Modules/Numerics/FEM/test/Input/2DC0QuadraticTriangleStrainTest.meta +bafkreieswpbkpyuez3x2kpzdb7oagaukq6bhc66r4p4hixd47syvopj43y Modules/Numerics/FEM/test/Input/2DC0QuadraticTriangleStressTest.meta bafkreidt7u3qukjbc5tlkb7rh632reg72d7phuezu2jlylbcqum5ukc6ba Modules/Numerics/FEM/test/Input/2DC1BeamTest.meta bafkreicrc5iflantef32ytxybjpyqqxqj5korxonnliggtzrgib5jlzqgi Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronMembraneTest.meta bafkreibzitvyck2r7vmxghb7emmnwi3yhdcp54qefrkrdag4ajshkf4rt4 Modules/Numerics/FEM/test/Input/3DC0LinearHexahedronStrainTest.meta +bafkreif5xacybstbcq2wsi6jly7mm5c4xqty3zeh3i6wzvubam6myhevxu Modules/Numerics/FEM/test/Input/3DC0LinearTetrahedronMembraneTest.meta bafkreia4gfypioq6kzb6xe5tqdop7dmdnmr2mk5cghcsszml74zu4lcm3i Modules/Numerics/FEM/test/Input/3DC0LinearTetrahedronStrainTest.meta bafkreidh27czlsr6dhfle4brtvursfqhgqdvd5qzxmosamzlizyiy64r7a Modules/Numerics/FEM/test/Input/LoadBCMFCTest.meta +bafkreigusfmpdmg5m3zdprmsqoduwkl3vykwib75onihxup55nonucx77i Modules/Numerics/FEM/test/Input/LoadEdgeTest.meta bafkreic5kelopijimf2io3ism7o2ow57ek77drgdxgtff73zyzclqwwl5y Modules/Numerics/FEM/test/Input/LoadGravConstTest.meta bafkreidnaiztrxdfu7hdenhhzcbwi6f2ope5qnlygasuasmpsyh33vfrku Modules/Numerics/FEM/test/Input/hexa2.meta +bafkreihb2xeuqvfkghocou5lvcyzewelqtfv7butpfuuir37yzkw5w22de Modules/Numerics/FEM/test/Input/hexa3.meta bafkreibsmxa3bguccx3pl5mmum2ulzm6swk27vp7jhnf4v7gxa7wfmq4tq Modules/Numerics/FEM/test/Input/hexa4-grav.meta bafkreiaqxndb33vzrmizj52d2azb6x7zjfs7eiwiwjilfd2tew73csmx5q Modules/Numerics/FEM/test/Input/quad-lm.meta bafkreibeqqq6klcguwmdpvu3kwrrvj6lhf664wulwj4trpuzw6fmanuwha Modules/Numerics/FEM/test/Input/quad2-small.meta +bafkreifzzm6vmhta7mage7iiqlpzid6rg7zae46736t3kshdcayncmrloq Modules/Numerics/FEM/test/Input/quad2-strain.meta +bafkreieptn2zkxh4c3eatneiqnlanufi3l2zn5m32zllvcxbffi7uluvey Modules/Numerics/FEM/test/Input/quad4.meta bafkreictaiziedekrkhbo7iwg37d7ot5yvtkfurygcgdh26fnmo66zn6vu Modules/Numerics/FEM/test/Input/quad6-grav.meta +bafkreifkae5vybfo3i32setnnlnzelxksc4tyqxkiklts7db2h7tz5s4bq Modules/Numerics/FEM/test/Input/tetra2.meta +bafkreiep45kvmsfzsmmw7ghsj32ogxjx2mdto4w3xjh5mwunyngsisdq34 Modules/Numerics/FEM/test/Input/tetra3.meta +bafkreig7kjpj3x5x62tfvm3siuh27pwzihrljeumawx2gu2oy673s746pq Modules/Numerics/FEM/test/Input/tetra4-grav.meta +bafkreihm52xwchihvtizl7dp46hav5ccg2sadsgohecpz6mqn24kugt4jq Modules/Numerics/FEM/test/Input/trapezoid.meta +bafkreiexmb54kowosbu5wco4zsds3xogfiqxf2ahyetzqfn7ucpqoqi33i Modules/Numerics/FEM/test/Input/tri2.meta bafkreich4kkgtv375t7dmtm42e4aluvlu642axfdrpdie6virtfgy2m53y Modules/Numerics/FEM/test/Input/tri3-e.meta +bafkreieqoy446qm5zpzt63iqbqlkn4dm6s6anmusobj5wztxvjjuif5vpy Modules/Numerics/FEM/test/Input/tri3-q.meta +bafkreiewz7vu22jmqbwr2rjvxuy4vl2lkrfhx3x2tnriz3iawjn3azdc64 Modules/Numerics/FEM/test/Input/tri3.meta bafkreibwbm425iuesdb645nze6gi2ucipaqdxx4bx3zqnl6xhdqgyhotue Modules/Numerics/FEM/test/Input/truss.meta bafkreibqn6y5z6zbe2onjg6qq2n3dzn5qz3qigga3flmbkvmqccz26vjj4 Modules/Numerics/Statistics/test/Baseline/itkGaussianRandomSubsamplingTest.mha bafkreibpakhi5e4vzisarnv3hlyt5p4agpajwlu72qutties66xedvwraq Modules/Numerics/Statistics/test/Baseline/itkUniformRandomSubsamplingTest.mha +bafkreigzcx4p2n6jiyn7hzdubas4ulrfjvrwug5zv3mg5f4eq2qbfzclye Modules/Registration/Common/test/Baseline/itkBlockMatchingImageFilterTest.mha bafkreiaau55rtb4yl4zuw76puvrs7slmrqzwiwkiysazeyszkpg6tjilg4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/BSplineWarping1Test.png +bafkreieyhhwn7pjg2atoizgfofnjqdnwbtxg4mumcmq2hslrk6dotwvjli Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration12Test.png +bafkreihjndsvswssefdsvswn2hzp5k2ydwooy5hxavyracjb6als4fhcx4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration13Test.png bafkreibgk2cvm3eateiwbdxavuyeikx3ynzcqomcpobzxu43yesbwriwd4 Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration1v4Test.png bafkreickz5vu4nwpjqnybzxsctmln2nz2gqqlfwekaccfwxewgloqlcgdy Modules/Registration/Common/test/RegistrationITKv3/test/Baseline/DeformableRegistration6TestPixelCentered.png +bafybeiauwuu4mw6hmkc5nzqrxee5sxqnjbumma4o2izdom37idu2eib5ii Modules/Registration/FEM/test/Baseline/itkPhysicsBasedNonRigidRegistrationMethodTest.mha +bafkreih5fn7kdmmqjnxdh3lbdtl2x2bumpfk3yhtjxrxhdmpfxctwcqav4 Modules/Registration/FEM/test/Input/PBNRRFixedImage.nii.gz +bafkreigqlhz53uqib2b3fgrw3oqpbfdkx2munlfkmk6eqoiyv5t52wiaqe Modules/Registration/FEM/test/Input/PBNRRMaskImage.nii.gz bafkreictwu645zxdtx2ky5pjckpif5i7figztm6mkw2xxfvr2qyjjukxk4 Modules/Registration/FEM/test/Input/PBNRRMesh.vtk bafkreid523zj6igydbbhw7v3q7aqn7365xe2zgouici5j3a4qkkym7igay Modules/Registration/FEM/test/Input/PBNRRMovingImage.nii.gz bafkreib3qwnibtah25trmmn2idtdsyqz65ldqip4luszyz2vwwtqbqo3vm Modules/Registration/GPUPDEDeformable/test/Input/LenaFix.png bafkreidskmlvfkifmtsc25lbnpnrrj376zxbxyieqa3q3qts24iyphlgde Modules/Registration/GPUPDEDeformable/test/Input/LenaMov.png +bafkreigl73mk66scanviqutz5l36lepxuy6whx7fxleu57lnuttshdz5au Modules/Registration/Metricsv4/test/Baseline/face_avg.jpg bafkreibd3ic3fujyogccnuj43gnnnsywww6h3clxkoetgrglwogarnwmrq Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F0.nii.gz bafkreib7mbf4mtwapdaxgl3br4owsit6nflqumlacqsovxq3463yd5rpp4 Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S0_T1_F1.nii.gz bafkreib23kri5wmeqn6vackttmgudyvewx54576juctawn2wzuh6jv5api Modules/Registration/Metricsv4/test/Baseline/itkDemonsImageToImageMetricv4RegistrationTest_I35_S1_T1_F0.nii.gz bafkreiabik4os7s5pndybppzakgsbakt42j5r34lajqqbfotewtmz7yw3a Modules/Registration/Metricsv4/test/Baseline/itkMeanSquaresImageToImageMetricv4VectorRegistrationTest.nii.gz +bafkreifzwcgw4yfk3zyedljaoazcyxetq5ygahnafsjzdsnxvybchjix6u Modules/Registration/Metricsv4/test/Input/apple.jpg +bafkreifttdpmjqksjbo3xbr2lv6qd4xe2fkrbawhxhgezcxlakiemguxzy Modules/Registration/Metricsv4/test/Input/face_b.jpg bafkreidumkzsr45agxo6irb2yckcz7phywm4ecfp4xojhkqfeb2ui5hq3e Modules/Registration/Metricsv4/test/Input/orange.jpg +bafkreielqfksoe7l4tzf76i6kfhhku6qnfq5t4oom3eoy2cutlcvllsbma Modules/Registration/Montage/test/Input/05MAR09_run2_64-Raw/TileConfiguration.registered.txt +bafkreifzunqoqicjr332tkvvcywr6fylxkphuwx5lqwgec6tkijjc5efce Modules/Registration/Montage/test/Input/05MAR09_run2_64-Raw/TileConfiguration.txt bafkreicdrmvelsuyq2f55h7k6irrzsafycbqyyshp6l3g6uce7wdtfi4zm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p00.jpg +bafkreifrehpfpiwrw4ao2x6edbabvedo4pr5siam6dhy552ppvj5hjwcsa Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p01.jpg +bafkreif6ujhhqvrvydia2drgntk7mm2fiueccrawol2xtjznb5muy5yf5i Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p02.jpg +bafkreiewoanur6l3gyqmn6koyctjxipc4q3qiya25rxv3ghgry4zkdryhm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p03.jpg +bafkreieoa7eeydu5mvwpn4ijpdihl2rkwakejjf5mx2m4yexzqtrpncxxm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p04.jpg bafkreie4fjaroqeplc7mfcednrikg2fbah7xzm7sc47ytdk5ijnl2ph6te Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p05.jpg +bafkreiha7jmmwdyasnto6j4rjxc2yte5dw4xmdt7ekws4x3e343h43hrgu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p06.jpg +bafkreifurbixfnzhjlcoo26dqxclednnkpt4tbn75erk2vrv5ynfgxds7e Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p07.jpg bafkreic5ii25egocjcsqw6w2j3owhojlpmhzenaxedyspwlmdtu6bt6x3e Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p08.jpg +bafkreihk224jmpqrykf23na2uc3ljfqjtrmqsaetyl37wvlsxzbg7sn4j4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p09.jpg bafkreidjjnxtxrdk4kxpevmp4cpantc7pw6e4jy6gfg7zp6doo2lqqrt3m Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p10.jpg bafkreibdrboamvsyp7r3frx3imnk2dtf35o2suif3ylrreshoaeu3y5upu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p11.jpg bafkreia2a7lbarlaac2z3ez3gq6bm4liqegmrk5xoup2mbtowa3oloq2xq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p12.jpg +bafkreifrro24ivqzub2upnm2vykypyikprdbl2t26iliijvlp3tio3flzu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p13.jpg bafkreiatp622wdtsnbmlkirmabveozoondnj6winvspn7hrdaxk3sbfb3a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p14.jpg bafkreic36soefecz6pc2vdznnppp3ef5fb7ivgt65bqqwnced2rxdvswb4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p15.jpg +bafkreigqg2a2ljzy2hnlz5xo2smgia4q6pujetfia5emjjmjyakxgx4ee4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p16.jpg bafkreid3p2qyh55jtwvswhdqnfs25kjw3bw72tw4it3s4atgqshjjpuh4u Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p17.jpg bafkreibjeipnng7mze3ati33glnhvo5cxvxn5saw2rtvhotpkwkvk5lzrm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p18.jpg +bafkreifykdwxxkz66v3eqg46kdirv2ew32uayn4ym5nxansmyp3nbqvidy Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p19.jpg +bafkreigig4xyh4ax2xlrq62l3pzz552anycw3ninlovplb253je6mcvcku Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p20.jpg +bafkreiejiz7oiq3b5lseo7rn7nodpknqqr7ts2wqvwlm46pbmjxj4a73ju Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p21.jpg bafkreic2znw7ldy773onhvvuvo5wetmttjsxkedf2zn2kgvss4f7tcrhi4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p22.jpg +bafkreiete6qned6q6ncf57epiv7idfrzoni4lhuabbfruwczyzd6xcjx74 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p23.jpg +bafkreiff4uoumdd5ec2jjbytimayxe3645mavl77vejexdk45aju5xr6ky Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p24.jpg bafkreiaoe734njdoxj2ehz4mait6lob2ywtdolzzerghb3u3sfnahu3ze4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p25.jpg bafkreibp3vzrwpmbjpnv3ijobr5pwnk7cnqtt3y23zseuho5hwr5dkslom Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p26.jpg bafkreidce3v4wdkxdqp5avmw2w4blllnqmgiqcemkry3fguli3h7zc2pna Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p27.jpg bafkreicq27yz3am4sq4knekccsf5ltav3ox5mcriozjwjcrj4qflsu6k2a Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p28.jpg bafkreia7fyci7apdz2dimupaj66poqrps5bvbldsnjbmt365xfbiyqf2mq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p29.jpg bafkreicb66lnbsivlwpw24wmguqjyoxh5nm5sznej33fxiboonqyx26pem Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p30.jpg +bafkreieowf6zhm7h6yea5xkro2xmavckhuwaby2eolmqtq7pzpu6v5z3mq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p31.jpg +bafkreigaujf4g7cyu3dhg5f3mxe6lvyyqfiwnurj2aiacpckvsxkdygwki Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p32.jpg bafkreiazadhmmmb44lvvx2r2h2dxndc2bokqvp63uk6ki4d3obc63s4po4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p33.jpg +bafkreigy4f5jpg4ena726qj5hpvbbnfbpv24vzffw3gu6w6jqtmqeh3caa Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p34.jpg bafkreiawtbqfmct3mycc6c3bsaov2nhb4yhfcw2mjqxvjs4ykokmwgkls4 Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p35.jpg +bafkreigvade4jx3wnnjts24rh5euouybli62ii7jwf4st7pqtw3louav4i Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p36.jpg +bafkreifurnm3raj6rlzpriht4cahbujiktjvctgqzzell65lrrfvfiqaiq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p37.jpg bafkreibrhr2k7zehscingrbntexadvupg7ukkl3ctgt2yum7wfpnbc4tca Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p38.jpg bafkreiawtqvuf2cnwihcbim2ytxqx5hkjtaizl736c3ob5z3w6krwa54by Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p39.jpg +bafkreiff2hofeipgpgkhnuskoj7xlxatv2ncs2emsgi2agmnwrboxw5wsu Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p40.jpg +bafkreifwy6gb6exvu67nqndfcfdels7xzzrcdghwknfujmqpjeqgeg7pmq Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p41.jpg bafkreiahfoxrwff7kuy35fwruhgusqlqyszft7tvcjjy6sk4tybp5p6i6m Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p42.jpg bafkreibqllfcczrwistivweqtudjm5enjrb2nesuwn5dbpwqgwimhm6dne Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p43.jpg +bafkreihm42yuouoroml7vhygipelwbxkgf57adoruydgxbzpz2h3op7lnm Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p44.jpg +bafkreihuip2yy52rslzv2sdmkngt4fp7kc6atgrfz4ec6qm5lhfsj62nru Modules/Registration/Montage/test/Input/10-129-C_2/10-129-C_2_p45.jpg bafkreiddnadxefwky5zsv5y623yclqjnh34eusob7h2eotp2m4hd44m7hu Modules/Registration/Montage/test/Input/10-129-C_2/TileConfiguration.registered.txt +bafkreifxhufwnjosel2r5zzj3upp6knp536flkgyyfud6w6mewcjppiivu Modules/Registration/Montage/test/Input/10-129-C_2/TileConfiguration.txt bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_inf.nrrd bafkreidrpa4m5ncqt4npoqxby7lpcfxfz35iccsi6rxeecdcohltdvvupe Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_infN.nrrd bafkreicwnhwnk3ogvn4ac5kipwcsgdlbvhevgbksawg4xfg5cc43nzyjv4 Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_orig.nhdr bafkreic42uwrp7ypzu36yemb36yvdrq33x2tcchzuwgmup3urlcbha7w4e Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_origN.nhdr +bafkreifgg7h6y3eezo76po37jgicromen3e3obhga2mesuvp6hzeqmjsw4 Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_sup.nrrd +bafkreieyo2ylwagekqrtmdu2wk4lkuwfn3z53dj45qdsr3pcq7mipndfj4 Modules/Registration/Montage/test/Input/DzZ_T1/DzZ_T1_supN.nrrd +bafkreifejvpyqweio3pi6wymglqi3sbove6hjw5rsx3fz2awttfeoi6esy Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p00.png bafkreibpppgh47od7bzyebdfisqg27mxpe4e52odwz6ockd3mbfg36ryse Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p01.png bafkreidae2pr5ikpzq23agmh3mdajc72qvoq5zncwbgaorktezirqtooey Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p02.png bafkreidpjh22fj6dfndyomysbuxisseppr6m2e2xyaxdjkxm7fyu32k54u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p03.png bafkreiavtmplnifw6xaavywwoy7k2ejefppdh77ftpxnzbpshgz56k4sta Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p04.png bafkreidzy4n6agse2bsnrqag3b3hdmcj2jmseuj6jgtgqpg2zmbrecwt2u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p05.png +bafkreihaxtptfjbntl2qsshdamlgx5s3pg34nsfpdpqiy4ashqxer2i2ty Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p06.png bafkreicxgco2gp4jsbgvrnmurv2gwgymez6o6dn4h2dpzvlndbrgoicvsa Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p07.png bafkreiaiq4csersp2jrg5sp6wzphs5fcq6gi7ajyv7v7jyzadmdoed2ori Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p08.png bafkreia6j6pdpmcwv5hnrihzq4gbcr6ktrm3pgvw7re736m5e7637iwkza Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p09.png bafkreiayiabphhyg5w6xbrpa4gludcyb2a66t3fr7tnjcguwkl6u5rxx2u Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p10.png +bafkreieqltvrmdybbo7vgh6fwfwl6sxpgpvfnof4e6pzoa7l6cr5py3shi Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p11.png +bafkreifpfgavlg7kqc5spvfcilh23w7thadtzrhsu7rliwzphqq7odbtf4 Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p12.png +bafkreihbyuhixsw4qrnq6kom7gwm67dcdilt5cp2jktvi5qxk6ghi3l5iy Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p13.png +bafkreifb35akthhu3fsn6iwovkscror7ozb6sxlkuiluddqueazcd2ngre Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p14.png +bafkreih75kwh7hnd3qlylitmrc6mdkt22xf7jkuz22kvxby5kg3yzfojny Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p15.png +bafkreifrx6czlwhrjicp4h2z2orn5rgvfaap4yhufudx4wcudgl6gm44i4 Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p16.png +bafkreihrxlasjo6opn3gkf4ahxen5h42hnoibmro7mgbwhfwopik6rsivq Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p17.png +bafkreig3owoyz4wyhbywnvqpblk7ghcmgdlvrmfgeow2xket5vuue4ejn4 Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p18.png bafkreibjh34mu4wxjwvxozi7mjrzj56pqurcqqsuujy3gdqi5o3efezeba Modules/Registration/Montage/test/Input/MNML_3_200x_701/MNML-3_200x_701-Raw_p19.png bafkreiab7fux6wvm5vhssnkzeqhybvq4qjrle4jbg22pmjt2iv4fcf7ax4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p00.png bafkreiddwqxd7ln4cxe6n4v473m7ogs24ughtbmtznc6i3mvoduo3pnqz4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p01.png +bafkreihdqxopqhwvgrqqhoaopaxkl36ozlpljapx5lf4uoqv6munrn2h7y Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p02.png +bafkreies3y4mbhspdcus7vxeqjogpgux3tnfgnvj65g3qnz6wx32amjeyi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p03.png bafkreidoizp5mu3nq6hknyqqnbny74o565pfwx7vm7i7tbcl5qrjvnqfsu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p04.png +bafkreifyojieabokpdnla6eblg7b46e2262owxu74lhrabhdrobhdfzedm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p05.png bafkreidmb6op56j2s5djteoaww2r4hcwnzawqtyhbb6lghmqlqjg3etqoe Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p06.png bafkreidvglbh3ueb2vyxov5x36zk2uofvhfmnkpsm6gukkk2twnc3ny4lu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p07.png bafkreibx4q4rh6mr6urhlroksxizsh72u3hpul6rmcxzipfzibdbp4pdm4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p08.png bafkreia6cjtobv7fgfa7ehfqptxr244r7ut74mhcd3qhl2f4u2pcxvtedm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p09.png +bafkreihjllitfsckcjchbwclr6c4j6ujfwi3z32kz3vnnuap5bfwvnn6nq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p10.png bafkreie7zbpqtmuwm2ouk24n5vedfk53j5vaabnx5t3zagrawnltytce6q Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p11.png +bafkreietsg7etj2dkoui7jlqdikexoq3yk6f43hukqxke6tkjphfgk36qm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p12.png bafkreibttwjptzunsfj2unxflcvqmymtstlcskm7ydb4dryv65ufdpf6fy Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p13.png +bafkreihdk5e36qsyg4hhdcoxetnymk2kvfexgnqlqa2thhnelzihtuu6wq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p14.png +bafkreiewnpvsa2hj5vi222f7ev6ics4ixly6qmzrsytivqua4nsm5djiyq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p15.png +bafkreigijzot7qcmxjoy4znrp7qsz7q23n5n6nmttp2uwcxp2xo6d5hyuu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p16.png bafkreiazi5mfjvdgxjnqmo5l3lnbv2whz3l5tsxd7jnsx3cujqyys3zu3i Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p17.png +bafkreif6peqfd6x4jqhpd6ixyzi5gjvepzmcsgl6cztskmrw4u5hikef2i Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p18.png bafkreicjo6mko6kzhfzzll3kor6ckzj6dmc67yhpuybr6efkhyzh5qlhg4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p19.png bafkreidv6fva7572fl4lcllz6dva7a37dq2yupmcfodkl5cj4mctmsqe3e Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p20.png +bafkreigei4irj7wcxpr3buxv3waavooxp32flrtrmxaoew4n2xrujs7pjq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p21.png bafkreib5xxo773yaxapme2qqsfusm3lt6fm3rawuu3uooqo6kjscwog3rq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p22.png +bafkreihpx7jiofg6niijocdkjpt6vu5vjpsj45beofuzkwh4ajkt3kslwq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p23.png +bafkreifffqdf77xfdmdmzh3rlmldboe2mhcpv3nhvuygraz7oagbv6ohhi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p24.png +bafkreievwu7wdlqpdxu7haaxffwr3tjofbob7pexrx2xhvwr5kvjzqpnuy Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p25.png bafkreibqg2htebrransl5qiq3lt5bwbayq4g6uabnc4h7ynmcttxm47fra Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p26.png +bafkreig5bkhksigi4vlmymlh7uv3k5dwh6osrd6jfv676qgz65mja3gvcm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p27.png +bafkreienccwuuentmbb2nipoahvtrvh6b3du6bbm6bvqwjrmai4atyvcqu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p28.png +bafkreifmcc6rz4bcytrzscvinnxjshr5krfkeujs3nkdpeldlbdoewbtgi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p29.png +bafkreift3ia6sqlih7wtlct532emykafjkl33tp2sabuwyrs33ectovjwi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p30.png +bafkreihjzf3dcmuyt4naehfxmk6mejznc4dmilkxmeuaqoxtvdbuffe2su Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p31.png +bafkreig2bxnbfaou57az2jff6hqjda5g6x2u4akt6oae53ch6eghgpfxs4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p32.png bafkreial3iqdryttg3kv5yc3l2q25zviqxxogw57oawidix7hj4r4bnmhu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p33.png bafkreiakwrzh6diaxcgk5uoogbkqd6ceh4po7semqpa54b3kc5pghoyacu Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p34.png +bafkreig7zww3z3q6i6bc3bapl3biukfxe4wk5wiewpltdjnpwdm6gkx23a Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p35.png +bafkreigpclpfaerixmsss7g22fv4w72ef6e36mlcw5sxjnmejuyvbhdz5a Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p36.png +bafkreig6b37jovkcvdlq32x5hxdozdaqizf252p2cnw54boybbjidzv3em Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p37.png bafkreiclk5uddh2h3w4bj223ytk6vbwqqlfdw3bls2u3l6w3pt5emvszbq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p38.png bafkreiavkh7luxjlqozuirrvl5tnfmlwimtqzf34znydzhojxw6eiqkgay Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p39.png +bafkreif5w5la67cv7ocx5kqkqdxwvkjdira7ppuedmhj7nfw3qvpnsuheq Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p40.png bafkreibtzdx3xhehwc45c472np54m37wlnoiatjvq6f74r223ubxp2h3a4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p41.png bafkreibbe5yihhicqnllezne7k45wtmfdk6k4gxtkl2tc5xyqg47cywg4m Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p42.png bafkreicumkhsbm7b2qqaz2h6vcxfn3x6qcxlhtwhss3xq5ixxlzmqlltxi Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p43.png bafkreidtj4yor5k4dwsk6buwuty3jyqyldbiw4tshl6tsxemugex5i5dw4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p44.png bafkreieanuvjvfs7nfkptd2npk7yz7yoe3bwxl4wgzsl6ttvpe46z73yim Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p45.png +bafkreihz66otwpg3rsmzrfy32cgvdlfwf37ymqzo2jxqcc552hkhjjpw6m Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p46.png bafkreidxoejigoarcv4ea3tub4fua42u3ccamq7rblyvcyca2i2xgqkrry Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p47.png bafkreie5nyzqje3wiucz4ucdtlo5e2ouvdm4nv4yumx3amr4dpyi2rypk4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p48.png +bafkreifv6f7e5h6upvemhzxvkvas4pk5p5nuljxqmey3v2uaveoy6dbda4 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p49.png bafkreidyx6kle53vfwnkfprt7mlqvek6iau463lpnpjp7l7ieayjt6dmjm Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p50.png +bafkreiefldvy4teedvd6gbvjit4tbhjcygli6f2qiog5scupki7ukearna Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p51.png +bafkreifl7smwuebxpsjetel6ncowjzstoq7jes7uyp3ybvtdw3mjl2ag54 Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p52.png +bafkreiecllzaux6ksm5rg27hnmlgjoqjowxz27tsd3lmjdrppmje3efn6u Modules/Registration/Montage/test/Input/MNML_5_500x_101/MNML_5_500x_101-Raw_p53.png +bafkreiettmtwevukkpi3rsohflcw257la42bdpnk5gc346kizmtedfosx4 Modules/Registration/Montage/test/Input/MediumCarbonSteel/1701701_ Mosaic Focus Details.csv +bafkreiglgbfdc6vbgwkod7nsaczl6mxqwjcfs2ploi65td4kp4ywkbza3m Modules/Registration/Montage/test/Input/MediumCarbonSteel/1701701_ Parameter Details.csv +bafkreiejzvedh2pgloyq2saww2qbf6n7tnxqvwvzzvmh37r2mlqwbjh5py Modules/Registration/Montage/test/Input/MediumCarbonSteel/TileConfiguration.registered.txt +bafkreihgne2uhttruehkm6wh5tcdvqnmavmjtxxg4wozxotuajbgzvtur4 Modules/Registration/Montage/test/Input/MediumCarbonSteel/TileConfiguration.txt bafkreidnoxydbgdxujslf43tg6wfjpcqqynzzlvpbhww3yvxphbcxgwuq4 Modules/Registration/Montage/test/Input/OMC/FlatField/14/TileConfiguration.registered.txt +bafkreife5ttbv4u7lctjdx3jujdiyeyrcq5jdqhtokcygzyk4gpqcsxnby Modules/Registration/Montage/test/Input/OMC/FlatField/14/TileConfiguration.txt +bafkreifnwipcaenlnqvleq7o75sw65rnu56b3xhtzpazzic6yblvaxmota Modules/Registration/Montage/test/Input/OMC/FlatField/15/TileConfiguration.registered.txt +bafkreife5ttbv4u7lctjdx3jujdiyeyrcq5jdqhtokcygzyk4gpqcsxnby Modules/Registration/Montage/test/Input/OMC/FlatField/15/TileConfiguration.txt +bafkreien2z6oaoqcwdsnyfihqnb4of6xgu74zbiqt5cchf6nbrmu7ppd5m Modules/Registration/Montage/test/Input/OMC/FlatField/16/TileConfiguration.registered.txt +bafkreife5ttbv4u7lctjdx3jujdiyeyrcq5jdqhtokcygzyk4gpqcsxnby Modules/Registration/Montage/test/Input/OMC/FlatField/16/TileConfiguration.txt +bafkreiekbonlzvdkscz6i3wm6byxkl7gm3trldxu2l5stqyvfffbz2zpxe Modules/Registration/Montage/test/Input/OMC/FlatField/17/TileConfiguration.registered.txt +bafkreife5ttbv4u7lctjdx3jujdiyeyrcq5jdqhtokcygzyk4gpqcsxnby Modules/Registration/Montage/test/Input/OMC/FlatField/17/TileConfiguration.txt +bafkreiguaoalkeg6eluvaictpchoezhgnicvnp4a6gzqkyl5afynzakkoa Modules/Registration/Montage/test/Input/OMC/FlatField/18/TileConfiguration.registered.txt +bafkreife5ttbv4u7lctjdx3jujdiyeyrcq5jdqhtokcygzyk4gpqcsxnby Modules/Registration/Montage/test/Input/OMC/FlatField/18/TileConfiguration.txt +bafkreigap6bvkxvt2e42ha62ei6iqx62rvfjtag277ffxv5s6iaz2tn6nq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p000.jpg +bafkreies5og6t57m5oxthalc3cpy7qqyrgfvcu2cwpzub2mvshqyf2bace Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p001.jpg +bafkreigorqkap7zrphh5mdd7kpgeeie5g3x3p6f3ps55y3kfoyxal6x2oi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p002.jpg +bafkreigw3bdjl3y2e5yddzmq4spit65mdei4ct645n767lnn3cbwt2vmte Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p003.jpg bafkreiaorpzgu576pu34hoaawdkasyeuod7d6kha5nsxsmxznzlqb6nndq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p004.jpg bafkreic5zjhbtbpiuwzgo7pg4xbeu53ih4orxwxrgkvaufclu6qi3kbsve Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p005.jpg bafkreicjilmeofxufydcshjy66cs23jtbtdqy7dbqnqfm7gwxx2vxskb5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p006.jpg bafkreic5zq74de6pkg3iel4djy4f4hu7gbmgdoe45ff3fibrw24hgdyh44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p007.jpg +bafkreigbozwxfd2ivw2emqcn7exxhvpi4fvdp4rb74nir6rzbg6zwnckxe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p008.jpg bafkreibgxyh2pocwad45ludqngphkdii63pidocjbkacrrlr7ch7bqrzpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p009.jpg +bafkreigl3vsq4bdb6l2cgyikgsepl4ugjxknzedjkzeirwx7fypfyzuffy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p010.jpg bafkreidrkfp5ku3aayqhr72ymlrvjvbwxexoeosknqf6ws53s6lhpdmxyy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p011.jpg bafkreidno56sfkr4dhn2u72r6zcucaacphtjtp5y2pebqmxfi3orj6wwiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p012.jpg bafkreibbtainn62dqmo2k3elgvwu3cgtonhvxauwpunfacqjohceutecsu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p013.jpg +bafkreifteb6ik4l6pm5bmvae7gyolctvdvc7b7gmfkbpq2b6x76um3ir2y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p014.jpg bafkreicjdlem5tbctfbcpbtd3rrsmietnigo4v44n2zm77c2rf4mxiur3a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p015.jpg bafkreicugz2rpjmm2xh5nhtdvjpp5xrt4uzpfj4nnjfdpjy5p2zs3tz5x4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p016.jpg bafkreiajmsrloxodkxc7bhdxijctn3crbw7qhtxrvrauahl5kllnxsucim Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p017.jpg bafkreidqby5yoedmkake3gpzwsns6523ehan5teymclc6k46li55xtftd4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p018.jpg +bafkreihi3xn43rmw4ad5sjxusbyij6vfzuqhiiufaazgdqi2a2sati67rq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p019.jpg bafkreiaimzwncs6txl7vsgw46xfqmfidwu2dnvpg4it6zlifvi3l5b5m5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p020.jpg +bafkreif326cgyag22jon2ac2liwwpxj74vw3zisndfp4bwcjlhjr4zss6e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p021.jpg +bafkreif5ntxc6nmarvuxbawxs4vebqcxqp6q5olhesjo7fs5jlunw6z5oa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p022.jpg bafkreic5qnro2zxngsn4cgya5k4wpq6k5hzumekbxyzredo2jspavirf5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p023.jpg bafkreiazgdkdhjht64qdomzck52ebtsolwcddka3jjmirrs4xbp3j6x2uq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p024.jpg bafkreidj2vqkvme7vtmmbuhjtzes3y65omkm6lppda27ipx44zdnwustvu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p025.jpg bafkreidyp4bhlje643o3hgokk6myz3yfccfqqwutigdwd3zag6rg7hpi3m Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p026.jpg +bafkreihsq2scvivvwuffzpow6wqbv2z2d5yikramkghqfuazspa2nnhwuu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p027.jpg bafkreibteje2b73ued3mmbp5oe6egw3tbpj3rvm3q5gctjqgrbclpjhzbq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p028.jpg +bafkreihkca3e556jr6cxvj2v2dh7axskmxy6k26rp42bndk6kv2aekrhvm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p029.jpg +bafkreih74b6mspzt3joiiucc5jfyjl6gozieitdraqvn2bpjbd3ssbtq5i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p030.jpg +bafkreigsjtmx4cj7g4lgueeyar3dwcr4sdr5etixk4n6nqd66cgxbcybge Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p031.jpg +bafkreifps7steb7k22v4mn4upq476rmeburhkvu7j26fookizkusndh7y4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p032.jpg +bafkreif6j4ccd6go3tctio3j7mldehh6uirpqop5fnz4vtrnywsn5jtzne Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p033.jpg +bafkreihtkw5acyo7jlghreipt46wfbm3knsp2w2b23n7gtl5qhf4kru2ca Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p034.jpg +bafkreifl24hfu35bsxaa47vi2gbqquexd4ozwncvqqaa4sckk4n5zi3ibq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p035.jpg +bafkreifou2u2mtwuiysrtcjw7y763ajfzdkovumfauuxuy4newsr2irsfa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p036.jpg bafkreicl24aooy4evxu4mds3vlxx5edms5we3tht7hhncn4kdohdjuip4a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p037.jpg bafkreie4fmxd2grlaqun6owdtbkhfaf4miblywmquhhooozphk2kitm4bi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p038.jpg +bafkreiek5o7fstfxalua64hhpujub7b6bgdbn6hl2witpx3xcwpsnaovuu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p039.jpg bafkreidajnnfo5ultptfsmxsn7mv35bvz53q3oadkaelq7prnoyinicszu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p040.jpg +bafkreiha6nom7oms6gf4zcydlkoju4oiwxsi23g5rrdlcj5cnssacmtfl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p041.jpg +bafkreiejxur5vei7e5plz2aorszsrwxcoalp2r4vffsrwp2vmyiuzbaccu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p042.jpg +bafkreiejovndkafuxlxdmklubgcjtwfvh3v7w3ek7kcii7u4qfi2i3h5ma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p043.jpg +bafkreihx5y67ggsoibuf2u2nu3qskuoocroqz4nqfrot7peposn4cl4wcq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p044.jpg +bafkreiehwrafndyfuflhv7xazflbleziiwyud2ejdmczxpohaijol2k6vm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p045.jpg +bafkreifnzoaizh4llyljdtbk2seci5cyfqbshfkovq3se3gr5vdoxf7kge Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p046.jpg +bafkreiee4yrf3yglwpwlc7pdariws62yh5lclh3ezh63urkfgbq2judene Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p047.jpg +bafkreigjzysl4zbjt2lepz2kezx5ramsfcmbvi7j2wdstyo3jtskjcas7u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p048.jpg +bafkreiht66k763i7o2gqegf7zplnmdnr6oos445lrxshvii36ctw5iqvwq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p049.jpg +bafkreihmml5xlx7o2fcyacrorj5n2zhlms3lkn6regj5uin3kusomjbc2u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p050.jpg bafkreibh2r6pk6u35j2ioubsxbbztoeo6ltfmuud2hhwyfaqlte57fgihe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p051.jpg bafkreiac2qnwsfezhcn4ayicxctrxge6anaebhugogrradmozxsonrsvzu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p052.jpg +bafkreif3v2gmoudhwn5cwod7bysczjerl7trpgqlm34rww6cfl5kjsfore Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p053.jpg bafkreicccjmbfty37d43qzxsxgexzfbhuo2yw3voxai4bxq7gsmmeeuedy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p054.jpg +bafkreihmvunyv75wlwrofgxiwijw54nqzsc5w7if3npacq7xvlnd6jyktm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p055.jpg bafkreibtatnvwxssqjrb4fedb5z6w2q6chysyzk4qx5rlfz7ooiywvfgny Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p056.jpg bafkreib2fvkt5jar2lh3aqrwgzs2xqbj7npelv3ywhm7tsseh2kg3v7hwe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p057.jpg bafkreidsctg7pqbn4bl3u67nuxszoqobfiw2g3akq33sl73l3hgkrf7z3e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p058.jpg bafkreicxhj3npuolpizc4mmb4i5pwvpfnq2yycypdu73cwlcudxqxokejy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p059.jpg bafkreib3v5vzazy476pyif47elmu3pw7js5uvfjyv6e4jdlfk2vwm3znpm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p060.jpg bafkreibmketaxvhnxeurylbxgxicaksjbbyv4dr7xltbzapawqfsc3eaje Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p061.jpg +bafkreigv6pjall6vfv2imhckmw7xldsseah77ahqtod6ifgzpzwhgpcvs4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p062.jpg bafkreibfnh7e2qtcupfpdealjm4wblq36oc5im4c2o5srn6kfnt7s3yo2i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p063.jpg bafkreiaaxc36ewgwitoymz6t5iilsnyk6dz4hgenuv6wuwpe645jutot4q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p064.jpg bafkreiajgq4r6np3k2wf43juxxhoo3npbwpqd6ol6crr7geylrboniskay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p065.jpg bafkreicrczfjrhqlqsivk4c2lroj4gk23kk2bcd53otbjkudawazxz2ddi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p066.jpg +bafkreig44x43cs44zp5uchhi4uyvvggua2t3vksfarb372ymavbawjoy4q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p067.jpg bafkreib7tqavgxol2wbyub3mhqlqhfanl7s7fnmf7isbtqwv73rlzg7tfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p068.jpg bafkreidolhfq6h4hucibmbm2buwvkmdajeht4hjlizcnwcmgr3j5gjhg64 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p069.jpg +bafkreiek4x5k3za3wgcanlca4lqu4fhjjayl57yuh4wpk2ew4g6dveiaki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p070.jpg bafkreibemfy62f63o5u2hr5e63s2en57slx2gensjghlyumv7zavunz5ui Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p071.jpg +bafkreifbkcdchraxir5ynyqqueyecvq7rps2kmir2mysob7zc5domqwoie Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p072.jpg +bafkreiheiw25guaaqg3lxleik5cr4xapwxytru4ou35b2b2twtqcvjb2vu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p073.jpg bafkreie7jdjb2x2x5etoyoulfghzxtx2ul7smjjth34262soxpdy4deose Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p074.jpg +bafkreihj7fuqgxdjrxjubdz2275ti5n5wzlfjoft7dy66qn5tckdggnejy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p075.jpg +bafkreify7dhntppp3lxmmmtai5aane5tlhik55dadro4n4ux2fwtckrafu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p076.jpg bafkreic7veiqlnct72ruyc4of6mntovlbdcwjqufaw7fusm6mhhs5igoqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p077.jpg bafkreid26cu5djwu5zrwdvphyrhvn5djucmip2gvn7v5cxwsioee55slla Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p078.jpg bafkreidxgrw3usa5ukmjfd5tfpfax4vqjujpykpdrhgxwsonm2qyg657ee Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p079.jpg +bafkreieoti76yyerju4j7zngwrdfmhpgknavrv7o5gfo2sfp2nvq2treei Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p080.jpg +bafkreigo3kz7kovj7rvic5g25ek6kkocqhwb3wzwkrwe74eic7rwcab6vy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p081.jpg bafkreibe7zf6r24xjedgerxxbimk3je4fnb72prrzamlkt4cxpabvw7qym Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p082.jpg bafkreiacm6fulhjdufm5wuhaz7dz4rmh4ncmy4bcaxzop3wgend663drn4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p083.jpg bafkreicepchlzusia6ui7ixdqiykkn2xqbftd6dpza6gipsfr3puvxec7e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p084.jpg +bafkreigt73xtqog7dwafplbo3zmgfeqdzymvg7yzc6kvdcdncn2b4ed25y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p085.jpg +bafkreih6pxmhmqwrwubewyfc3g24gne6j4nkkt5hse4z6rsgaj5ohe4jay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p086.jpg bafkreic3rin5llc4lsmgef6kszbfhvytsk7gf3beripjoj6v6e4rxmtznq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p087.jpg +bafkreigk2dxrwmxrqdulwu3vkwbg7inhcdgkfdsp4xln26hts53t6cyxqy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p088.jpg +bafkreiepbjhpwtwmm2s3mn6ki4cde3z6qazaxg7bx5ktib53abw5w45oke Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p089.jpg bafkreiaks2c3a2exx7bacn6vk5fcpkrqrcc555oroj4wb6kzdlvt5c3xoa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p090.jpg +bafkreieyn7ce6o6ir6dobtznj6yz6ndplfhsrypmor33ga6hfmjhnpedfi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p091.jpg +bafkreiefiquoxyhoew4igntiawd44q63iowlxplctipldnqqz4xdaq2yre Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p092.jpg bafkreicdpmorht4jfaap5zfi7lanyvlnahp6dn2vl6gg7aqo3xldtvwvre Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p093.jpg bafkreiaf3d6uh7bdea5riqrzpkpyuqk356ajy5wcxklvubpg6se3ht3z2a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p094.jpg +bafkreigoo5ah52wrgrpf2bdj4k3jp2v4zv4smvaxxi3csm4sifolenqky4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p095.jpg +bafkreig4rupnyxc5qxu54knxjvrroke3pcfxd5gjvjjvcxtlmigalkfjzm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p096.jpg bafkreiajo3kfdvxmhhlzzlhm6mfzzppgocgalg27m7ckvxfwlmi7ccxcay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p097.jpg +bafkreieuu7ql72yhjvizabhlban5anmzcodsyigs7rqajff25odz4zq6au Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p098.jpg bafkreia7jwipm4s52enyqgc6fqloqc6udxrd77icar2vjgsdf356jdylta Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p099.jpg bafkreibqgkwfflifgjasbaco5rcqtcyoq2xlqekbo2qhlhxoszvjfagusu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p100.jpg bafkreiblrbks7corro6xjkx3lmmzs5bjtytbz36eebjk2wladsflwp37v4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p101.jpg bafkreibvvzcfb3pmuqvw2a35qhhrnrjdnuhsseceg2zj6k4evf4tefzbma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p102.jpg +bafkreiexdm2blxk22aobcnbjr4h7eytq7nmytbocsnapqj7efcxtrsx24i Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p103.jpg bafkreibve3dmmeyanarnwbnx4rajwzrnohls6oovfs67raxipfxi32zfqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p104.jpg +bafkreih5jw4ukrfauzn4zx2s3fvbvkpunn67xtvi6sp3prjnwbojufbkoa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p105.jpg bafkreic7dxxbmkfl4xc76xavimjampfw7ecaqafei74inzxcg6uy3q6nqe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p106.jpg bafkreiaenzhweos7cuhehcw2n2eb5rdkjoelpsu35hfjaljuelk6ed5py4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p107.jpg bafkreicrxdsjmoogonsok6kaqecaqief25p7izn7gpyzoncdllkcpop4lq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p108.jpg bafkreibtbvbojri6va36qi5rpjtpjanuc5fkaah6ijxmjovlwji5j35gv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p109.jpg bafkreiblru7f3x35ngmuxm7s4osm4obgmg36egmxnzeug3t3a2kixu4v7a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p110.jpg bafkreicftlccxcxesxsdwj3hh23scxbdwfkka2iddx4shjpdxeawqz73gm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p111.jpg +bafkreih322cowicmted5fqsrculfrvedgfaktmfxmp7zax3cxhx7gnxxnm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p112.jpg +bafkreihca5cgigzdojtbms42xvlpoqnr6chzrnhslbrchofb3i74ll5ky4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p113.jpg bafkreie2puervvrlp5hk6645oxahm3cxytfeeg744gcxqd4lf2lqlehcfy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p114.jpg +bafkreifzbno6ejbkgw7mvzbukyzarvkn62ovguzwqtnhvqw73ino4lm2dm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p115.jpg +bafkreigi4al2tkryeb4ppm6zvzpxtizda7ar3lwcz72fnk5q3fiv5moe54 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p116.jpg bafkreicfi3j6bwctbypekiznas2ff4kzdmnfqiihxl7acuv67nhkyjhuka Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p117.jpg bafkreiblyxf4zc4tcdkbeyoh3bo7mw3xici7a44jickh24yhwphqq57cl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p118.jpg +bafkreifjhc4ptlonh2vzelir6mkjztiys4fx2q4ulijhe5xznkouzizeci Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p119.jpg bafkreidhs5kasjdlu7po374ac3byewfatl33d2wjhpw6smvfszjmpwtpma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p120.jpg bafkreicy2w2w7kjuve6236bjjabeu3dfz6wrcmzithzmvyzc5wxfdvvlzi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p121.jpg bafkreiczj5lkpea3wc4tx7u42ijzn7imuzrqrvi7rdjzz6z5j36onpqkcm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p122.jpg +bafkreifutnqvur5airpqvox3ihxxhszhr3fpvgpmcnbearwotljxgy6jp4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p123.jpg bafkreibpadkezm6nygus7vaox35xhmfr4mbefrp6fkkjdb24af7h5betwu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p124.jpg bafkreicmsci2vmkx3vq4jdkehcsffo3kyff56rou36kjmonauxmoqnxlxq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p125.jpg +bafkreiek4eaoyz4zdu4m563xktmabrho4zmyi32i5wurlv2hienux5aodm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p126.jpg bafkreiat6i35mejotccxzj4lgxnu6ikizkpnaaccq2hjflmeux674fmbma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p127.jpg +bafkreig67dzuyxoep2cmqkdypf5mvvnfosungg5fgxlybfe7bgxlebaiwm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p128.jpg +bafkreiefohflcazegdedclfaz5eoxbrwuybmfiekabwhqitfk6t26brbke Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p129.jpg +bafkreifipfcrj3jhxkvk6m4gf6on2mxv25kcqqioce6qbqpcx4ozcp3wpy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p130.jpg bafkreicjsgtk4qhirmkblfy7atjurh3ptlg5wwfttt47wbt6elfkyqniz4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p131.jpg bafkreiebpiefq5f2qaesonnvlxxstupajw4qkzz3cqnvo5d5p2d5wdalqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p132.jpg bafkreidyu3gfvpt7z7ozgmstwbj3hozc5c6g6lvobsi674ikeknik4q7my Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p133.jpg +bafkreihitgwka42yabwlpyq3tc2h3whucafu3glyogsauc3w2mlbdjcgoy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p134.jpg bafkreiaaxp65mjjmabedx2lkdpaqwls3f7m2twwep6bluklekvomhb6wgi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p135.jpg +bafkreieiuqmd4d3lgkcjxgir7j7w43cixfvc6ndhmje4xqi7qef6nyzyhe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p136.jpg +bafkreigrsxckjg6z53icwvybalm4supmz44xysqk2hlzhufis5nrpyeame Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p137.jpg bafkreialee3e62okzzm7m7ofwhny6bvtgoegh7kmpfl43mu7j6yzt4yvay Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p138.jpg bafkreibm7tey5lt3kfb3c4oii7jzfwkxha2mu4kavtarcvneafxlzcc77y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p139.jpg bafkreia5pzs2sbyzcqmv7hgira56hpkazmdfabtff6vt6k4wmzhj43asjm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p140.jpg +bafkreifw5itwqql2by7cu7cgmyusccu5vxvjesc3urp3gcyaoef6lm4uja Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p141.jpg bafkreicq7yyl4dc6pue4jiiq7guzgpcol2ktz72haa64shpt75p3sachki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p142.jpg bafkreib3bjpx2xw2fmdqlnjopiv6lcrdkqgen6re7zjdaiwwzlllagrjiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p143.jpg +bafkreifhktwha35gx7wnwndl2zyz4ly367bw2kg2rqhje55umq32bosvfy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p144.jpg bafkreibttgxfy3l6k3e75qjtoamtx5f3uwaeqx2csdx6oekwr2bh7fppea Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p145.jpg bafkreicxeewfipjftum74igjifycrw3aq7vam4nhncelokpvwt7p4pbhi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p146.jpg +bafkreihvz6wutmdnxb77w44i5favgvyop3jsq63m6vluald5ydasrutize Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p147.jpg bafkreibvrbam32thgpzu4oybnvvbiropa4giwqvpr7dt6jduycrln3w5fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p148.jpg bafkreicgo6uuqvamastv2uwradagudf42yvq54tbe2n5xqrpb4cryidtnu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p149.jpg bafkreic7oufmbsdprhy2qvkjmlvqvyrqdyxmohppbxjhznrssr5dogwnkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p150.jpg +bafkreiemfhccbqmx6cxachsafar5x6ftq24avg5bsde5dgf4yzyyzubgs4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p151.jpg bafkreidyt2gqbeh26fidetmoghpznrzxcwhakkd5tfsyc23o5vhtdpatfu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p152.jpg +bafkreihwgjrckp4ocaoxggicsjfcmeq6zgsjr3tovieeghj53ukmm6woh4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p153.jpg bafkreiba5d2icqcsgapjznjp4ysspvw3xgsfiguesdh44c5ahmy2egsbl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p154.jpg bafkreibqpl4fliy4khbimysr6jw4hzafykazuwner5v6ue4hglot7eu5je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p155.jpg +bafkreigrf332xy7szm4dsbcib3n6s4cftub6ionyi4btwdakovva7ihn4a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p156.jpg bafkreideuxwjwgjfwqsavkssugcl7jhceo5u4pl4mfesm5hd5wo4igmucq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p157.jpg bafkreiacz5odzgqhql6aidkylwoivx7yg6grx6vmcsifsgi5mqnllmlepe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p158.jpg bafkreibyecothj2mfftqovxkprgjq732chnq2437neyjjgfjujo6qfyizu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p159.jpg bafkreibuqi2oa4pyodz6ogtc6mnxp3xi6pudzr6eapu7g2itmiemjk5mfq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p160.jpg +bafkreig4qvccoitqn6c77x7pes5qn6d2kkj3nijegefefxxig4wve62t5a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p161.jpg +bafkreietmn6ua2vrfq63oljaqnpsqx3g4x6vztcska76hmwl3az5x4ani4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p162.jpg bafkreiah6l73blswn4i6ksmjhjunz6cn3bhntvcgcwrqxn2qitkct2thwa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p163.jpg bafkreiadw3ym4nvmgszvdu3g6quiid3qfdpra44vpxfqli5kmu4jyoip5y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p164.jpg +bafkreiepoh4j6nyh3po5dshkqxdieygorntljg3m2wh5zz7oxkdiq4dmzu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p165.jpg bafkreiazk4o7r7mxsvqz4zm6ykzkuerr3b5rgsyhfjoalg3bqkitmpi2di Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p166.jpg bafkreidt3kvzoluz22c3nbiieh6tdlm2gdh6jq3empfpm2vglkb5uc2cee Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p167.jpg +bafkreiemklxeofor3tx2i2brhea45snzusfk7qv5qxtnoankfqx2s3acna Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p168.jpg bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p169.jpg +bafkreigbkz2qjpmadrtoulrsw3zhgbnvt53trebsj75t53s2jbsqofpfle Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p170.jpg +bafkreigpzwbpuw3rtpnxj2oirvxia2uuzmg72eflu6tt4adqsmheitslxm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p171.jpg bafkreidx7gl2vqozh4e26blif4sp3fmj4ugxcmlvi2jkptujbexx3jffgm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p172.jpg +bafkreiffhhab5nbhkbt3kcxumd3i6fs7d7fsig2p5kezwhsfztcx4m7feq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p173.jpg +bafkreieqcuycsqbdndckqu74wvnvfi6thimulbwnvi354a3ux67vjgjg4y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p174.jpg +bafkreify2lm4ukc64q4u3tl2nkasgwvsgaugngy3tsusrrk6emnsx2rrmm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p175.jpg +bafkreihstqup4c6ypmfobguc3gx6keksiqpaies5nfr7nqvhauu4wyy5em Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p176.jpg +bafkreiglapol3f4o254um6nf77rtv6n5lah6kip2i636v6e52vflmoydjy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p177.jpg bafkreicd3f62eym6iax6avtrutsbkpwwpsi67mu5g5qyrhhzlscd3mbnnq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p178.jpg +bafkreifgurxxnglprzzsruwjaikr7rb5vfbbj4ltto54c7ucakv23w622e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p179.jpg +bafkreihsxzz7saaf72khjjuvt75ghb76qipsvr2ue7d7grydvhvadxxq6a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p180.jpg +bafkreigd6li4kuptpzmf4gmuslv37h72rwfgn5mtdrsdrsm4vfjstbb2ve Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p181.jpg bafkreicda5gbucmr7jwp66hxl3rqldyltkspujcssxfqyzwhvcpqv5toi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p182.jpg bafkreibi77qjk7zkdscudpxyzowecsmmgswxxm2xa7rlhtz7d4pxhtgxae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p183.jpg +bafkreihux2y5wzqua3kdh6rwq2kbntrmxfxkkjasdyn6jvtng6546attle Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p184.jpg bafkreidocp47drn3i4p3y632ovwhg6peuave5ozkr6nyatxjayggqhc3iy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p185.jpg bafkreicapwzim4mfjsgcdm2h6j4b3l5idpo6jw3f4lxtqi77frwryl4ugy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p186.jpg bafkreie2kqmyk5j7xhi4pxmdw6w56bet2q2cc7io7kpo7hbocgohfny2yu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p187.jpg +bafkreieief5mvfmxtu56ydvqmzgoq2hcy3bzsggdsyvfpikwbwzna2zwmy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p188.jpg +bafkreiez3zhcniajuxgg5ehl6tnhkihr72aysoccwy24xghvpbyshpq3om Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p189.jpg bafkreidtkmtnks3eejc5wkvzb2yb3josvjpilms64ydabhwso2uj4tswdy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p190.jpg bafkreibzckxuoilm7msm5aszimi7bhzxkrk2w2dywrw3m6slcrkh2q7zra Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p191.jpg +bafkreiftpvn2ehi5efwsvtmwkmqbggkh27vwda23ur4m5xk45uzifrjuma Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p192.jpg +bafkreifbfmrxte6cnjjidpkpdzgx45tnx5xsrzknxtaqrf6or7rvgcluve Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p193.jpg +bafkreifxkhgwwnjxl32evdtldqokph5mo5fgtyjawi3j47i2k3rxvickiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p194.jpg bafkreibmaqe6kp75az4xhmeityxxvjjdgfshfayhhc5k4m6gmgity6j4pq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p195.jpg bafkreidy3mjlz37wwfwppxwf7piyqytqln2ktfy3oge7dp22comuwz77qi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p196.jpg bafkreiaueoad3a7bonxllif6gro63sgc62y5g3ova635qbas6qwd5pb4za Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p197.jpg @@ -630,69 +1213,142 @@ bafkreicbau53kuqrpvz4es6cm43ucv5zz4e4jetjnlrxh6mct7lfok7wqy Modules/Registration bafkreiclp7oai7xrwp7pchvorrqe2kob6g7gube77ba7nj52qzeo27qmae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p200.jpg bafkreidjbfd5sbllcniqra6vlqj5r7sylmiazugdmybkw3sayfng5utg6u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p201.jpg bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p202.jpg +bafkreif3dvzf6qbywoc6rg75yco6u2kpsipow5bsz4futycrsmwr2mmd4m Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p203.jpg +bafkreihb3yjof5yyziyrtxr6id5ufjihmiqk66ef66vpsgbcareciklpse Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p204.jpg bafkreiclb4tfs656bkgvnjlan2fnrnkafuwawjqj6wi56i6glw74mhb4fy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p205.jpg bafkreia724pkmsfqmbhkddixbjbxhld526xubtbogjtmr64gcnukqbszvq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p206.jpg bafkreidamxgqsllyanjwsjzqxfu2ey4mm46p4nj4byag7j74dzdlmjapi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p207.jpg bafkreid7faqakfcx26pq7irynbivnqia72tmwftps34h2bujbxluph7bgq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p208.jpg +bafkreigdlev6uuciu6olrv6nfo7zmsa2ximfmeihltlelyczicbbrfahlq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p209.jpg bafkreicdu3boestqksh25t6lmtdw4yirdkwr5tccxgxkk5wlupztj32zzm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p210.jpg +bafkreiee6pfgeqdgcypfvadplfzcj6wrjak4zqb7wrsoj77duwytjcbq54 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p211.jpg bafkreie25fo4v5ucaqnioowwyexhgcjkb4jtmqfvjdmh75keqcumlqvuce Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p212.jpg bafkreibdiwd75o344lpnrxw3bko425egkbl6di7b7bbzlvntuqzzxtd62e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p213.jpg bafkreic7xxqrzmojpudptamytkup4dm3hhqut4kjq2hd7ssn3bbgb6i6ya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p214.jpg +bafkreig3s3mqwopafuu5mbqb4ay7yhwj7zhibtrajfy2uul7tbbhq5bal4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p215.jpg bafkreibedo2o73o7rakzradzya62uloqq5tu5wfrfdibqgp6cq2xqgfgne Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p216.jpg +bafkreiferskkqrmeoi6im6vr6sxn47gwy5m5wcuo6lohxmt26jah4t67ty Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p217.jpg bafkreiadt4ubvytwsybxjn5mc3dmbu2sdzpgnsxbgzubl37nlocvtqrq44 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p218.jpg bafkreida4rsykaerugpteh3btk6f77gtb2qr6uzi47bsioamfdpawp7wkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p219.jpg +bafkreihrhn2dxqnkdkab2qmpoxzo2dfmjzw7fbkul6iinvmouj7dwltjqy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p220.jpg bafkreidn5gi2d3m7y3wbmqbxp4tlxg4ul6ghwldlz5f5w6wziu5nwho7bm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p221.jpg bafkreic66ce23sqhgjvomov4aotvjwcyxy7uzhpz2iidrr4heit7rl265a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p222.jpg +bafkreifjpqrtwx3phn2gth3jryn6viqe5lyqhdgjr2plvelrhzexbzgdly Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p223.jpg +bafkreignkn5gstuvco4zoblat4jda7ottgcjybm46drzwjye7pojynbtje Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p224.jpg bafkreicyjzjjddvvdc6n2jbcu7wqc5vjshke5q6m374djwqf7lsjlctgly Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p225.jpg +bafkreihoccxvk52mwyidhpslytrkebocc6iunjzp6qb7vz6u3zpg5mnef4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p226.jpg bafkreidhsnfap32pa46uwdo2wxmy5q6ov23wrbfreldwestk3cu63udv4y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p227.jpg bafkreicvb2llom3nob7sceozzjniv4pexdplrafexppj4br7loojrgicoy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p228.jpg bafkreicd7wcsml2kinzppz4oexwfwqhcwwqsxsaipiw6dhpszjcdtz7eiq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p229.jpg +bafkreigrtv4abf6r7ed3znn6rllvalkktfalimbfizn6yk6c5acihl2ks4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p230.jpg bafkreicz6iin4nwl37k53vov2utypezgtvsf4unuo4ui2buc3gpynwucxy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p231.jpg +bafkreifin6b6tsncfqbvmywcysuwhswtj5iao23fgr5pdab62yf56t64ti Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p232.jpg +bafkreiendlfogw2xnsoiaadh7d3pmaczfiic2c225gjdrb2ig3vb5yf24y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p233.jpg +bafkreif3ogmb7pcgmerfhrtxtlbmxa4rkzn2de57tg6sehcfjdx53mahhi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p234.jpg +bafkreiggpbte2kiz3e3gxp4qitn5c6jrbeeyk4ekfd5ogld22lhn2usqq4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p235.jpg +bafkreifau6ijq563rk36lzkk3cwihfmkqzifhje6macuscllne2jkepnaa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p236.jpg +bafkreiegxoocv73s2r72tkzt3samqmovkburpzxl5hsqldlorxhtukjshq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p237.jpg bafkreib6fmo2ipazx6vdxk6fc4eslo4o43ygcbhgula27c6xg4tixuvejq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p238.jpg +bafkreiey35x4ktwqmik2kytc2fwl3hmiwtx3w5wwfitzukv5gvd6tye474 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p239.jpg bafkreic5u6yysa2ewa5psvi3rr4ncycvnbi5tnmidbr6u5v6pnou5pzb3e Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p240.jpg bafkreiaujcpaottzy2rbwnpzo3k6cgqw6b3drpohblomcp73rfiyuywsl4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p241.jpg +bafkreiggwxfu6nranqrqzhh63a3nunbwla22tuw5cmax7lg5il2wbckvam Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p242.jpg +bafkreihonvrw366mergogsk7vc2e7ncgfrdwxpkmr332gybdzmm7u25lce Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p243.jpg bafkreicoilcugxt4amhxe7atvf4kamlp2obp3zifqwzehbr6vpqenvlcti Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p244.jpg +bafkreihi2ynh5q6eukckpsbty6wmud2jov2sjxx324xoxn7jqmb65tepde Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p245.jpg +bafkreif5ybd3c5sgv4zjglce4skewf4x3vslmoqxkoqm2ctfxbif72bhpe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p246.jpg bafkreidgykzbmgtua6fou54zz6gqmn6a6bavuurzkawwc656nxp4ug57eq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p247.jpg +bafkreiedtwziffbrrk5t2rkcbrd3vnkn6lu7g5hylzw7ptzxeton4stone Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p248.jpg bafkreicbnzxdiujtu2wntatne6wlpu63zbto24xcd7bklhvxnyuk2izhs4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p249.jpg +bafkreifhn7mvjkjykg42kpfei2ykab6zdktshl3os2tyrfd75drvoyy2rm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p250.jpg +bafkreigubphpebqpgrujgnvxjlokv2k4hxv37klkmyf7qjy4bxtspa7x6a Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p251.jpg bafkreibvbhvvc7hsutg7zzdwnt56rz5kgvds7wlwx7vbli7ibxjrmgyfki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p252.jpg +bafkreievojvg3qvmrhglxzy65jcv5olduviyxr4wmb2ycjdeelobfd7jmq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p253.jpg +bafkreig3epkhoamzqj6tpavrpyilusylq7gjdrbrj4xpezorvafa7yxuq4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p254.jpg +bafkreigjgsywh3x2dgt6ueahulqi4t74vss6rvfcpybpmj6r3aouqk2gja Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p255.jpg +bafkreihqw2gyhnlgw6bao2ngb3gqikpaydu36r3hvs2rrsy5e37qu5egqy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p256.jpg bafkreid3ipmugzicquzsdk33ahhzckj7streugl3chuwlbfy6mqo53g6d4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p257.jpg bafkreidmenhtc66wm4e2veqe23vnjx45l2cnopnpxeofrq2esfui3egm6q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p258.jpg bafkreidkajo26izsfp74xaygioewn4rmv6aaof3ibsd52jeff723pxwawm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p259.jpg bafkreiayoswtitw4l2vra74vrwy65riqq7pnhkgqzbtljwyq6aqtgqatja Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p260.jpg +bafkreifdoira6n52xjlowbefvywbbnu6tldzl2nqgrqqgurqtkrll3neii Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p261.jpg bafkreicon7s3icz43kegyrgoxmobxw55kwa7uqu5hzmjklviix32epj4qy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p262.jpg bafkreiaksej5vgapaibxp2be3dmuohctzprgfqc55wpjfobd4jvyzm3tta Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p263.jpg bafkreibj5u7w63ebggqnzgbw3vbj7xfyyl5xafinmhkwcp6j2upmauqcuq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p264.jpg +bafkreih2ios4gxpohshqourmd4etq4t7mkpjgoay3jbhuxmascpvizewka Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p265.jpg bafkreicd3n5d4bg2uej3bpy4kjpqrq5dr3fi6gdcw3tbc5opsyy6iexcxi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p266.jpg +bafkreihsec5eo7apm53p2h4sx36d3xscth22w77z4wwk7zkpfbrsw6mqx4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p267.jpg +bafkreihi6srj7abram3ssgko7nangdrqcrdd2bpco6utofpyvu2nt7hp2q Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p268.jpg bafkreie6rdowcpuvuytfky6i7qvlv4agxm2ubbf3rvefn2fo3vqv5u6yxe Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p269.jpg +bafkreihsbzocklzbrqlzalmndcvti3qek2pslkeje4ac7awtuuw55xvvva Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p270.jpg bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p271.jpg bafkreia3pjdp7img6livz4vyctkw4b2rbnulon23hnch3jtg3aa4plianm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p272.jpg bafkreidi2imyj2fzg5kls7oiuuu3bvfsv32ivyxasq7vmp7b6ubmczdaki Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p273.jpg bafkreibk2qyatqhwgs4xueaxtwndxwinkm3mzo4ax4hqwun4czrcq5rwi4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p274.jpg +bafkreier7cztnqcbbozxydt2hznqts2p4jgoptpqzcimyton3dm6i7jc3u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p275.jpg bafkreibhsnbowo4dlul7zx56pfovymve2udcuxesjixac4mvd3bo3epxhi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p276.jpg bafkreib3lgmb7hj5jldqzfhhl2evqozu7tziym63y3w4rwkfzsrxjbptya Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p277.jpg +bafkreigh5jomzqei6zvmabyf5oycvlqio3gaq4ctf6od7i5jxdgmivlmqu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p278.jpg +bafkreifjqblit6clxp2r6ejkuzvi5srdgwqcu5mqsjxq3dhntevfzj23oy Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p279.jpg bafkreia2dw47rumodvvjrhowspskonhfbe5jiff2hcjv2a3j366xdsj5bu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p280.jpg +bafkreieg5g7ftjj2b7geweurakmn6pfdhqcqccqcwwg6dctsf3wtqipy7u Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p281.jpg +bafkreigxsuxamlzjfi7g2fotpblgyibka54sl35voxgcci4kddw4qcauua Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p282.jpg bafkreich4266o526dji25mmvkmvy3meudgurh7yra2zkv6e2uzolg7pe2y Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p283.jpg +bafkreifcirxutbd6rd66geg7g6rd7yccutjxnwpokzjdylnvbviazesfaq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p284.jpg +bafkreigb3dmxrritkxvpzw6qinrz4z23ofx7b4hnhipvjt7hryzuvpf2x4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p285.jpg +bafkreih2oqxlks44tdkaabw75rfwuld27tqcqrrdhdu6ga6wkscs5ooioi Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p286.jpg +bafkreihyfxsluf5rhpj5fgieihpvd6zarabccudfmqaermvmeer7e6ira4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p287.jpg +bafkreihaxgborztgigxgwk4hv54k5iffv3mzmlczx4kpegjyk2nvroiuqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p288.jpg +bafkreihhrgckzxh6rkooad3zw3bdbuei7asxlslirag4dphrxngffajokm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p289.jpg bafkreiac4rff3gx427atdr3fgp7wbi7ebdlrviqtkm4yh6jl45jxcplrae Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p290.jpg +bafkreigb3ctf4owxc4hiuvoub4zmno3xah6gn3cscdcwdxzawjwlsz2xcq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p291.jpg +bafkreigfxnfxlkh4nkueawk2efhvespi7tmhcoh3tfwom3mrb7l7eff6bu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p292.jpg +bafkreifozx7u5etkoozzkhm6f6xtakrk5zlliscqav5dp6ftwvije7juqa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p293.jpg bafkreice2gzuvpehhqem3kwxser4l7p3plukcm2ojdbveaj2zkp76rsvqm Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p294.jpg bafkreidtlahe7myzifb5pxbvy6vl5zfiunrqocsntbywdcr4i4mkzljlm4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p295.jpg +bafkreigj67h4iifsfuifjxrvno7iqcvtaqbbhebfa6o6anfuhgcu2lexkq Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p296.jpg bafkreidbgxwzfrc53q75ouqlp5gw4a7m4as4pzbt35klmhqwezzcezqro4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p297.jpg bafkreiaxkhhq7fdm5sp7p3e4ntyllgn75wu27mizndmk4u2x75oz3ua6je Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p298.jpg +bafkreihlqxjj4iu363vhulhxcnkxp7kffihwhty3yn7hyotfmgzn7ceuk4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p299.jpg +bafkreieqgqpn6alju6pgdrfgi3ld67gzwpzrmtgqhorxa5yivzdyrfhnhu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p300.jpg +bafkreifxpp35u5yxmqobs6ra2b73ov267hi74cxmn4wfdi7bcbzysjhhbu Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p301.jpg bafkreibts352wtwgllsqbr3abhfstejqoeahdrqq3gasisiyw26poiipei Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p302.jpg +bafkreigyupykcpcohemk3duozye2rj2c6f6bvbbs33dcsndtq5izymvnr4 Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p303.jpg +bafkreieh4cdckmaxgsbgddnc3jbt62ebsehpcx7br2bkr5jawsmf6mu4qa Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p304.jpg +bafkreigcpqnz2w2wp74kwqofgftox5zryq3oidfiwarksblezuiiulvuau Modules/Registration/Montage/test/Input/S200-6-C/S200-6-320x_p305.jpg +bafkreih4bobabtcickjuokrutpejcbj75v2lorzlhvinyruhgecqwg2rwm Modules/Registration/Montage/test/Input/S200-6-C/TileConfiguration.registered.txt bafkreib54356tstd5cx5atvpmoewpcy6qes3q3dagc5sqyfdgmsi2vqt2a Modules/Registration/Montage/test/Input/S200-6-C/TileConfiguration.txt +bafkreifps7steb7k22v4mn4upq476rmeburhkvu7j26fookizkusndh7y4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p032.jpg bafkreicrczfjrhqlqsivk4c2lroj4gk23kk2bcd53otbjkudawazxz2ddi Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p066.jpg +bafkreig44x43cs44zp5uchhi4uyvvggua2t3vksfarb372ymavbawjoy4q Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p067.jpg bafkreiblrbks7corro6xjkx3lmmzs5bjtytbz36eebjk2wladsflwp37v4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p101.jpg +bafkreiemklxeofor3tx2i2brhea45snzusfk7qv5qxtnoankfqx2s3acna Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p168.jpg bafkreiafuzszuzv4vuquc6mvjw2y2a7fjwoyppy6jtw5ptkb7taxoxj22e Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p169.jpg bafkreibj2ytw6dlblc376wbs23cwz3doboqej4zw6je5jo7tyczf7ar5qu Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p202.jpg +bafkreif3dvzf6qbywoc6rg75yco6u2kpsipow5bsz4futycrsmwr2mmd4m Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p203.jpg +bafkreifau6ijq563rk36lzkk3cwihfmkqzifhje6macuscllne2jkepnaa Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p236.jpg +bafkreiegxoocv73s2r72tkzt3samqmovkburpzxl5hsqldlorxhtukjshq Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p237.jpg +bafkreihsbzocklzbrqlzalmndcvti3qek2pslkeje4ac7awtuuw55xvvva Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p270.jpg bafkreibmimgn2hrmtmxhsn4jfmz3riss4ju5ytxofo3b4ntfdz35pyikv4 Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p271.jpg +bafkreieh4cdckmaxgsbgddnc3jbt62ebsehpcx7br2bkr5jawsmf6mu4qa Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p304.jpg +bafkreigcpqnz2w2wp74kwqofgftox5zryq3oidfiwarksblezuiiulvuau Modules/Registration/Montage/test/Input/S200-small/S200-6-320x_p305.jpg bafkreiag7lmo6ysxdnbhfwdphc4hv4ihur6rz6ejdk3vhouisfp3xluij4 Modules/Registration/Montage/test/Input/S200-small/TileConfiguration.registered.txt +bafkreifyg2rvjigtomsaede2vcgijnivbhgbp5yiojtx54ud2b43gpzp3m Modules/Registration/Montage/test/Input/S200-small/TileConfiguration.txt bafkreicevajsc6377e6m63fmk6v5q2ptaybanbkmixxvik5pbwpnimzpma Modules/Registration/Montage/test/Input/SingleLayer3D/DzZ_T1_inf.nrrd bafkreibm6l5ajqhve6vzqyq7ekq4zmuetmkkchpacxbyd2jip6btazfvji Modules/Registration/Montage/test/Input/Synthetic/Cuboid1.mha +bafkreifmd2uubrsvfoqwxlnlv6ttw4exoceh7l243sp7fwc2a73yqwm3ky Modules/Registration/Montage/test/Input/Synthetic/Cuboid1.nrrd bafkreidx4yoj7kef6aoewd5adwuczq6xbwb5kqspybrl263ydzbgwxgpvu Modules/Registration/Montage/test/Input/Synthetic/Cuboid2.mha bafkreiearus6rugqb5jlm63cf4y5cwo6x2g3rdv4biwrib6k2pd2dd2z3a Modules/Registration/Montage/test/Input/Synthetic/Cuboid2.nrrd +bafkreieeecd6o3ifwumd4pwc22f24l5iiuvwgdu5w32vjy7gpvtw5ecbge Modules/Registration/Montage/test/Input/Synthetic/FocusBackground.png bafkreibojmzncczdyv6lfbiyqux6skiicpdonirdlrbjumoudsfbc4bbqi Modules/Registration/Montage/test/Input/Synthetic/FocusSample.png bafkreiav66h6tgrqa7iupmow34eaaa2hngcpisepa3aa6staqfr7u2prji Modules/Registration/Montage/test/Input/Synthetic/MNML3_03bottom.png +bafkreifgcbdlgl5yz2qqcgygfhvfwe3miptggs3mdtc5y2csviexz7gc4m Modules/Registration/Montage/test/Input/Synthetic/MNML3_04top.png +bafkreigp5amucayndk6jhkdneoshz4yz6mf2sqoga227ju4hamfy7zmz44 Modules/Registration/Montage/test/Input/Synthetic/Rect1.png bafkreidvegyxnbx3kjlisz5qfisjzg45adrnqsccn6j2ldy7h4u7w5gb3i Modules/Registration/Montage/test/Input/Synthetic/Rect1N.png bafkreiaam33ofytsf3wmp4gakpnmwgtgtrxiyn4no7gxz7ueg4s2bbvh6e Modules/Registration/Montage/test/Input/Synthetic/Rect2.png +bafkreieheksshyog3ddid5dj4jnda4j5pppllybwfrvzukcedeihrpka6m Modules/Registration/Montage/test/Input/Synthetic/Rect2N.png +bafkreig5bchpphdtty3g2mmvmte7y6p2toygbwnk2e3b7pk4dd34awgj5a Modules/Registration/Montage/test/Input/VisibleHumanRGB/TileConfiguration.registered.txt +bafkreig5bchpphdtty3g2mmvmte7y6p2toygbwnk2e3b7pk4dd34awgj5a Modules/Registration/Montage/test/Input/VisibleHumanRGB/TileConfiguration.txt bafkreiagtlczegb2znsj5ohtooykgzqrdcquc3fqwncsxmvietu6eyea7e Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.1.nii bafkreibuvr4ual4tvllt356minn6dikbeagwsggukxlp44zs7x7pjjat34 Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.2.nii bafkreic3fpf34kla3gduhp3cvam5jdhjjk4uyr3gyap6jekuoi5qxurhim Modules/Registration/RegistrationMethodsv4/test/Baseline/itkSimpleImageRegistrationTest.3.nii @@ -704,142 +1360,282 @@ bafkreiben332bhuhz3rcyxxxe2sxgzvynnelykzmrg7gsxsksf5eabw5fe Modules/Registration bafkreiblhixcduhuia4lfjykffuwvahnauwb54y6rr3lne4ksfukcrwqki Modules/Registration/RegistrationMethodsv4/test/Input/r16slice_rigid.nii.gz bafkreibqg6nybsvkxnnpgjxeuhscitfrj7e4t4kttamprrpvd6hm4o7bu4 Modules/Registration/RegistrationMethodsv4/test/Input/r64slice.nii.gz bafkreicahmlo76af57reh5tgq3kbspzj2k37u7vyforjvvopquulbfnewi Modules/Segmentation/Classifiers/test/Baseline/itkBayesianClassifierImageFilterTestLabelMapNoPriors.png +bafkreifuykolndjoh7xsvsx67vfr7mvgaefkcaatlk7tyf6g6xm3pphspu Modules/Segmentation/Classifiers/test/Baseline/itkBayesianClassifierImageFilterTestLabelMapPriors.png +bafkreihwd73s4fqzytbc44lrakogeyhpo4uc6kdhfoxmyhdzd77kxh7igq Modules/Segmentation/Classifiers/test/Baseline/itkScalarImageKmeansImageFilterTest.png +bafkreigrf4d5ott4ztwxdh756kfftkxhurzslo2zj627eqhsu3etfhlady Modules/Segmentation/ConnectedComponents/test/Baseline/HardConnectedComponentImageFilterTest.png +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Modules/Segmentation/LevelSets/test/Input/BrainProtonDensitySlice.png +bafkreihf47hhrkrs537yzbvtie335bhoczdv2yxkzkopvq27w3fkk4jhz4 Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetGrayMatterTest.png bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetVentricleTest.png bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Modules/Segmentation/LevelSets/wrapping/test/Baseline/PythonThresholdSegmentationLevelSetWhiteMatterTest.png +bafkreihbwucn5zapsbpbyucuhb4fxpbmqkceh646y7znqon4vqjjv3tlr4 Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_dense_single.mha +bafkreihorfsncfjb3kzxqykelvpuki5eeoqprazlgjo2idozcmwdoe6vxa Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_dense_single_5.mha bafkreiasq35o3m5x3vzre7t42j3ca4djb2ik7ccpzeei6xvd7rklylndhi Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_malcolm_single.mha +bafkreigelujppoiv6ihso37j5kts2iaduy7efjsv7ztrmzcbvk4j4itynu Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_malcolm_two.mha bafkreic6e4lfa7yfa22revrekqucwe7malsoeftlvayvwjywensknouptq Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_shi_single.mha bafkreid2yxsj35hcsklijdcpggvc4rosgjrqy6z634um6uzwl7j6pfyaei Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_shi_two.mha bafkreidrjrxppoag3yntixvkannnmhtlksvbzzzilm5af3oqqf2sbwhhpa Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_sparse_single.mha +bafkreihuxzamh3tt7tydfybudoxpw2tk4ye2tjacneq32v3q6fbhukzvne Modules/Segmentation/LevelSetsv4/test/Baseline/solution_whiteSpot_output_sparse_two.mha bafkreicwnlscpmqmhv5hg75humnfzeozpic2bmohttmph54akmwlhojbwi Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.1.png bafkreibyrioiaqyeltyiy3pb54ijzaj26ueavscmw3gr2stce2vgq5weji Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.2.png bafkreic5yv3ytahvx7zebnh2r7wh6qfmauvexdhaoqjxrb5kgpkv4hxg7i Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest1.png bafkreiaizh7kmys2v3vxffr5lex6jbbyj4nygb7w3mk6clahmyzjhelgs4 Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest2.png bafkreiagtbgz7lz4237i3j6nxcmvincoc4szh5mpagmeuxvgnhhnmblque Modules/Segmentation/SuperPixel/test/Data/Baseline/itkSLICImageFilterTest3.png +bafybeiaa5vlzxvyfejm6bfxjxmwmkrc5ov2onqixf3b2gij5q4u2kpsnua Modules/Segmentation/SuperPixel/test/Data/Input/VM1111Shrink-LAB.mha bafkreidjnngeexpoh5biglb7nk4zr5g4kpmlu2j55zoliaavmde5lc37wa Modules/Segmentation/SuperPixel/test/Data/Input/VM1111Shrink-RGB.png bafkreidcbxhzrmpj32sdua7oxkh57pkc4okksr2dhmttetpwwbzn46bgze Modules/Segmentation/Watersheds/test/Baseline/PythonWatershedSegmentation1Test.png bafkreicjrizawfoe33ajvirkd5rox3d6u4hfx2rrpyla6ss7aaumg5v3au Modules/Segmentation/Watersheds/test/Baseline/itkIsolatedWatershedImageFilterTest.png +bafkreihvky4sonioj5n3qc2qesrm6nszc4jt4o4zy6dlaxuhpmaa5tftya Modules/Segmentation/Watersheds/test/Baseline/itkIsolatedWatershedImageFilterTestCloseThresholds.png bafkreic2lv6e5wksf6vfwiffw7gzsp2ys6tcxd7p3nejr35cs77qjr7zm4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM0F0.png +bafkreihur23nm6bz33xz7xeccigswxggghvo4ew7eavjg3hq6bgtwlywim Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM0F1.png +bafkreiefsneegtiifosnv6an4r3sb2423mh42og67kzlyv2xyrnph2ahnu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM1F0.png bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedFromMarkersImageFilterTestM1F1.png +bafkreigjnkgp3xsxak6uy4fbozveqpuz2fkygkmns7htujvac3fpqnr2oe Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM0F0.png +bafkreigyxvkrsc2lfud4jjktgpqibltyc7xyzuujslqhqg6bmcc72iml6m Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM0F1.png bafkreicglzw4rex2h2fjy75tvmibb3ipld7afptgxsx2m4zaopxu7olqji Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F0.png bafkreib3srvr66khz6tuzc5xvcvoafg5odecglr6xvijosc5gohijqt5wa Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestButtonHoleM1F1.png +bafkreifpgnts3kc7dffda25gby25zx24yrbnh5viumcg62rwjarav2zyum Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel00.png +bafkreifqej54brjbbeexxianijcyf2lkklr42pzkllstlkfchlsuv45sdq Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel10.png bafkreid576jebdnvwt7f7goonz4etijq7fbcglh6biyrt3qnf7iqnpm4s4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel20.png +bafkreigccwyfxdbvsqck3zg75n7a77ri6nvnqy53zgiabc2qsa2mzvgbvu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel30.png +bafkreigccwyfxdbvsqck3zg75n7a77ri6nvnqy53zgiabc2qsa2mzvgbvu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel40.png +bafkreifrqtgsejz7bxptpgoaqddlgptvoumw4odl5crurpwkr5ustbkbpi Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestLevel50.png +bafkreihyxx7m457jpmjue6zpyaw4dpa3n5t3ikrqrvjygeviup32hjrvfm Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM0F0.png bafkreibmmy464u4sxui2fdixiztbqlbc5ztoh5mad4uvazk2ukg5aqc2cu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM0F1.png bafkreie6nwcz2pg6vsxqxfb7zpwmybwngsdenrgnjvvnulft5kvxevm3fu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM1F0.png bafkreiaemp2tfchx67u2fnm7ueagdhtyllsn3mq2qasdfzk34rrfz4himi Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPassValuesM1F1.png bafkreic3ycdimqokabffkn7tz3l3e7mxx6l2qkwnigxqoufwq2oeax66mu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM0F0.png +bafkreihlwcmxl2kaiqc5rrmhuyc5n2ms2mtrbejmu3bl754cj4fudbelhi Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM0F1.png bafkreicpseocu5swseywbojuzfckwlseltbdzqc65zaftkbgh65oytisea Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM1F0.png +bafkreieygg7773v5t4pks46eicwoewici6btjevekohnxoxxjaknsvrgpq Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestPlateauM1F1.png bafkreiahe2zjg7s5nmfzzwouvkhute4wn7poiownhvkw4qca6ofxythmfm Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM0F0.png +bafkreieooote4a5i4dzv7lgmeblaqr3kdjjblwcflleswhzox5puxtqkb4 Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM0F1.png +bafkreiej4whvsjm3tc6v4hu5vevkbjiusf7ekv7i7vmkltvuiqlinheeiy Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM1F0.png +bafkreihkzpnbkmwxzka37vmmc55jxpfl67fjz6gd273bfkevn5wq3leuwu Modules/Segmentation/Watersheds/test/Baseline/itkMorphologicalWatershedImageFilterTestThickLinesM1F1.png +bafkreihzo2nzdbregemfvlk24q73hvvdm2uaxdyqeeu346r4q4esxlq5bi Modules/Segmentation/Watersheds/test/Baseline/itkTobogganImageFilterTest.png bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Modules/Segmentation/Watersheds/test/Input/VisibleWomanEyeSlice.png +bafybeihzowx2lq7dx4d6g5epuh6ry32vvvcdvctnf5kiax6uco44v2ny5m Modules/Segmentation/Watersheds/test/Input/watershed-test.tif +bafkreigjnsbymfvc2opdqeihn4a2yfifs7xzsqwe3kh27bcw336m3mft5u Modules/Video/BridgeOpenCV/test/Input/IM11.png +bafkreiguhbn5446fwqughb2u65juolvjfr3mljuuzvcblmad5kp665iq2u Modules/Video/BridgeOpenCV/test/Input/frame0.jpg bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/BridgeOpenCV/test/Input/frame0.mha +bafkreifflyc3zlruxbfri5fnrqkdytct6adcqeyvtrwfmck24h4ctcb5fe Modules/Video/BridgeOpenCV/test/Input/frame0_gray.jpg bafkreidxj6yehrsmjg3pxefmmgeanhz5a2s6zq4fqjw24dccslohh6l25m Modules/Video/BridgeOpenCV/test/Input/frame0_gray.mha bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeOpenCV/test/Input/inde-circulation_short.avi bafkreibu4jnuqgubtjo5sysw7nberapze3ywjuxkdqysbtnui3ac72o6ae Modules/Video/BridgeOpenCV/test/Input/peppers_513x512.jpg +bafkreiffnbbammbehfjagx47ehiszpgdz352f3pefawtnmhsas2r2eycgm Modules/Video/BridgeOpenCV/test/Input/peppers_513x512_rgb.png +bafybeidzkrdmh34spl7ngfka2m7rdfxfgwbn6iyxqgze7emkenfat4wvmi Modules/Video/BridgeVXL/test/Input/inde-circulation.avi bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/BridgeVXL/test/Input/inde-circulation_short.avi bafkreib4utjmhhmwvmtmz64vmy5pbmmn3phbj22yje32knkrq5x7435bju Modules/Video/Core/test/Baseline/HeadMRVolume_Frame0.mha bafkreibpxxg22wjeybjhwqo3jq2fbtgq37okajug6mgcisbrmmr2flzwdi Modules/Video/Core/test/Baseline/RGBTestImage_Slice0.png +bafkreiguhbn5446fwqughb2u65juolvjfr3mljuuzvcblmad5kp665iq2u Modules/Video/Filtering/test/Input/frame0.jpg bafkreicwxyke666r2kdfbhzxleo6lqndujusrpgsb6ocdkqlfjsqm2vsha Modules/Video/Filtering/test/Input/frame1.jpg bafkreidqcvqljc3r2t5peixdsz4t374aea3f2sm7bfcpyjn5qgwj3dhuna Modules/Video/Filtering/test/Input/frame2.jpg +bafkreiggdpjb73wrg3frhs35v5bzya5nsfec6pr4ldsl42ullmdow7zeji Modules/Video/Filtering/test/Input/frame3.jpg bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/Filtering/test/Input/frame4.jpg +bafkreiguhbn5446fwqughb2u65juolvjfr3mljuuzvcblmad5kp665iq2u Modules/Video/IO/test/Input/frame0.jpg bafkreibluhpdir77t7zrna2nukt2lfle3nsb6ivtw3osgbsgyxcan3qi4u Modules/Video/IO/test/Input/frame0.mha +bafkreifflyc3zlruxbfri5fnrqkdytct6adcqeyvtrwfmck24h4ctcb5fe Modules/Video/IO/test/Input/frame0_gray.jpg bafkreidxj6yehrsmjg3pxefmmgeanhz5a2s6zq4fqjw24dccslohh6l25m Modules/Video/IO/test/Input/frame0_gray.mha bafkreicwxyke666r2kdfbhzxleo6lqndujusrpgsb6ocdkqlfjsqm2vsha Modules/Video/IO/test/Input/frame1.jpg bafkreidqcvqljc3r2t5peixdsz4t374aea3f2sm7bfcpyjn5qgwj3dhuna Modules/Video/IO/test/Input/frame2.jpg +bafkreiggdpjb73wrg3frhs35v5bzya5nsfec6pr4ldsl42ullmdow7zeji Modules/Video/IO/test/Input/frame3.jpg bafkreiclqxhxf36j63r4bquahk44dvrozlhxz4yr36rnxd6pjizk5pmsrm Modules/Video/IO/test/Input/frame4.jpg +bafybeidzkrdmh34spl7ngfka2m7rdfxfgwbn6iyxqgze7emkenfat4wvmi Modules/Video/IO/test/Input/inde-circulation.avi bafkreia47vzq7wlqntd6matpplcv5dahfab7l2hzlmo27sxi46p7lfwowq Modules/Video/IO/test/Input/inde-circulation_short.avi bafkreiasjnds4cteut4obmcg3lmdwnxiznxduku3xiycikifwo32n65wqy Testing/Data/Baseline/Algorithms/BinaryThinningImageFilterTest.png +bafkreieswhzspka5yl5acnftrhu5zin4lgkmghznduh55vlgw7uddanstu Testing/Data/Baseline/Algorithms/OtsuMultipleThresholdsImageFilterTest.png +bafkreifpv4uw5tfixarbagg6xf5ytmhv3a3pgp7qexpi24wzvkzdxmuimq Testing/Data/Baseline/Algorithms/OtsuThresholdImageFilterTest.png bafkreidz26diuhhpgs5i4gmddfm5bbw4xlm5bvj4hw2xo6wbsklfsvuz2e Testing/Data/Baseline/Algorithms/STAPLEImageFilterTest.mha bafkreicqovvvqiq43b3kkrhoyz6v4sbrispqhivbcnlo3hnupz4gs5lshi Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.1.png bafkreib7ii6emilldxu5xjhf33dxt72zfoscicnybkeezuae6ncpehysve Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.2.png +bafkreihsandgjzt7onam66fkgy3ghtaj2lmq3lfhceqcbhwczn47vlrdrm Testing/Data/Baseline/Algorithms/VectorThresholdSegmentationLevelSetImageFilterTest.png bafkreicy4natfdarvdqim7vczonuny4mqh5g6wygqsnzomvtaelbkrrfou Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.1.png bafkreialoeavh6bwgemrpuaf4zq53hz5drlkv4lfvcmbqg6v33odhsmxue Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.2.png +bafkreihl5zfohmpdvxg2ed3xm5sm6mwutuoavtlbozchtogavnpldop644 Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.3.png bafkreibca27ybu5z2c3v3e5zvc4enfud7p3ufqizr5z5ulhgrafuk3hzyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.4.png bafkreickfry6kf3zd2t5cozaeid6thhovvt2lwx7bhhapptejty3mrybyi Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.5.png bafkreiamzbuibkxicf625j7h3jppwagjw7ntu23hrftia3kutyg7ghfxoe Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.6.png bafkreidq4nxkdwaotyssiy3whae32xgqw7xdswu64likhoreigksff6nma Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest1.png +bafkreigx7pnnnec26im3c3zg74j3w7vutaefqfmyqcdpjnozbvj5jmqkse Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest2.1.png bafkreickxsok552drtbssiitjnz3rs4m62brhbiccryledqi5sgyzrxb7e Testing/Data/Baseline/Algorithms/VoronoiPartioningImageFilterTest2.png +bafkreifje6vgym2rrd66srzggpqtale5gwa7f6rqelefcpgz5em65jl6ym Testing/Data/Baseline/Algorithms/itkMultiResolutionPDEDeformableRegistrationTestPixelCentered.png bafkreict3blly7wojg4razcbj4qudhkmpzrmikg3xlr7tcmbaoam2cyb6m Testing/Data/Baseline/Algorithms/itkNarrowBandCurvesLevelSetImageFilterTest.png bafkreiaanceijqbdjutqztgaxjmvqf7naohnu75tq2nckevtybuyikm7bu Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest1.png bafkreiagcm2vrnxatl24qlijnirmsowkq2u2yftc6r4r42orulju3iizqm Testing/Data/Baseline/Algorithms/itkThresholdMaximumConnectedComponentsImageFilterTest2.png +bafkreihx2rlnpf56povo5eb6hzp6ojvkjlmo6uenvsuc6i3gfqjfdbxxcm Testing/Data/Baseline/BasicFilters/AccumulateImageFilterTest.png +bafkreif2cpsrdnxjv32arhruo6z4sj45utjls622zykw2ksyajjovhvmy4 Testing/Data/Baseline/BasicFilters/AdaptiveHistogramEqualizationImageFilterTest.png +bafkreigc5jtdnkcgnnx7tejaghbf5w2g5mz7hba75hcmgqniqsmezrvbu4 Testing/Data/Baseline/BasicFilters/AdaptiveHistogramEqualizationImageFilterTest2.png bafkreibjz6wbh5d53weoweusyewrxabmxaijtrfnsh72rye5pyptyp2hpy Testing/Data/Baseline/BasicFilters/BilateralImageFilterTest2.png +bafkreigpvflhxey3cwco7k25hkxycwzhzwupobuxrc27lpbxbejy4jzgmq Testing/Data/Baseline/BasicFilters/BilateralImageFilterTest3.png +bafkreifhgcwbhjmaalx46c3stfwzmzlfsk54gwssbnzl7dq2bygglsoo44 Testing/Data/Baseline/BasicFilters/BinaryThresholdImageFilterTest2.png +bafkreig2vsjnzpzejfum5kedtnf7xblyrkhbyutrpljrcmlzwia4smhmtq Testing/Data/Baseline/BasicFilters/ClosingByReconstructionImageFilterTest.png +bafkreihddyckiv6mdto22sgype7duyygtaxrkepy3szr7awus6c4jot7hi Testing/Data/Baseline/BasicFilters/ClosingByReconstructionImageFilterTest2.png bafkreie7jr74p6utof3tekr63rb2vl2dvx5jwkwuzvebsobsjxnhknt2by Testing/Data/Baseline/BasicFilters/ConfidenceConnectedImageFilterTest.png bafkreicqlhg6xztvfqmgynbf3xb6qhbghwfzvkugt6nwxn2kloiwnfalp4 Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.1.png -bafkreidv7hznlkcvddhdi7udpvsvqd7q677dhiamqenhskxyq53vogf62q Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.png +bafkreibyjpytxv46k6mkxo3sadppjvs6b5vjqwqcz6u4vkzpp2btmge4fm Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest.png bafkreidngvamh6ejxx5j6lzf57p3kqtjjvgm4dtil7ofekz4blhmns3pf4 Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest2.1.png +bafkreif6vtfmpapapqk5q5xlitj7g72pdihcrrncdf5cwgtnexu36cj6rm Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest2.png +bafkreiejqekgsjh7frp43eya5fssenr56bfxazjo2ocp7qyevse5xfjjrq Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest3.1.png +bafkreibxbxqmcg73nig3ncv7gt2rqdcj7nfw72r3be4r6l5llmqw4wpwru Testing/Data/Baseline/BasicFilters/ConnectedComponentImageFilterTest3.png bafkreiav5grdw7gqzsi26zgb4vuyicm476hrxit4i2fi67vq6gfioehgkq Testing/Data/Baseline/BasicFilters/ConnectedThresholdImageFilterTest.png +bafkreifva4o4mnimwakguaiys77gf6byrqzh3arx2ybgfr7wmhkzruii7e Testing/Data/Baseline/BasicFilters/ConnectedThresholdImageFilterTest2.png bafkreidmaabiea6sccf3chnvdrdnz5fwflxnffzil3yu7xibsqtjrfkhde Testing/Data/Baseline/BasicFilters/DiscreteGaussianImageFilterTest2_OutputA.mha +bafkreigzvvvrnjofrbuk32dhd4ixpgzh35rwbijsdlf2fxerxj2ghwvlpe Testing/Data/Baseline/BasicFilters/DoubleThresholdImageFilterTest.png +bafkreifvj2um4zsaw7svyifu34fsfvcp3dnamgjv3umd5ksn647oxt5zji Testing/Data/Baseline/BasicFilters/DoubleThresholdImageFilterTest2.png bafkreie6rdqbbamvnjyk4otbozyciicxupwmigs6jqllx222kxkt76pfim Testing/Data/Baseline/BasicFilters/GradientAnisotropicDiffusionImageFilterTest2.png bafkreidrk6nz4jodgpnumnvm2xovovut6sgfeeynbhzomrms4vvfusu3ga Testing/Data/Baseline/BasicFilters/GrayscaleConnectedClosingImageFilterTest.png +bafkreihwieuwcn3nlapzbnagcm26iptkyohj4tpd3k7lt466qwrxb3znjm Testing/Data/Baseline/BasicFilters/GrayscaleConnectedClosingImageFilterTest2.png bafkreias2tq2qrj2evw4aohcf5boogi6m27mxigqahnz6f7p5fsxznqxde Testing/Data/Baseline/BasicFilters/GrayscaleConnectedOpeningImageFilterTest.png bafkreidbd43nki76hventqynwkhyspovsikv3p27pqcae4g2dopoc2iqlu Testing/Data/Baseline/BasicFilters/GrayscaleConnectedOpeningImageFilterTest2.png +bafkreiejpicehifny6jdqztuygmjkxxceadofgqstkpm4aybhlnqd2rwsa Testing/Data/Baseline/BasicFilters/GrayscaleFillholeImageFilterTest.png bafkreicwrf2w4h5jhzp6d63d5nl34jkqrnokwh63efzyt623zzrflhdd2q Testing/Data/Baseline/BasicFilters/GrayscaleMorphologicalClosingImageFilterTest.png +bafkreifflkna2myvfljlcdadidtxtegn3xi74gt5iirplpzfmhuhhwygo4 Testing/Data/Baseline/BasicFilters/GrayscaleMorphologicalOpeningImageFilterTest.png +bafkreifllsc3uk2zsqzpamt5hr4msvaljhmqaxqllv6yblxqtndoqw6pua Testing/Data/Baseline/BasicFilters/HConvexConcaveImageFilterTest.png +bafkreigeyc57it7hdccit7swv5uia422hz6gg7u4de7wgmifosihh6q57e Testing/Data/Baseline/BasicFilters/HMaximaMinimaImageFilterTest.png +bafkreigp4t3tjybnwwo6kuwse6dib4do3ao2dy4rngi3nsz4aipxlcslvm Testing/Data/Baseline/BasicFilters/HMaximaMinimaImageFilterTest2.png bafkreiblud6dlgkrm7cqaqidfximgecask6ccvlidfclp2omlnd43r4viq Testing/Data/Baseline/BasicFilters/HeadMRVolumeBinaryProjection100.tif +bafkreifwd7e7sgmc7zhnp6jmkm7ecpb72trfhhjvcuap7wnxwugsvbjbfu Testing/Data/Baseline/BasicFilters/HeadMRVolumeBinaryProjection200.tif +bafkreihhjctflqjc4wibcnbxhqjyci4nvvpbilq7lgmymnn2gvzfq75sl4 Testing/Data/Baseline/BasicFilters/HeadMRVolumeBinaryThresholdProjection.png +bafkreifnhmgcyryccwhogv4arqi3rno5he2wdnppcw5sjb4emguvsdho2e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection.tif +bafkreifvvnocqyirih2cqi5r6yf5g6jjmyrqy6uhdnggrixfzhihxmj5xy Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection0.mha bafkreiddbbslasi4ajmnhl7vyatylmfst5sejt7yp6z2nimvozr75f2w4e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection1.mha bafkreicxghmvo5ep462qjx33cpmjisqcifmj23eectlaimnrh2jugctbwi Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection2D0.mha bafkreiddrud5elsp4ynxcuuk7hgjhqpoupipom2t4owp7mfofibbmz7vxy Testing/Data/Baseline/BasicFilters/HeadMRVolumeMaximumProjection2D1.tif bafkreidegqbs44x7g3jfgphjgy54rkh45xadipc3xqc53g4dfh4fducyim Testing/Data/Baseline/BasicFilters/HeadMRVolumeMeanProjection.tif +bafkreigzfskffhefedwv44c2sen7guuwuff5zrmiqnhfpbmpwcd23ud6vu Testing/Data/Baseline/BasicFilters/HeadMRVolumeMedianProjection.tif bafkreibenixkqpjpjwypcrqurj2ijpiaxq5wmqytmzanly2s6u6qzvdv4e Testing/Data/Baseline/BasicFilters/HeadMRVolumeMinimumProjection.tif bafkreibem3y4u5ghauie2vdv7ukgeldpa4nh3jy3h56ge7jr6j63mjxzsq Testing/Data/Baseline/BasicFilters/HeadMRVolumeStandardDeviationProjection.tif bafkreiafa6byahozgex6f775n3jwy7o6uunaczsymimkqcnptuo4rzwfey Testing/Data/Baseline/BasicFilters/HeadMRVolumeSumProjection.tif bafkreid7j3ycqotplzrqwo2fw2u2r7cd4qaziazjqsioftrxp7b4hannc4 Testing/Data/Baseline/BasicFilters/ImageToVectorImageFilterTest.png +bafkreihwfftycybumqnsiez5q5xnr4gx5vjkmyq2r3hp3yxcauvgam7g4e Testing/Data/Baseline/BasicFilters/InvertIntensityImageFilterTest.png +bafkreihuaw3gio2hpjtz24togldw2h5r64kqxyp5uyw5jga4k4tkzhokfy Testing/Data/Baseline/BasicFilters/IsolatedConnectedImageFilterTest.png bafkreibvprb22lqcixyj25yagmiys5k7ebjv4hbwv4fk6wj2jjxiqdqd6q Testing/Data/Baseline/BasicFilters/IsolatedConnectedImageFilterTest2.png +bafkreihelcteatv33gpzfxl34teuaw6hajmvbfkrl26w775byhbzngr4wq Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.1.png bafkreicztmzt6gfzpiciayza237l5ztuzh4ozgzfh7x5phgzkm7eeabvpa Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.2.png bafkreicqtexpewprsxilynurejzm5hwuwtbqv2awypf4a777ovavehhrqi Testing/Data/Baseline/BasicFilters/LaplacianRecursiveGaussianImageFilterTest.png +bafkreifi5moqxmnuvskz472onxrd4a32zb747yjbfiej5p7rt5p7p7ucxe Testing/Data/Baseline/BasicFilters/MaskConnectedComponentImageFilterTest.png +bafkreigwf5ryf6bwzaebw6cphhx7r2eo4tv4wnb2ujo7dqmebopbuxqynm Testing/Data/Baseline/BasicFilters/MaskNeighborhoodOperatorImageFilterTest.png bafkreiaff5ercu3mmke7cfgeawkgxf65xh5ptvo5tlsxvrjxhymghobbdy Testing/Data/Baseline/BasicFilters/MatrixIndexSelectionImageFilterTest.png bafkreicqoe55dwpxhw3hoghrmvh3tf5jf6vcfifblbstn2um6zgcfblaqq Testing/Data/Baseline/BasicFilters/ModulusImageFilterTest.png bafkreidwxsmr7dix3jxmeapz7mdjccp733avuw7ngiycfu7ikfpcvpjyse Testing/Data/Baseline/BasicFilters/MorphologicalGradientImageFilterTest.png +bafkreiexrg6nqunihr6aiq2tf76zgunt3h6tgvfqzrysqt3sycdw54tw7y Testing/Data/Baseline/BasicFilters/NeighborhoodConnectedImageFilterTest.png +bafkreift3akhmgfx6zttkhqqsv64fnpipx73w63gpeenqmmtdv5qwyt37a Testing/Data/Baseline/BasicFilters/NormalizedCorrelationImageFilterTest.png +bafkreifq3wghc33qxdrh6lsft6r73lh3hdyvk3qgqxxyqwztzr6extrq4q Testing/Data/Baseline/BasicFilters/OpeningByReconstructionImageFilterTest.png +bafkreihdantfyorzvofn4rpjnjktk6gu2i6q3rw7ujzt7okergfwwzlsvq Testing/Data/Baseline/BasicFilters/OpeningByReconstructionImageFilterTest2.png +bafybeicfgx4whbbjypi6xdxzrmzdzkhhykfjmr566qixcwgattnr7anksa Testing/Data/Baseline/BasicFilters/ParallelSparseFieldLevelSetImageFilterTest.mha bafkreibkfrzq2huzrzah75sv6tnhd26blgd5xuwo44h3pfhnws4ij7s4nu Testing/Data/Baseline/BasicFilters/PasteImageFilterTest.png bafkreiavzx2y27jhdw3g27aufwakrunaqat65atoqq2zo6uhyi56zaxvjy Testing/Data/Baseline/BasicFilters/PromoteDimensionImageTest.mhd +bafkreifbbowveyl33a6zyyyi5v76yhnd2l3soogyundsxezdogzetasldi Testing/Data/Baseline/BasicFilters/PromoteDimensionImageTest.raw bafkreidfola3euhdz2y2fbp7pnu2kbowyfdi3j6bfm5zeihcpjsaxubqre Testing/Data/Baseline/BasicFilters/PushPopTileImageFilterTest.png bafkreiaxkvkxjjyssdgw7wko5inbtw55ademkwn7ezupgieqheayxgj3yi Testing/Data/Baseline/BasicFilters/RelabelComponentImageFilterTest.png bafkreidhljx7n2pbkn6hg7li4dqxabsyjpaavmhb2f33t4iwmj5woyfc7q Testing/Data/Baseline/BasicFilters/RemoveBoundaryObjectsTest.png +bafkreig7yx3rl2lpgskow52swtecal6zi344bgqoon3lnwmghtqozzakzq Testing/Data/Baseline/BasicFilters/RemoveBoundaryObjectsTest2.png +bafkreigfyobdircfccxsqdmag4cipopdy4ecqh5imfafjbo33wvc2sovcy Testing/Data/Baseline/BasicFilters/ResampleImageTest2UseRefImageOff.png +bafkreihg2dyywhe3oyp7xqbfnab4hjkyol2lahgho45d2foti2nlkpbcka Testing/Data/Baseline/BasicFilters/ResampleImageTest2UseRefImageOn.png bafkreid4t4i2pohiait66uaj6m2sorw5wlqsjpo5auymxjfr2ajw3625tq Testing/Data/Baseline/BasicFilters/ScalarConnectedComponentImageFilterTest.png +bafkreig3zfv7p4jl5hmuosnbbbk552tobdiwut7iz6nnxmy2grhjirsd4a Testing/Data/Baseline/BasicFilters/SimpleContourExtractorImageFilterTest.png +bafkreiezh4h7ptsoi2ltp33z7wnvmht7uesvq4xxqjojgazavxliu7rk2y Testing/Data/Baseline/BasicFilters/TileImageFilterTest4.png bafkreiczethurvl5wqaecsvhkv7unran6t77yxakq6bvt5m5ocefojrc2a Testing/Data/Baseline/BasicFilters/VectorConfidenceConnectedImageFilterTest.png +bafkreigai4zpwpmofjgejnebu7xuoh5cxlh7jcvmf3qybbyqlazkeelwvi Testing/Data/Baseline/BasicFilters/VectorConnectedComponentImageFilterTest.png bafkreib53z5v7zm2z6ur6mujzdvis36ahlg6pmkux3vgxj6i4zpxnpkvc4 Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest1a.png +bafkreihhc7bwrdkf2l2pgtkuoprbudaqhpgribrcf52bkpysptffwnhrqu Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest1b.png bafkreibm7iet43zebqvt3xr6f7fyp4wak35fkkck2un3qo6ht6cidmsy2q Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2.png bafkreiafyamdkwvuzkhnyigakqycb3kbt3zzcdjf4pwrdz6ftbzhgusshm Testing/Data/Baseline/BasicFilters/VectorGradientMagnitudeImageFilterTest2b.png +bafkreigl3cnv5escwllar4yn737pwiydz4u3rub5e2magowntys67ebmda Testing/Data/Baseline/BasicFilters/VectorResampleImageFilterTest.png +bafkreigftyg7xyun6ga63wrpbwgqj4xcgkylznj23hxfjgoh7ckcswjui4 Testing/Data/Baseline/BasicFilters/itkApproximateSignedDistanceMapImageFilterTest.png bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-0-0.png +bafkreihm7ik6fanh2iys632n2zyg3dlfmavx4iopdnxqpehfdeyytuvcou Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-0-1.png bafkreibpezfuu4woszbo4omq5jbvlvkf2pqix6foeee7nsp4lyyen2c52y Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-150-0.png +bafkreihm7ik6fanh2iys632n2zyg3dlfmavx4iopdnxqpehfdeyytuvcou Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-100-150-1.png bafkreicxbt7gq5tpfe3kqglfad2j46f7m4jdaw2nbu5o6c272agpegkjz4 Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-0-0.png +bafkreigitpn2iluxt6eww3nk464s56s5eofn6wxwp3cqsrbtad7aodubqa Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-0-1.png bafkreicxbt7gq5tpfe3kqglfad2j46f7m4jdaw2nbu5o6c272agpegkjz4 Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-150-0.png +bafkreigitpn2iluxt6eww3nk464s56s5eofn6wxwp3cqsrbtad7aodubqa Testing/Data/Baseline/BasicFilters/itkBinaryDilateImageFilterTest-200-150-1.png +bafkreigbexbgei54rfkx7utcktssdgzgc62ggxzmkqk4naudgmuhdqvleq Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-0-0.png bafkreicdlj7y2qtbj27ss45frlrjutpvm3kuk4vkpu4iaxprsobrlipopq Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-0-1.png +bafkreig6prqn22tid2t3nyqsdijmixelowagtoyrsxvsholrkfxdn2tkce Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-150-0.png +bafkreiegaidemdnq2vtjvsgqz7c5mdy2uzyw2gy77s2xhzhbj3dq5skweq Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-100-150-1.png +bafkreieepnxkrkcsz4klqfjpl5mbfdcpzlfstnaqdtm6eiybab5hd6dhiu Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-0-0.png +bafkreih4qcdzhw3r3vubiigofdxljzyscfeixir2owa6rylgio244koqk4 Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-0-1.png bafkreia6ldmkxbaguz6c2nevxrkrmxsrejlkr6n3qbe4js7igpfv7kpkzm Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-150-0.png +bafkreigfzem6boxhtyfdg3omjhjukknbx4ep6wymvd22oktk4bjgwnfiv4 Testing/Data/Baseline/BasicFilters/itkBinaryErodeImageFilterTest-200-150-1.png bafkreidgcnmocoe7ffvwkxpibbl7lsegjb3uoiegdjljacrs3nspniduuq Testing/Data/Baseline/BasicFilters/itkBlackTopHatImageFilterTest.png +bafkreifbtqnhczmitgd7khc2zuxc2mxuxs77wmqxqoqhbcj6b32q5x45oa Testing/Data/Baseline/BasicFilters/itkCannyEdgeDetectionImageFilterTest.png bafkreib2hqjf3whgtnzymcs47u2iryydoxn2qw7e3a6oq7ub7kw4ncj72q Testing/Data/Baseline/BasicFilters/itkDanielssonDistanceMapImageFilterTest1.mhd +bafkreifng3f5lpatr7pmuwzyblnfzqjvztklplaozsxr2a4xmrw2i2meba Testing/Data/Baseline/BasicFilters/itkDanielssonDistanceMapImageFilterTest1.zraw +bafkreihzkrvdmmobjk3ruseykbpvy42b6j6v7w2lfqjir3a4ouh323kuuu Testing/Data/Baseline/BasicFilters/itkDanielssonDistanceMapImageFilterTest2.png +bafkreihdl5z4wvsrm7odg6tz2eoni67vziqgflbzrqanjfgc7zeo33b7pq Testing/Data/Baseline/BasicFilters/itkDerivativeImageFilterTest1x.png +bafkreihmd4do6zxm54fuy7ed6h7zluyught5robmhzfpzweqa5zrbag3h4 Testing/Data/Baseline/BasicFilters/itkDerivativeImageFilterTest1y.png +bafkreifvdpogboszqxaipgmz62qwpebcfnff2es6npj44racpvme4phzpe Testing/Data/Baseline/BasicFilters/itkDerivativeImageFilterTest2x.png +bafkreiekvlvuqthbhonrvy2swm746ir7ozfuqtbffxk5qyyhcvuucazvfa Testing/Data/Baseline/BasicFilters/itkDerivativeImageFilterTest2y.png bafkreibuuwpx7tw353uzx26vdhjikcj3cdndjqdsyewx5ingcfd2uv7io4 Testing/Data/Baseline/BasicFilters/itkGrayscaleFunctionDilateImageFilterTest.mha +bafkreihgvhfrahsvxbg53g3aubk35bkmktgvsqxtiqv4rmod6ygd3osiaa Testing/Data/Baseline/BasicFilters/itkGrayscaleFunctionErodeImageFilterTest.mha bafkreibkjtebepqruamhlpojsvuc4l2f3kd4yeyswn5smlpl5tgo562nji Testing/Data/Baseline/BasicFilters/itkNoiseImageFilterTest.png bafkreicyzqyt2dujrlofauardpm6vtsuyoiz7pygeyxtg7ofbqmegrbqaa Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest1.mhd +bafkreig4r55myprlpdno5mcdmyjrtl6mgvywnvuezdtdlfafxcat4epfpu Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest1.zraw bafkreic6dupaomevdxo7swumevvhklb43jqhq37z3633s73ds4goqebj4m Testing/Data/Baseline/BasicFilters/itkSignedDanielssonDistanceMapImageFilterTest2.mha +bafkreig7zcrhjfof2rlac3iaqyahgyp5goxlrbptvixuiuv4vz3cstp5lq Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest1.mhd bafkreiaobtqjj6rer6s4lwpw47kmtebayvxwpncmum4vshypoa2jvgyguy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest1.zraw bafkreibon4cl7sveflmwtu5kp6dz7hbpmylng7ycbazdrwpocz2mvd5ndy Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest2.mhd bafkreie5hflm2w3tntryhqbfo6eljkfamtafd5h7uukcbhqqvakiwtfxly Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest2.zraw bafkreibr3wd3ecyrwuh46kdns642p5tlvx4sbimqcsorr6wfdxhla7uvgu Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3.mhd +bafkreienxkhn4rujwuu4xeimrciuwp6s2dcphvikmbmk4hx7hhgeouns3a Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3.zraw bafkreidpcntmmaw4sstzua3slkkr373c4ojo4xu6j2dnmzkcmpkkfk2qfm Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3D.mhd bafkreicitrffy367aorb7clkd7ablqcckg2zjd2cxs3mq677savsmz72pq Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest3D.zraw +bafkreiggyhurpafgounq37k2fqetnwlk3h3llyzbtnnihdtwzhagxegcee Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest4D.mhd bafkreidjtoevp4au53zy3jfy7rhtqt3urlangigsgrrbtizama3t6quqke Testing/Data/Baseline/BasicFilters/itkSignedMaurerDistanceMapImageFilterTest4D.zraw bafkreidhmvvimv6l43oskxfodqbtgywmllebscvytmehnzxl5mn4fjmayy Testing/Data/Baseline/BasicFilters/itkVectorIndexSelectionCastImageFilterTest1.mha +bafkreigj5y65vinyhhq4sg5ezptgpth5h4qvdliwj5ycl33u7gphejiasm Testing/Data/Baseline/BasicFilters/itkVectorIndexSelectionCastImageFilterTest2.mha +bafkreiej3xggf7rbdnbxicaojglv6kcgsf7hdzpclerp3lcuwc4tjj3aaq Testing/Data/Baseline/BasicFilters/itkVectorIndexSelectionCastImageFilterTest3.mha bafkreicnhr2blw755lma44lc65s5miz534w55xucwvf2bqkoje75jucy6i Testing/Data/Baseline/BasicFilters/itkWhiteTopHatImageFilterTest.png +bafkreig5wcoro3ratjynjvuyigfld55wjoze72my64bxpl7pbayng64c7a Testing/Data/Baseline/Common/itkLineIteratorTest.txt bafkreibq4wddsslbqv4hrcwqopmsf2oaz4zoxxxfzbrfz3id3glcxwghsu Testing/Data/Baseline/Filtering/AntiAliasBinaryImageFilter.png bafkreiamztjyzhe3wr6l5eysfyxbvaxoie435vvwx5u4n5arbjwtp2awbu Testing/Data/Baseline/Filtering/BilateralImageFilter.1.png +bafkreifaioe4mpvmdc6hm463rh44rwz6qdhrllt5gnxqjauf33xgldacxy Testing/Data/Baseline/Filtering/BilateralImageFilter.2.png bafkreicj3iy5sla7zzrpemhpcw6vyhwblqvitaxen672z7f6f5zswk2bqe Testing/Data/Baseline/Filtering/BilateralImageFilter.png +bafkreihbws64vmefqhn6b6z27liavdqrilulhglaamv653djiy7vcl225i Testing/Data/Baseline/Filtering/BinaryMedianImageFilter1.png bafkreicisnbyke2ysffxcguzkh4ally5v4oxgpen4sky4ehgvafsxuc64q Testing/Data/Baseline/Filtering/BinaryMedianImageFilter2.png +bafkreifwmmdergvaduwa6mw3c3gafaaemcd7oj366is6hqlcz2dubjx5ty Testing/Data/Baseline/Filtering/BinaryMedianImageFilter3.png +bafkreihinvcnhkxzxo6aff6xelp3jo2xbqsf5i4citxi5d7c2ds3ullflu Testing/Data/Baseline/Filtering/BinaryMinMaxCurvatureFlowImageFilter.png +bafkreifvzsakwrx3t5co7wmhqcgu2rg2fyhwpppcmj47b6sijz74taq3ky Testing/Data/Baseline/Filtering/BinaryThresholdImageFilter.png bafkreic3o42hy47r6y5eypp7k5zqub5mbv2gx6yvuetv3b46c3kjvw55ne Testing/Data/Baseline/Filtering/BinomialBlurImageFilter.png +bafkreihl6erwmuijcfh3jghszcsajq72wib4erspsprpxtus27ygzdoxwa Testing/Data/Baseline/Filtering/CannyEdgeDetectionImageFilter.png bafkreibcap43sf4kmzuh5bqju6qmt2mpravxbkku6uymnivvncrsgghkje Testing/Data/Baseline/Filtering/CannyEdgeDetectionImageFilter2.png +bafkreifxkfrrnrf22gbilsvd54sn5m2xnpnclhbcbf4nfc7do3vel5jlhq Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.1.png bafkreia52ajz3mxwv5rusp33a6mcl7mphp772zkzqthc2xwlb7rmn6fsyy Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.2.png bafkreibwib7uhj6g5zwyhklj6n6zquv3ftlnnstin5yvl2mpzfk46wolum Testing/Data/Baseline/Filtering/CurvatureAnisotropicDiffusionImageFilter.png bafkreibsakv6hodojyabmrnnryrvjxgxgforrguu6anz5ztbtqrt3mikwu Testing/Data/Baseline/Filtering/CurvatureFlowImageFilter.png +bafkreigxjoenmgz5juvtzk7zntt2bsbij5a5dom5sn4bzqijfkcodv2x7a Testing/Data/Baseline/Filtering/DanielssonDistanceMapImageFilter.png bafkreic3tkig2dfgj7ypfh5qonpjhao7er52xd6sktnibuiiwds7wtfgbi Testing/Data/Baseline/Filtering/DerivativeImageFilter.mha bafkreiaiokejgqfcfnrl5twyuzmbwovhttfkzk3qydtrn4xg6yyuid6b3m Testing/Data/Baseline/Filtering/DigitallyReconstructedRadiograph1.png bafkreicc7sqbhomqn4fo33ev5gkl47su6xtjf4tmob45qprajlj6vs5xra Testing/Data/Baseline/Filtering/DiscreteGaussianImageFilter.png +bafkreieneweae5nlssc6pz3axdiynrzqeym2da7syce3eoyd4c4w4urtt4 Testing/Data/Baseline/Filtering/FACorpusCallosum.mhd +bafkreien3chobyujj6lmlmigh42ztmtldfv7hnwl2pyaraou3wkxnbhcqi Testing/Data/Baseline/Filtering/FACorpusCallosum.raw +bafkreihb6glrxtdhirhppoduypteu7qq7fxsw3uke56pfeplmb6uhsytse Testing/Data/Baseline/Filtering/FFTImageFilterReal.png bafkreiaw336qzpykfhmdnh2zyxgqalyyzbwuk5vysh5p27xztxtdm3rdim Testing/Data/Baseline/Filtering/FlipImageFilterX.png +bafkreigop5ru2dhv4cw7jgjc2fc7r6c3jwux6letv25imh56zochoqrdoq Testing/Data/Baseline/Filtering/FlipImageFilterXY.png +bafkreigxdk2a5rggrh6ykbvgr473iv2gxpsftrl7uj5xlvmrtesnaydm6a Testing/Data/Baseline/Filtering/FlipImageFilterY.png +bafkreigyhxlyal3ke6nzph3qzjqapbiwvmgkas2iswvig3wy4kjsydrr4m Testing/Data/Baseline/Filtering/GaborImageSourceTest0.mha +bafybeiddndso2lzdkq6zapc62ekecq2cetjnphtustyfobafcyeo6dqczm Testing/Data/Baseline/Filtering/GaborImageSourceTest1.mha bafkreibk32xtp3iigyw7bwlev326iungd356ev7o4plokj4yctpqol65fe Testing/Data/Baseline/Filtering/GaussianBlurImageFunction.mha bafkreibccthlofuc6w7ikzqsl4frmrrrseirs23zg6gnwwzwuq5xmzv2te Testing/Data/Baseline/Filtering/GradientAnisotropicDiffusionImageFilter.png bafkreiam5fq47yjwne7u6i6ms2orwencj633ukgxx7n7c2pmy6ndloc554 Testing/Data/Baseline/Filtering/GradientMagnitudeImageFilter.png +bafkreifa3wexy5mlwi2ppqntc2j4zbk4howed3t4rpxosfo3jjeeu4vzwa Testing/Data/Baseline/Filtering/GradientMagnitudeImageFilterTest2.mha +bafkreiej4ty3k7e3afhlxi4ad7x74ipxws7om6ulsrtmnvxjurkyhvabiu Testing/Data/Baseline/Filtering/GradientMagnitudeRecursiveGaussianImageFilter.png +bafkreiehuqmc7b6ptggxhmm6s55si2imms4jlaek45pye3m4c2ixuedxva Testing/Data/Baseline/Filtering/LaplacianImageFilter.1.png bafkreibfmi462oio3b4yezwkfuwq7shzufuilblquyk6jc7jone45ajove Testing/Data/Baseline/Filtering/LaplacianImageFilter.2.png +bafkreihva7tmuwcsodelal6mxrzrpoghafokpfztwkmrojjzkhbz27vsoa Testing/Data/Baseline/Filtering/LaplacianImageFilter.png bafkreicbpea5dutn6sqbufhzlokk2nmg53hajjvajpegm6s5w52glcq46a Testing/Data/Baseline/Filtering/LaplacianRecursiveGaussianImageFilter1.mha bafkreidct6huhfzrfmh2zm7eg5bnmdln5ifctpzxdrieymcapjtrbxqsxa Testing/Data/Baseline/Filtering/LaplacianRecursiveGaussianImageFilter2.mha +bafkreigmhacvtzm2vcxftsoyv3hdvvhynl5rgblv2o3hwftdmdqvhj55he Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.1.png bafkreicmssaml52ch56cx5w5bl67q7m5yvmwq2m3wrn5cxbl67jdjqvjlq Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.2.png bafkreiaixia732edo5ndmkfrudl6lmnctlvwilzj5igm6pphbdjzxpxjae Testing/Data/Baseline/Filtering/LaplacianSharpeningImageFilter.png +bafkreihhvlu2ptgjqxlflcyvamhzyt6fas3amwjhr6a3vwawf7mlj2pca4 Testing/Data/Baseline/Filtering/MathematicalMorphologyBinaryFiltersErode.png +bafkreihierx7aqhxw5rczrmwbkjrwf6tsm7ra3hupn5svr325mnpgoxdmu Testing/Data/Baseline/Filtering/MathematicalMorphologyGrayscaleFiltersErode.png +bafkreigo6y6e3ukqpm24vual3fbqmqlco6lthgc4v6tuzeotw4l7zvnf7a Testing/Data/Baseline/Filtering/MeanImageFilter.png +bafkreifsw2guzwrkz2t45h3komzeenrbe7qsdijuoydsevnfn2w77w7t5e Testing/Data/Baseline/Filtering/MedianImageFilter.png bafkreicvdtjckjrsvit7gqx4bw4tz3nwoe5hglzjzhyq3gq6q4ywzis5na Testing/Data/Baseline/Filtering/MorphologicalImageEnhancement.png +bafkreifvkwuqqprqr25spfov3ppqb7tzkudky2ahvn7fs47ykgqwrmxnem Testing/Data/Baseline/Filtering/OtsuMultipleThresholdOutput002.png +bafkreihwu43g4qd3bdxoodehgtck75jharppbrhxfm5q7ycqsdh6pkj65m Testing/Data/Baseline/Filtering/OtsuThresholdImageFilter.png bafkreicmoenbnq6qwc5gryr4a35pxhqznd26vqazq5azicqzhyomh6nonm Testing/Data/Baseline/Filtering/RACorpusCallosum.mhd bafkreiczlwldalhb5slwfevp3pvppwinihdbudys2wmilrgc7klhjh2zqq Testing/Data/Baseline/Filtering/RACorpusCallosum.raw bafkreicwv75irta3lzk7iik5i33ticyn6ope7cdwozlsly7m32mft7nvmm Testing/Data/Baseline/Filtering/RGBCurvatureAnisotropicDiffusionImageFilter.png @@ -848,24 +1644,46 @@ bafkreiat3ii7mmzurs5fdq2tahb6nqbkdpupoh4cjyznemv32ei7ond5ba Testing/Data/Baselin bafkreicqopucdi3lu6bss2ov73etfvvekfm2smquzmp5th3likwzy7rmxi Testing/Data/Baseline/Filtering/ResampleImageFilter2Test1.png bafkreidliqqdbwtundge2e6cz7wkynzq7chflcswdxposrnxs2qzf4tuky Testing/Data/Baseline/Filtering/ResampleImageFilter2Test2.png bafkreidliqqdbwtundge2e6cz7wkynzq7chflcswdxposrnxs2qzf4tuky Testing/Data/Baseline/Filtering/ResampleImageFilter2Test3.png +bafkreiem5hazlm5n5cwnriegogzabifmxstdza4fooeonw6vlmkrjn5c6i Testing/Data/Baseline/Filtering/ResampleImageFilter2Test4.png +bafkreiem5hazlm5n5cwnriegogzabifmxstdza4fooeonw6vlmkrjn5c6i Testing/Data/Baseline/Filtering/ResampleImageFilter2Test5.png +bafkreig2xbhhj6gomcrcf7cjzg6ade3bcybmwk4pt6pzdfawnhxibfhtb4 Testing/Data/Baseline/Filtering/ResampleImageFilter3Test1PixelCentered.png +bafkreifvnd5bp6npfph55tdqazqxzgqhnsfhxp6tjhzfocohdh6slebdxe Testing/Data/Baseline/Filtering/ResampleImageFilter4TestPixelCentered.png bafkreicvsh7kgal7ik3avtzhzed3di2idh4nylopumzutd7satkvebadd4 Testing/Data/Baseline/Filtering/ResampleImageFilter5TestPixelCentered.png bafkreiasynrqd3zfhmbdjm4rfht4g3p74rvc5bo5imwbixmjqmminh6y44 Testing/Data/Baseline/Filtering/ResampleImageFilter6PixelCentered.png +bafkreigrehjstpjbp32cp4rppf3hsezykuavbhx3cnu7wloujetf37joau Testing/Data/Baseline/Filtering/ResampleImageFilter7PixelCentered.png bafkreibnsxj6kaflygoicabrfclqi3q4fc5px4ykfayw5refaawxlqonci Testing/Data/Baseline/Filtering/ResampleImageFilter8TestPixelCentered.png +bafkreigucofuuajike2zmxn3wxnawbw5cnq2snllhpddwxlwzmj5imewva Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.1.png +bafkreigvekfafc74rklzuga65mlyg2lh2xncd3z3g5daagbar23kkprrnm Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.2.png +bafkreihxqjaxixogidobyyayumqdihrfeb5fqmxhpagixsqhpaulzhn4la Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.3.png bafkreieaweeuk3zpdbyqkqrbq77ff7xrwgyetvfjg7bnndlzh2kap54lmq Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.4.png bafkreibx5jakzrnnkua475ceigcciipkve4cdlkcxcv4x4u3u2jj4klwxm Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.5.png +bafkreig74bk3dmdhjgexs7cx55rpsatmaghclkfnlknlvussiditciikey Testing/Data/Baseline/Filtering/ResampleImageFilter9TestPixelCentered.png bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest1.png bafkreiaj5jrmw7hrimghchjub44xum7kbgtjkze7avgzex76e4hdzxy3gq Testing/Data/Baseline/Filtering/ResampleImageFilterTest2.png bafkreie4ryn3gpcj4lwlpbvvbjeftywo47n4x4xrcr2yu5dqhz4c3ooppa Testing/Data/Baseline/Filtering/ResampleImageFilterTest3.png bafkreicd3cwcuvwz2gyq5wankaejvly4kcqjyd6zzffltr2i4fkvzaloym Testing/Data/Baseline/Filtering/ResampleImageFilterTest4.png +bafkreigvoasgyk5o2l3ajz3tg5fqyp6ssonanr5gadu6yhfcg4xga5s5g4 Testing/Data/Baseline/Filtering/ResampleOrientedImageFilterTest.png bafkreidgqswnjeyj2zztvuq7tir3jmp2auqqqgrg3wdoxhapkbccccwrhi Testing/Data/Baseline/Filtering/ResampleVolumesToBeIsotropic.mha +bafkreif6v2jopi72s3sgjn3raqqe4zk43qvqnawhmggskgg3dbdpdozfku Testing/Data/Baseline/Filtering/ScaleSpaceGenerator2D005.mhd +bafkreied5ractyr7iqsvkmlqapc7odavdcm6wn5bdpdbzw6udgvitxk724 Testing/Data/Baseline/Filtering/ScaleSpaceGenerator2D005.raw bafkreidu3v4ix623wvczhsu7on2xxr6skoi622trifcivwuouwgrv7hk5i Testing/Data/Baseline/Filtering/SigmoidImageFilter.1.png bafkreiafhyn2npt622zajj2ssueb2f7u5ndrs4jcsugclybt7avde36xui Testing/Data/Baseline/Filtering/SigmoidImageFilter.png +bafkreifavtyl6vk3ljva6mmlg3ijc5b6nynkkkvaaw2it337slnz5hvbta Testing/Data/Baseline/Filtering/SmoothingRecursiveGaussianImageFilter.png +bafkreifavtyl6vk3ljva6mmlg3ijc5b6nynkkkvaaw2it337slnz5hvbta Testing/Data/Baseline/Filtering/SmoothingRecursiveGaussianImageFilter2.png bafkreick6lvynqwryxvgrvihxreenwgxzteirqnafbmis765rnuwrowzyy Testing/Data/Baseline/Filtering/SubsampleVolume.mha +bafkreigyhpod3dmkld766snuhatkzdsnlrlrq376ylylsqaokl3v35szyi Testing/Data/Baseline/Filtering/Tensors.mhd +bafybeiekcfygbg6ug4hvr26hkpppvjtunbru5l4vszrsabhmep2un3edxy Testing/Data/Baseline/Filtering/Tensors.raw bafkreibz4lev7yffgvhowec32bz5piliy3trirheaqlz7qfahv6ob6xkiq Testing/Data/Baseline/Filtering/ThresholdAboveImageFilter.png bafkreiczua2bho4jbawrj6vy3wqmqd5i37743cxfitaskvpjknfeoxt5ae Testing/Data/Baseline/Filtering/ThresholdBelowImageFilter.png bafkreidf7cqcjaciyk77ezblhhhzmybbu5oxyet3iua4dsozk6rlqmnrxu Testing/Data/Baseline/Filtering/ThresholdOutsideImageFilter.png +bafkreifqmdzmmymadi5k2iu2yhmsrhzvc4dpyqaai5f5slvvrd3wt7e3y4 Testing/Data/Baseline/Filtering/VectorCurvatureAnisotropicDiffusionImageFilter.png bafkreib2jqzewfumkszfdlt3aey4dxd5nobossn7lpcms5ai4ge4avbfdm Testing/Data/Baseline/Filtering/VectorGradientAnisotropicDiffusionImageFilter.png +bafkreifmgc7jul276y5gqp5zlfpbcwanfvdyso23upvqj3cowvsmieumry Testing/Data/Baseline/Filtering/VectorIndexSelection.png +bafkreifnbfota7paatibc4qiryys6i6kk36dgcqb2qxovb6fmlu6wmbexu Testing/Data/Baseline/Filtering/VotingBinaryHoleFillingImageFilter1.png +bafkreifpxqyb2rddvk2j6elhok2taksptnkabrfdx4juecoe3jih6kdk6y Testing/Data/Baseline/Filtering/VotingBinaryHoleFillingImageFilter2.png +bafkreignh44gazlmrfvnnnzekckpsf6bqk4b6giswq4d2so7hrfyxyguni Testing/Data/Baseline/Filtering/VotingBinaryHoleFillingImageFilter3.png bafkreicd22hfyeqdu6yvuxzyqezsnuvpwakxnbzkydq6cnkulnhilk7lv4 Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter1.png +bafkreiflmt4b6qhpilminputqard6naknhjljcm5nj7gntjgrmjnudpxce Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter2.png bafkreiasasgob2hyouwf4vxhgc7p3ar3eoyx3s3zt2sjkn3mahbqbatevu Testing/Data/Baseline/Filtering/VotingBinaryIterativeHoleFillingImageFilter3.png bafkreicnnzrss4flzplfoapfxqzssydgiastpuo77kj35b6puwo42nr5lq Testing/Data/Baseline/Filtering/ZeroCrossingBasedEdgeDetectionImageFilter1.png bafkreicjcvtr5ohidankms2xq6nol46t3oqgv245ppamldconn75g3v344 Testing/Data/Baseline/Filtering/itkBoxMeanImageFilter10.png @@ -874,181 +1692,352 @@ bafkreicr6otruuwal2s5eqbzsqq66fmuzbt5dzkygiseak6b6ns45cle7e Testing/Data/Baselin bafkreidyly7tmu4wpxgnsjdhbc54l4qaiov3z5kom4fywftz2p472optxq Testing/Data/Baseline/Filtering/itkBoxSigmaImageFilter3.png bafkreibde3rnayttitw3gbgozk4jrcah4hr6jz7m6oyabxk66xyhls5nzq Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.nhdr bafkreib22wyomojq5ypxf5rmqc73qfxbxww3nucchljlp3ffelchytdjhi Testing/Data/Baseline/Filtering/itkGridImageSourceTest1.raw.gz +bafkreieihubhps7z53lc5ukcuy4p53sowhz4nnp25e2gnozdunrc2xz33a Testing/Data/Baseline/Filtering/itkGridImageSourceTest2.nhdr bafkreibtjzbp7d3uexbx2aonzn7dghnq4a3gvpxtqzuo6vzjyhrhovirkm Testing/Data/Baseline/Filtering/itkGridImageSourceTest2.raw.gz bafkreibws3efvms2qkn5vxhweyghj7wlq3numufeyamzbvp54dutk35tt4 Testing/Data/Baseline/Filtering/itkGridImageSourceTest3.nhdr +bafkreievkctmp6aw6vlxdvp3ge74uvjwkzxd2w7jokiv2uwqbl62gek52q Testing/Data/Baseline/Filtering/itkGridImageSourceTest3.raw.gz bafkreibnhnunolwrhfy24xhjqtroek2zwahreddhuds7igvs3rmlzlzv6u Testing/Data/Baseline/Filtering/itkGridImageSourceTest4.nhdr +bafkreignfa7c3hdzw6bjl24bahomkj7kp4e3vsixok2xdcrcjz2l5b52lm Testing/Data/Baseline/Filtering/itkGridImageSourceTest4.raw.gz bafkreibnehii2boqlgkgqvrsvdl2h44xpusmrog4sgvg2izzjobxt4w5xq Testing/Data/Baseline/Filtering/itkHessianToObjectnessMeasureImageFilterTest.mha bafkreicj7kwskxqjnr5vu7wvv5doevf75ukfbdsm372mxfjt23gx6yki5m Testing/Data/Baseline/Filtering/itkHessianToObjectnessMeasureImageFilterTest2.mha bafkreiavhsqmxzstsenewtjnm345hhs7jj72xhocg7oooc6qc3welrl22e Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest0.mha bafkreibr4uwgufqxmuvd5k5iknfgvcoxlnnihs2r6gfmarujjbadgblcme Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest2.mha +bafkreif6jkxqkpgtrh3wbi2xv7puow32qy6kmgxtweb6zfdulpltl3wicu Testing/Data/Baseline/Filtering/itkPhysicalPointImageSourceTest4.nrrd +bafkreighxzakrzvtd5ykjw5ju4eycxwmxcruphkqi6weza2zayhx2ub33a Testing/Data/Baseline/IO/113766.003.001.mha bafkreidvxasu7bdqrqvsicgkmirp4tzunpgnm6z4y6egoo5ch3f6yyrxyi Testing/Data/Baseline/IO/19771.002.001.mha bafkreidgwdoheash37qmhqxfqqxankyix4oue2jzop5hcdopcl5okhdp6m Testing/Data/Baseline/IO/3868-2-100.mha +bafkreifq3nh7v5balkiklzrbb6wm3atcsx5kw6mfcjhrswfcepjsare7wq Testing/Data/Baseline/IO/48BitTestImage.tif +bafkreifc53fyr6cgrnqjcndxeosuazxgmnpygd4aejgosbf3mulqulzz4y Testing/Data/Baseline/IO/HeadMRVolume.mhd bafkreidrj723fw2z2odhm5oq6jazyjfhd3jdjgc3hhob5kb647lsceg6jm Testing/Data/Baseline/IO/HeadMRVolume.raw bafkreibytlcsh66hlrpeiqh4iyhcwkv44su6apo4jrwcnd2265zqwpnwqm Testing/Data/Baseline/IO/I.001.mha bafkreicpwzzviseloun3r4yan4s5272kehmxzl4gzxggeeri3n6ye4wbqa Testing/Data/Baseline/IO/NrrdImageReadWriteTest1.nrrd bafkreiaq3edmqewhisoa53dnyjun3p4chzgpywhjnb3igfs6pa4sjjj7ae Testing/Data/Baseline/IO/NrrdRGBAImageReadWriteTest.png +bafkreiglucmdklewtyal5oapcaklambz45xrtl4qywdx5snfonmhfeiqli Testing/Data/Baseline/IO/NrrdRGBImageReadWriteTest0.png +bafkreiglucmdklewtyal5oapcaklambz45xrtl4qywdx5snfonmhfeiqli Testing/Data/Baseline/IO/NrrdRGBImageReadWriteTest1.png +bafkreiglucmdklewtyal5oapcaklambz45xrtl4qywdx5snfonmhfeiqli Testing/Data/Baseline/IO/NrrdRGBImageReadWriteTest2.png +bafkreih6bqkhe5mkrwils24jgvisjjilxasdseyhhsbol23ebhrdtxdani Testing/Data/Baseline/IO/RGBTestImage.tif bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax3.mha +bafkreifc5khuygyhwk5rmbjr42hqzubjvhvp66weyuhsmlmdklhm2ba7xq Testing/Data/Baseline/IO/RGBTestImageCCITTFax3.tif bafkreibcw5c4a7pdvdiscoffci6pozr7izai2agxfmsmkbij3ssvkon33q Testing/Data/Baseline/IO/RGBTestImageCCITTFax4.mha +bafkreifc5khuygyhwk5rmbjr42hqzubjvhvp66weyuhsmlmdklhm2ba7xq Testing/Data/Baseline/IO/RGBTestImageCCITTFax4.tif bafkreidxxbfmekjiwx3gvriyzjypajhy7w5hmxplwu3o7drg2uvpejguhu Testing/Data/Baseline/IO/RGBTestImageGray.tif +bafkreifc5khuygyhwk5rmbjr42hqzubjvhvp66weyuhsmlmdklhm2ba7xq Testing/Data/Baseline/IO/RGBTestImageHuffmanRLE.tif bafkreicjbuee7eufaheksb3y6qydzy23jiyvxnpxw34xuoug4ln44txyce Testing/Data/Baseline/IO/RGBTestImageJPEG.tif +bafkreigucwk6ldji7hoaxrnqvfoj2q2tenzc6l5vyqomh3q3gwl23kwjva Testing/Data/Baseline/IO/RGBTestImageLZW.tif +bafkreigucwk6ldji7hoaxrnqvfoj2q2tenzc6l5vyqomh3q3gwl23kwjva Testing/Data/Baseline/IO/RGBTestImageNone.tif +bafkreigucwk6ldji7hoaxrnqvfoj2q2tenzc6l5vyqomh3q3gwl23kwjva Testing/Data/Baseline/IO/RGBTestImagePackBits.tif +bafkreigucwk6ldji7hoaxrnqvfoj2q2tenzc6l5vyqomh3q3gwl23kwjva Testing/Data/Baseline/IO/RGBTestImageZIP.tif +bafkreihklqcg4g72bvuaahmqo4flrum5eusidjihcjb2sezmckscnsyldy Testing/Data/Baseline/IO/ShortPlanarTestImage.tiff bafkreidi6pvgrjbx3hbukpmfntvqi57t7owpdc5bhfdtyjdaxvs7fuhgzi Testing/Data/Baseline/IO/ShortTestImage.tiff +bafkreihvtyezzckc6fwobvo4yvngio67o2tgxw2p7phpsynklxjxi5stpu Testing/Data/Baseline/IO/SmallRampVolume.mhd bafkreie5illuxlceh2x33gdycrnxiu4h5mjzof2dgjlexsh2nw2bjkzyd4 Testing/Data/Baseline/IO/SmallRampVolume.raw bafkreiah4ethblr4oobqkn7m4dqt4f4br3d4id2iqkudiml3epjhhmf5rq Testing/Data/Baseline/IO/cthead1-unitspacing.tif +bafkreieppgtb7ljk637srk7brun2tympfle4t67iixrhjgyx353ijxrm2e Testing/Data/Baseline/IO/cthead1.bmp +bafkreif3t3423l5afmdp5druhzpclg7g27rb47smxxrsl4b63dfa7niiza Testing/Data/Baseline/IO/cthead1.jpg +bafkreihunvzwua3eh2oekyzchmje5heb62fywfpbluqv22lzbphzaelk2q Testing/Data/Baseline/IO/cthead1.png +bafkreigxaiqnsaboq37frbjaedj36gjbchxlcwrabrem3kb6ohyiezej44 Testing/Data/Baseline/IO/cthead1.tif bafkreidb4rqzbyx27vsfhrmyvwshhmlen3qgzdpqfeaztvws3fk4nshpsu Testing/Data/Baseline/IO/cthead254x254.bmp bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Baseline/IO/image_color.bmp +bafkreigjcmyx6chtjifkovzqz4osal7zgspriexeye7ovevepvw3ptzjui Testing/Data/Baseline/IO/image_grayscale.bmp bafkreieaognb5sft3tywkwkxxc6jfrxxvn254fzgym227fotl6ewzawvei Testing/Data/Baseline/IO/mini-complex-fast.nrrd bafkreidr6bht6m76ccmgnz3kzqyjec4to7vl2yi34yfusfby7dqm3qpkhq Testing/Data/Baseline/IO/mini-covector.nrrd bafkreidqkj3vhhgwv2pgncyw7vfavdvmlbjbqyqnb6eqn3q3ofwaouinny Testing/Data/Baseline/IO/mini-ten.nrrd +bafkreignmg5lqlmqa5zrr66boqtpginlj5saiycdjh7c4s5ylcrsymcprm Testing/Data/Baseline/IO/mini-vector.nrrd bafkreibybxnagopkoydjp67r3w2i2hkl57fxxthwnf4ap33ngmg3vl2z7u Testing/Data/Baseline/IO/ramp.mhd +bafkreieqf2sifxgtp3xffbv3zplzya36iqbvq6rszcjme6eev4jcf7x3le Testing/Data/Baseline/IO/ramp.raw +bafkreihrwqqfwdjpn4q2zm2hoax6nanb5tx7qaxu3lvaiv3sntfkvgyowi Testing/Data/Baseline/IO/ramp.tif +bafkreihn72ob7yntbyukgeub626q2tbkmfvdgudl7set4l53hvlysvrru4 Testing/Data/Baseline/IO/rampShort.tif +bafkreifzqowbexit2mbey43qcsowqcalney2vbnmzsoq2uh5mfdh65r24u Testing/Data/Baseline/IO/small-tensors-double.nrrd +bafkreihdmuca5wtalebjbaqlpe7tuqxc72uaba75kyxcls3wico6q5nvei Testing/Data/Baseline/IO/small-tensors.nhdr +bafkreihc2drcsqhi5e4c2ttfnewpyyslzodvzacbry3azhe6vdexcajzke Testing/Data/Baseline/IO/small-tensors.raw +bafkreihprp5t66nh2mdurhcmrcd2lsn3cxnf2i47qklnwthbvhq536wcm4 Testing/Data/Baseline/IO/smallRGBA.mha bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Baseline/IO/vol-ascii.nrrd bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageLinearIteratorWithIndexTest.png +bafkreifpjmbkoqg6qxrxnrfyxwe6jn3okyo5zsn7ywp2l2yt7wqyhxmgd4 Testing/Data/Baseline/Iterators/ImageRegionIteratorTest.png bafkreiavehdwfk23ji65m5g7kmpu2nurrdnb5bfbpdstom43zklkydk6xi Testing/Data/Baseline/Iterators/ImageRegionIteratorWithIndexTest.png +bafkreiefl2stk7o5qkfbb5n4n2jqdg2o3te3imx6g2wodbgn7i3ac3kt5i Testing/Data/Baseline/Iterators/ImageSliceIteratorWithIndexTest.mha bafkreiagw27c3upgcb6xubt6yycqitchcot6cbfokk62afyybtcrbtnvjm Testing/Data/Baseline/Registration/DeformableRegistration2Test.png +bafkreigr7ysbdf5kpi5l6o6tgksahj37ywcjtcszgkujcp7tephzuz7kxu Testing/Data/Baseline/Registration/DeformableRegistration3Test.1.png bafkreid5djqbzslzasphhx5v45tm2lnxgp7gawtw3sdmh344456gumwghe Testing/Data/Baseline/Registration/DeformableRegistration3Test.2.png +bafkreiftmatiivq65wecjcvmxad23bux5qtrlmzfk36gbkda4mmglnuttm Testing/Data/Baseline/Registration/DeformableRegistration3Test.3.png bafkreia3zlrg4hcrj6en6lxj7xnpfxlbyarzqegk5kgn7dm2oyb7y5oroi Testing/Data/Baseline/Registration/DeformableRegistration3Test.4.png bafkreido63mhlq7ald2ebqce7myvbozkccqpqozahco653x7pzcuzmfgam Testing/Data/Baseline/Registration/DeformableRegistration3Test.5.png +bafkreihyasa5jmzrjfm7jkwvz3mtexx63pdvq64dr2yznkd6appunfbuge Testing/Data/Baseline/Registration/DeformableRegistration3Test.6.png bafkreidq2ivclbubxjyymuw6elg43pjspuotzjyasjowholmvipaf4vadi Testing/Data/Baseline/Registration/DeformableRegistration3Test.png bafkreia7rqwil6gcwokxw3y7ytsmgwc5mukx72pgaezxt7vssxnesahzme Testing/Data/Baseline/Registration/DeformableRegistration5Test.1.png bafkreiduyff2nhustpqzquebofpnto3dw7o4fdmzcs2sacviwg6fdet5oi Testing/Data/Baseline/Registration/DeformableRegistration5Test.2.png +bafkreihf7tqxm5crt7r7uzrep7ih6sbnsqxwxjfor6e2pj5bdpkpttzgcu Testing/Data/Baseline/Registration/DeformableRegistration5Test.3.png +bafkreiecqgmsre6bwefvgojx7j6xbkkxyg5scgg4646xiuotpxdco5xu5m Testing/Data/Baseline/Registration/DeformableRegistration5Test.4.png bafkreidoqzb7dulzv75ctbvjupfjwvvkyrikioqt57tikfz3rwwubinybq Testing/Data/Baseline/Registration/DeformableRegistration5Test.5.png +bafkreifuwe7zeijnfa3jke3wkj7ooimtjsktnp36nld6wiv6gnjqm6o2bu Testing/Data/Baseline/Registration/DeformableRegistration5Test.6.png bafkreicua6u7ayas2qsqyuwh4zi3naxrw3u663i7ynfz2osy67qpoa7d2q Testing/Data/Baseline/Registration/DeformableRegistration5Test.png +bafkreigj2as3sm5skkmbx2qcnzpnsuei4fdrziurla74oyjyfrjp2mnqbm Testing/Data/Baseline/Registration/ITKv3ImageRegistration4Test.png bafkreiaub3fzo2qgrtd2f3jecpmpk5foowpeo7oa24drqwegkfwr64hgya Testing/Data/Baseline/Registration/ITKv3ImageRegistration5Test2PixelCentered.png +bafkreifelbd6z7olulrtkbolpww5uo66ju5rwbm34uvp6zf5c3z2kziafq Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.1.png bafkreiax4tqmaotwthxi625wvvny4mozpnlnczih4hfjvwntcrbwpmqyyy Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.2.png +bafkreigqrkeqbhhq6juvnrs7uni77rpdnx6towfamaec3xyivq2kdjixd4 Testing/Data/Baseline/Registration/ImageRegistration10TestPixelCentered.png +bafkreigd33oqsasrtvy3z6ttfvbsnxhdpg5c7fsasin4fqa6e4fmcjwedy Testing/Data/Baseline/Registration/ImageRegistration12TestPixelCentered.png +bafkreihijl7seiaki6zaxblgd2tgnvqstqg5iwqbs5dleridsb7fwqaw5a Testing/Data/Baseline/Registration/ImageRegistration13TestPixelCentered.png +bafkreiez7u77ce5ndfdgjib6bf47q33mz2x624lbep2g23cmh3niaqwlhy Testing/Data/Baseline/Registration/ImageRegistration14Test.1.png +bafkreihrazwp6zvyzrwugpeb7gmvgj3eyghtfbv2kmli3u7nl2zdqktn5q Testing/Data/Baseline/Registration/ImageRegistration14Test.2.png bafkreiaveozihczoh73mjk3g23ohq5fdwasdql627avmb44i6vdve7mfmm Testing/Data/Baseline/Registration/ImageRegistration14Test.png bafkreiai4dfush33eye42aost26m3ts3jpm7kzvrf542c2lbxm474rakwu Testing/Data/Baseline/Registration/ImageRegistration15TestPixelCentered.png bafkreiba7tqeqyp446bspzygjw35hjtufjy2b324sun77ie3xzx5kanjsy Testing/Data/Baseline/Registration/ImageRegistration16TestPixelCentered.png bafkreiea7l5i3dgcfjdienzj4blmf23jeqle2breuptdlg7za6ionqhrge Testing/Data/Baseline/Registration/ImageRegistration17TestPixelCentered.1.png bafkreia6b2npxxh7bejgwenkysjrilt6piysvfk3p7ijttx3bh45iy6gma Testing/Data/Baseline/Registration/ImageRegistration17TestPixelCentered.png +bafkreigcwtmsq7w6574dkq6qegkdj72u2o3gdlvs55gdiumnnf7pse4nt4 Testing/Data/Baseline/Registration/ImageRegistration1TestPixelCentered.png bafkreiadx2ih7h2amqka7ay3qycnncx7syo4ppldl7plwteyancfnbzqk4 Testing/Data/Baseline/Registration/ImageRegistration2Test.png +bafkreiezyz7m5fos2fnokuyb2rvmwsqhy6z4d6yvgf5qjr26utvlfb6che Testing/Data/Baseline/Registration/ImageRegistration3TestPixelCentered.png bafkreidqfisl5uy2uor5ru5iniayhkgiurt5lxrsznc5llywbp4anxoqny Testing/Data/Baseline/Registration/ImageRegistration4Test.png +bafkreiftiousssxx5e4ifwtbyuez2hrxkfswciscm523u32kqehmoxoh5y Testing/Data/Baseline/Registration/ImageRegistration5Test1PixelCentered.png +bafkreifsqgm74o7jbde5sltjohc7ofgrhmdieeqhb43wvmv6excw5wovh4 Testing/Data/Baseline/Registration/ImageRegistration5Test2PixelCentered.png bafkreibnfj37v5crhu42av6vasj7pz5daeemyhgj756xyzaseyjmy77s6i Testing/Data/Baseline/Registration/ImageRegistration6TestPixelCentered.png +bafkreifgk6hfmtrl7zt7qe2hcu2swasjdn4xi7zms46tok5ygtza5fo6ge Testing/Data/Baseline/Registration/ImageRegistration7TestPixelCentered.png bafkreibjjpb66r4lcxgxtk6u6qcegvfuz3yviwcisjgxq4h4i2kkwueb4a Testing/Data/Baseline/Registration/ImageRegistration8RegisteredSlice.png bafkreibdqeblsv5nsaoitbwqo2g5ue4vgixfh2e4u4cdog3cvsby7fjzai Testing/Data/Baseline/Registration/ImageRegistration9TestPixelCentered.png bafkreidti6bjrjbfrrhofmqzhge4ubxddezsve2fc6qjz7a27r3efgkyhu Testing/Data/Baseline/Registration/JointEntropyHistogramAfterRegistration.1.png bafkreibnrzoyef3f2kxmey3tku5jpdmdbycxpjiqj52ad354ucljhgxjy4 Testing/Data/Baseline/Registration/JointEntropyHistogramAfterRegistration.png +bafkreierhli6k3d3w3hrnvwsdjtxj4rlk6tkzwjz6r63cxcmoem7ptbiaq Testing/Data/Baseline/Registration/LandmarkWarping2Test.png +bafkreighi5eppyaunawuhtvdeoql3unwbgyzerfzijvfkxbu3uaijkh7yu Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.1.png bafkreid537fzz5uvwjhr6byj4wyq2nwdgtat32d2s5dv7t45cslyh3wyie Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.2.png bafkreiccoudx65pd3cra6wjbaoy2u4ran7mwavdk35l37ms62rdv3wypyi Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.3.png +bafkreif6vxc6a7urwxzmfmiioftjy2vlx7i65tzbvgxg675p3fgwu2oz54 Testing/Data/Baseline/Registration/MultiResImageRegistration1Test.png +bafkreiehzkfghioea5f74evobkwvw5ncvvkctszrjxt7vskusg6zb2bl4u Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.1.png bafkreic66wr4u7je44vmqxlh565cxwduvuaht6zohxgk7ttmab3nzwfek4 Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.2.png +bafkreigkjlsajstb5bno5bkiypp7xtyqdrxoitlpamuc2zkhvdgmwwhsum Testing/Data/Baseline/Registration/MultiResImageRegistration2Test.png bafkreib4mwlqupj3a43kdqkpa6a3iohroqlzmjrh4tfn46pml4bfj7n3fe Testing/Data/Baseline/Review/itkAreaClosingImageFilterTest0.png bafkreidpn6t2wm3jcil53xa5gs65l7uvknj5fw35kozkwzy5le74ugmapq Testing/Data/Baseline/Review/itkAreaOpeningImageFilterTest0.png bafkreibsuexxa3wkco7faediffwewe4f2wlsxh2645l3yhyaeoh2ox6asm Testing/Data/Baseline/Review/itkBinaryClosingByReconstructionImageFilterTest.png bafkreicspb6kq37nbnubtddg2rawvqf3ck3wno7zx3loil2meokmcgnmdy Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest01.png bafkreidzz7epihrp2hvgzqe4aefdyjozqv5bkzdqty4jupfnxo3j4bwvly Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest02.png bafkreici3tmqbrgock2z7l7bva5tyn7hhg6tdaytr36ybq53macp7nqqam Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest03.png +bafkreig5kiounrfaeghibak7oufwr3vf5srwveo7szgcffgirmfpb7tihm Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest10.png +bafkreigftjwbdsbzwyjw7ibcajbf2pam4vs26ux3ijowsqvfl5jzyj5kli Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest11.png bafkreia4tevn26uqejybgd2fdtiqg3tfdw4q2fiy67zkvogpnr7tu7a5pu Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest12.png +bafkreifsuw42spay5ppbliaxfty2hiocw6w4ipjw2ckcycgvms3w6wvx6a Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest20.png bafkreidtedqmn5op3pofnrbgrrprtjpm5epsa62jldq6r5fjif2we3r5si Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest21.png bafkreibw5fa3uorze7g6whpbaed5pdn4tb3orn3r7a3ovz7rxqlkplkkbm Testing/Data/Baseline/Review/itkDiscreteGaussianDerivativeImageFilterTest30.png +bafkreifvcksnonx26ohfqn35eb345gyywbjzgkvylcd5iqeqny25jfamka Testing/Data/Baseline/Review/itkFastApproximateRankImageFilter10.png bafkreiec2n3jbfpdcnkl7onbsbx5cw2gkfwgvbbpreeydpdqcbvuco6w5u Testing/Data/Baseline/Review/itkFastApproximateRankImageFilter3.png bafkreicl3dd4bmbxsu45xtarzletbjkh5kizsefotq277qnzks5ruj43ya Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest.csv +bafkreihgmx4gzanftknndpadugjb4s72rvl7rvt6cfjbaocq7h46z7plle Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest.png bafkreibba3t5ux5jpp6so3uz5ulftmua7hu7irfzddponz7rsslfeej22e Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest2Image.png +bafkreifbq3ll7gvafmzjogkdsgp4iga5f5vbhhxcqmoxifkib23hwoietm Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest3D.csv +bafkreifqvmbnrvjy7nctcpo2ggk4kp6nr65l5vinsinb4jp7o4urgzvuvq Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest3D.mhd +bafkreifjiqemyirfat3izwccsghisrdghrrhdk2ltsnojzunrxuu6egusq Testing/Data/Baseline/Review/itkLabelGeometryImageFilterTest3D.raw bafkreia5vkolpuqomo6mqic7abinoonkchyvyr2pi4f3qmdzs6w5temfnq Testing/Data/Baseline/Review/itkRobustAutomaticThresholdImageFilterTest.png +bafkreiequyjyjywcokdcxsl6j2ftwzzjjh4xs7g5grmln5jjvkkjbnnhyu Testing/Data/Baseline/Review/itkScalarChanAndVeseDenseLevelSetImageFilterTest2_0.mha bafkreid4cfuprunmalg555gwzs6xsafvtklrqng4dv3foecoruvrlnmdja Testing/Data/Baseline/Review/itkScalarChanAndVeseDenseLevelSetImageFilterTest2_1.mha +bafkreigiz4ryna6fwsuhiupchxldqzs52bwswwh7k6j46engtjr3x2pxr4 Testing/Data/Baseline/Review/itkScalarChanAndVeseDenseLevelSetImageFilterTest2_2.mha +bafkreif22ml6xd2ghxq2g75fetf3jw3qv7nbxb3mfekcu2gnn3rezv2gte Testing/Data/Baseline/Review/itkScalarChanAndVeseSparseLevelSetImageFilterTest2.mha bafkreie5zg4dz3v7mewepibidtwtwc25su6enhjyo3vzkag2qbwqpuygoe Testing/Data/Baseline/Review/itkStochasticFractalDimensionImageFilterTest1.mha bafkreie5zg4dz3v7mewepibidtwtwc25su6enhjyo3vzkag2qbwqpuygoe Testing/Data/Baseline/Review/itkStochasticFractalDimensionImageFilterTest2.mha bafkreieajle2sg3tveq6wjv3x6malnlfpooupgbfvwici6hb355y73uap4 Testing/Data/Baseline/Review/reconstruct.mha bafkreia3e2gljtecxctuwflzoaoxyxovbg7m35eqnjbb44r33wefxv47ye Testing/Data/Baseline/Segmentation/CannySegmentationLevelSetImageFilterTest.png +bafkreihu7wmltxocv2d25bhyiz4f2xu2ixj4g7oqhxrhzgh54kyw6eshbm Testing/Data/Baseline/Segmentation/ConfidenceConnectedGrayTest.png bafkreidcixpbxuki257oy7wwlwk623sjncskqpghh7vvgtg7vln6zm4bim Testing/Data/Baseline/Segmentation/ConfidenceConnectedVentricleTest.png bafkreie2b3wpvtb5jpkyxdonb62fgeej4ohjztq44gbjnns32jdudcvzua Testing/Data/Baseline/Segmentation/ConfidenceConnectedWhiteTest.png bafkreiclzw7e7pqcqrxim4omiojbxkxt3e6amawrwi4jg33rzkqqywf43m Testing/Data/Baseline/Segmentation/ConnectedThresholdGrayTest.png +bafkreiff4zbk7rr43fimkwfq2rb7ahrhbxqykdbrxh6wgbmc7wpob2ne6y Testing/Data/Baseline/Segmentation/ConnectedThresholdVentricleTest.png bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/ConnectedThresholdWhiteTest.png bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/CurvesLevelSetImageFilterTest.png +bafkreieqt2ryw6oqpvdbnlstxnymvagvpu5arnreonf323r5gyobtwsfri Testing/Data/Baseline/Segmentation/FastMarchingGrayMatterTest.1.png bafkreicxwixp55bg3dudsmivlavs4tqy3mso4iohba3zyi6tq3lbc5oyum Testing/Data/Baseline/Segmentation/FastMarchingGrayMatterTest.png +bafkreigtmzqft7yrvpeglwcgfpn54r7i2xigbvunmyiioggrqjtbowilkq Testing/Data/Baseline/Segmentation/FastMarchingLeftVentricleTest.1.png bafkreid3s53u5vkgxth5ygy4zmwiohk65ukiotkocgvxjsc4znpjxw4xm4 Testing/Data/Baseline/Segmentation/FastMarchingLeftVentricleTest.png +bafkreiglf2i6lodsuaaqd2w2tvmautfofqa6weh3brepbnblmakywjle2u Testing/Data/Baseline/Segmentation/FastMarchingRightVentricleTest.1.png bafkreibr3k2jijyghi52r2cdi5kd7vqyjzdv4fwzauuwfbufzhxanqcbse Testing/Data/Baseline/Segmentation/FastMarchingRightVentricleTest.png bafkreidpd6eavtoqau6w4u2dsy3r77qhbta2z2mjiyqjcrh6ba66g5yzoy Testing/Data/Baseline/Segmentation/FastMarchingWhiteMatterTest.1.png bafkreibxy25vhvgppb6edktj5ja5uyiopo2dk22gi7zby2dgcq32xaii7m Testing/Data/Baseline/Segmentation/FastMarchingWhiteMatterTest.png +bafkreif4hstnsmf27tq4qurt52xh6epiqunbk5c2bx5jsvxnrn2olsybxm Testing/Data/Baseline/Segmentation/GeodesicActiveContourGrayMatterTest.1.png bafkreic5hqdcvandl4meeevjxgn7up6nnefrgcijsp33eleksjchdkkrxq Testing/Data/Baseline/Segmentation/GeodesicActiveContourGrayMatterTest.png bafkreidx2nexb4w7ui6cwae3abgooybh6vh7hlqrpxggjhvzwqpdx5wa4y Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.1.png bafkreichve3ybarn4t3lckoru47fxuvel65zms4fcpp37ulkze6wr6jqfi Testing/Data/Baseline/Segmentation/GeodesicActiveContourLeftVentricleTest.png bafkreicetvgjze6imuowupp4ctkszqy26ziytrfpaxkgtqxdac2cjoxpki Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.1.png bafkreicu6ukhlwyxpp26ilqkm7wwv6pnimmivasqd56lm42klcvkro4duy Testing/Data/Baseline/Segmentation/GeodesicActiveContourRightVentricleTest.png bafkreibdujpchvv4oyo6bnf6y4arjpr5t3in2iswoimbte45sidc4mls3q Testing/Data/Baseline/Segmentation/GeodesicActiveContourShapePriorCallosumTest.png +bafkreigmbwlikklpddiz7c53giy43qsct675pysutcfqwbkeansfhh3wwe Testing/Data/Baseline/Segmentation/GeodesicActiveContourWhiteMatterTest.1.png bafkreidxqpw5n2geowldruo3h5zdzvnnl4idr5ufatiqo5vbzehwmjx7aq Testing/Data/Baseline/Segmentation/GeodesicActiveContourWhiteMatterTest.png bafkreibsbodzjqgiqjraobc4l2wamn4ufd6dgnbcfd7qs64oaxbwt6im2e Testing/Data/Baseline/Segmentation/HoughTransformTwoCirclesTest.png bafkreidok3eqrti2q2k6ijt6fcxczvmk4pvvc56ecfvpgduzfnzuzufnpe Testing/Data/Baseline/Segmentation/HoughTransformTwoLinesTest.png bafkreickheqviviyqlmxnkdueyoppmn5o6ixtqhjyepfhizbwxqk2ocm3y Testing/Data/Baseline/Segmentation/IsolatedConnectedTest.png +bafkreiewgethmpptws6yseiyjzq5yxl5q7o3rcz6xzqpw3x74t7rbnkf2a Testing/Data/Baseline/Segmentation/LaplacianSegmentationLevelSetImageFilter.png bafkreibgg75j26o4vamf7dwddjie4jjg7kllxdor7fudkfogoibqmffema Testing/Data/Baseline/Segmentation/NeighborhoodConnectedGrayTest.png bafkreic5jk6tyftvpmarvmk632h6dnp4hlxmo4tbhc7a6yfjhpllendqay Testing/Data/Baseline/Segmentation/NeighborhoodConnectedVentricleTest.png +bafkreiepmwp25cd6gtrguqjpkb5qeypsfpbrxgfboq4bsocdtbsfkzjv3m Testing/Data/Baseline/Segmentation/NeighborhoodConnectedWhiteTest.png +bafkreif46vyacoz3t4x4dorm3m2oufizfgvhbdfaupsforvp6mbmrmciju Testing/Data/Baseline/Segmentation/RelabelComponentImageFilter.png +bafkreiestu7gf5cmieipl2hzru4j45aqaf4jticuri7lv4sdtcjvchwngu Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetGrayMatterTest.1.png bafkreib3zv5ox7hrrw2tnzdjvbjtafkgbicy473potgvcoggwigkuigix4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetGrayMatterTest.png +bafkreifl3gtngwetodcpc2obcu3gex52cctphju7yqs74p7vmwmbl2ezda Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetLeftVentricleTest.1.png bafkreic6x7r2lt3wn2utmmqhjo2ifh4uurk6rdszxtmhtbjp5m5u55efm4 Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetLeftVentricleTest.png bafkreichhlbb3lazar5nsrqkj6buvkqucqcnyomsarskoynbmqmmd62hea Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetRightVentricleTest.1.png +bafkreigdesulihkhd3lmwzlvfybyadlo2uilkqjp5comryi2tod3wahpki Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetRightVentricleTest.png +bafkreifagqfy76pbix2i4gpzpsfuzbt764tgfhktqec3zn5i7mmnmh5hqe Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetWhiteMatterTest.1.png +bafkreienoy74y2xdu5rjqcmolug76tzqpcrzlnvdnqpltqma3ffsp64g2q Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetWhiteMatterTest.2.png bafkreidbifcyhtvjvborndvavyjghlk2cjrlvk2yp5hdzilzr2rf5e54ri Testing/Data/Baseline/Segmentation/ShapeDetectionLevelSetWhiteMatterTest.png +bafkreiex2gif332l263zfcepplezqk24hdwbxy5wasijhx7q5rp67aczx4 Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetGrayMatterTest.1.png bafkreidr5l2wofnaeiv6ve7ttmkz7dop72uhf5peyuitpl2b3plkgxbflq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetGrayMatterTest.2.png +bafkreig3a2c2mal2rvydlyfqdsu6gmyutp45tvk6ru2xyrkfxg5ickwecm Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetGrayMatterTest.3.png +bafkreihf47hhrkrs537yzbvtie335bhoczdv2yxkzkopvq27w3fkk4jhz4 Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetGrayMatterTest.png bafkreidp2wrz2txmolffeuagfpjgkoaiftfyvh3ay2wojok2we7i426xyi Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricle.png bafkreidpcj4h5qd7lk6hm46vxgdb5oipmbjoioeso4747irfzbxyztyy4a Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricleTest.1.png bafkreiccy5vmupxqjc7b54qj3upq343akgxzwsaz24mqlevdwhskc2wdzm Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetVentricleTest.png +bafkreigbwxzaclygmm4x5pj3ujt5joppq4xp7c6pugn2jnd5624fbizoxa Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.1.png bafkreibbsgmdzzltnpdlwgoqcgdkotbm6kz2qwkqsw6sxgen5xuof352om Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.2.png bafkreicgyfubsfbfehyrwi2n6n7dao6pj4e6xeqcfyc3zdhqtzoyew66zq Testing/Data/Baseline/Segmentation/ThresholdSegmentationLevelSetWhiteMatterTest.png +bafkreih42sppzdidasb6qm43j6oyzfsvvq7bflaigyqhzefdqatmm4zxvm Testing/Data/Baseline/Segmentation/VectorConfidenceConnected1.png +bafkreif3hszv67wmbgbmf5o6pdga35htf5ygqqt3rirjdpcqh66rz542jy Testing/Data/Baseline/Segmentation/VectorConfidenceConnected2.png bafkreie3pkunkzncsxzzlk7awzch736m32q4aailo25e3fozhjexypps7i Testing/Data/Baseline/Segmentation/VectorConfidenceConnected3.png +bafkreiexcu6x6t35wy36332nxobnemseabal3p5aizoatuiv3hd5ap5cly Testing/Data/Baseline/Segmentation/WatershedSegmentation1Test1.png +bafkreiekzt5scacm76qbp7lyophs4s7qccbax27i6db6bsen3vsmduh2mi Testing/Data/Baseline/Segmentation/WatershedSegmentation1Test2.png bafkreid66vjq2plzuqtacwnxzsnedue4zshz6m43ta7uv2hmbtv3rtliy4 Testing/Data/Baseline/SpatialObjects/BoxSpatialObjectTest.png bafkreic7zvpt3te3neyjish5bq7ovckvczzo3qe3rgdnty4g6ena32ivva Testing/Data/Baseline/Statistics/BayesianClassifierInitializerClass2Output.png bafkreidahg53dwft7cjem7e364v7nnadddaqepcd436322yvtq6gknu6d4 Testing/Data/Baseline/Statistics/BayesianClassifierLabelMap.png bafkreict7pqaa5qiwacm2c2dnxpnkfyfsj3e47r3r5v4sevv63vxhvphg4 Testing/Data/Baseline/Statistics/ImageClassifierFilterTestClassifiedImageTest.png +bafkreihgaetwk7lebs2w3y2dpiuiq6ems7srwbifp54as6z4lmgc7qibcy Testing/Data/Baseline/Statistics/ScalarImageKmeansClassifierOutput.png +bafkreier3ntkhqbfw6zaumgh7pkkh74vpqrbdcodoubxnl2xijxbbsukuu Testing/Data/Baseline/Statistics/ScalarImageMarkovRandomField1Output.png bafkreibpleftqacav3cxmv7ruaehver35veg2xc7qqiach4biml2qusuza Testing/Data/Input/012345.002.050 bafkreicw4z6w4v462wyaggi5p342af4nrfqz7ee7vpevml7xkr2hmmo2fe Testing/Data/Input/289.png bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Testing/Data/Input/2th_cthead1.png +bafkreifq3nh7v5balkiklzrbb6wm3atcsx5kw6mfcjhrswfcepjsare7wq Testing/Data/Input/48BitTestImage.tif +bafkreighodmvamtvy7rkkwqlcnoopnwhmfoqz7ekyzyuybr7wrmzgilixy Testing/Data/Input/5x5-constant.png +bafkreignsyvh2oafbh7fvn5y2qaxukvthvgnjt3p6dak455bsnw3rq4zji Testing/Data/Input/8ConnectedImage.bmp bafkreiazem3elmai3lwipyvxcajfd2afrg5gjtswvh2udtwc5ztku6x344 Testing/Data/Input/Archetype/a5b1.PNG +bafkreifulc6pbv3665f2tmp3nsxmt7hy3gr6jqojt7omobxxhhrrqpywrq Testing/Data/Input/Archetype/a5b6.PNG +bafkreigjp4hzxcfp5m4khhbzh3q76tutfvk3hdqc7cth5uxpjm53sxza4u Testing/Data/Input/Archetype/a5b7.PNG bafkreialo6gyuvvb7jpt2m7cw2shvk4hmvi7wto7cthudztfa23kwt6m5y Testing/Data/Input/Archetype/a6b1.PNG +bafkreigxumdck52nvrrioof35u7u5z36ukfggcis6upoau2imnardz2aay Testing/Data/Input/Archetype/a7b1.PNG bafkreibd6yioa2vazw77nkr5pcmopnpu6nrsd7q74mo6opbjtliu6ytgsy Testing/Data/Input/Archetype/a7b2.PNG bafkreid2hwujxisw4cxuvnujnyrka6nktlgssijeirgy5o3kx454pcbmem Testing/Data/Input/Archetype/a7b3.PNG bafkreiam56gz5lzrrsj5fdkf5tpgkjkmxflk4gg7lkddlx6rpjnvoasmxy Testing/Data/Input/Archetype/a7b4.PNG bafkreicctcog4hcfivk3nj3xdzes3qks7vmxybv4ez262aonmdtwukxboa Testing/Data/Input/Archetype/a8b1.PNG bafkreidixagwmglbsjk2juae2vchnxsr7ekxvtiktwl42kkkbi4gfswt3u Testing/Data/Input/Archetype/image.001 +bafkreigybwgl5e5sl5kd3bbejqzboriiurrjijads54jhk37iskofcjgfm Testing/Data/Input/Archetype/image.002 bafkreiaje6otkkjwwcqhsm3joaadthk5oeclsm6k2sbf4jipcgm2xzgydq Testing/Data/Input/Archetype/image.003 +bafkreig2cvbo22twu23tq5abo6pqhlkdepsttmkrffvsjhnp4dbn5zjvw4 Testing/Data/Input/Archetype/image.004 +bafkreifxmrn3eswjtt2kdtm2m5e4afldhlokp2tayf6lqeeekbhfwr2l3u Testing/Data/Input/Archetype/image.005 bafkreia3rdnljnpjh3l3dp374vs4auapbhsr7gflwnlxazoz6oo2oza7na Testing/Data/Input/Archetype/image.006 bafkreidqxzqjdp77sx6k73hrapg64ra7nws42pdcf4ekbshf5p5zo3dwgm Testing/Data/Input/Archetype/image.007 bafkreiceaml262ln6chfswtem3mxrlpngx4tqzll27m2irbl2rj56rezt4 Testing/Data/Input/Archetype/image.008 +bafkreifu6ltkh57ztx4647v4qsi4albycbgeuda4hh57yxzfacwoe5olle Testing/Data/Input/Archetype/image.009 bafkreia4xk74iupjj5d5lqzy7cq6zgax3f3s2zjrwun6wkvnzhtiisuf6m Testing/Data/Input/Archetype/image.010 +bafkreifyv2pqbq7ilrbl4qcvxhmbblc6sewumn4nfyblgmpc4vav2kiksy Testing/Data/Input/BSplineScatteredApproximationDataPointsInput.txt +bafkreigkz76phd7dniiagk2l4p3uzbb7ydgpquel2yqlpw3yuobvq7bdou Testing/Data/Input/BigEndian.hdr bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndian.img bafkreid2z2qz3txmgcpkssvkvzy4ohsukft5ojhj2nsdhr7sn7f5b7zzgu Testing/Data/Input/BigEndian.mhd +bafkreifj2yy7viebwqc6roswnhxj5zpvm5ehdjsgobttd6czxc6llhsmpu Testing/Data/Input/BigEndian.spr +bafkreigkz76phd7dniiagk2l4p3uzbb7ydgpquel2yqlpw3yuobvq7bdou Testing/Data/Input/BigEndianCompressed.hdr bafkreib6vaz2s7b2cpzmzlos37mkydv2l2euz2fbf4fwci24zulrhuzfsy Testing/Data/Input/BigEndianCompressed.img bafkreicrb6uyivbjq7axm43xoloz4way2tnos5i6ivurieoblnfqtu3esi Testing/Data/Input/BigEndianCompressed.img.gz +bafkreiglut7rblvalmt5hjrpdj6g6rqqtksy2mmkr6mrtxu445fmx6m7yi Testing/Data/Input/BinaryImage1Row.bmp +bafkreihdijjgcl2uekyz7n7hzlva7kmr2aq35dogj2xf76ti5ghmpnjj3y Testing/Data/Input/BinaryImageWithVariousShapes01.png bafkreidb65rh5qc2vvw6tklzljubukjw5smveoepf6k4ybyw3i3nayi2xi Testing/Data/Input/BinarySquare3D.mhd +bafkreihfoaglos3zklujwus6slwo3tr36kc3kdnb26ah4nucnuxwgszn5i Testing/Data/Input/BinarySquare3D.zraw bafkreia3xcwr4rd3wu7u7dd7mn3iru7uzcavscpbrmklwussqvyab6uaia Testing/Data/Input/BinarySquare4D.mhd bafkreiagampuouhpaftl77q2t7w6kg3ubyarphibws5fiudpqpy4hjqihi Testing/Data/Input/BinarySquare4D.zraw +bafkreihkczdhu62weyxiqkvdsrvfzeu7hmohm7ccioexsam6hahf77gaua Testing/Data/Input/BrainSliceBinary.png bafkreiczdu4gg7sl6o4oocjd7qqa5rzr4rnumkp5odbl5gqtyatd3nsjo4 Testing/Data/Input/CTCardioCropped.seq.nrrd +bafkreihf6kiwcdyv5tuaceddablwiqyklixjog7rieiwfrtdidmkinibni Testing/Data/Input/CellsFluorescence1.png +bafkreigfuf7crlycvurajr3h2w53rpjl5o5wmfbqhptsxq4dphs66bsb5q Testing/Data/Input/CellsFluorescence2.png +bafkreigtrf6yc6r67lkvmwirkz4cmm7jtmzo76s5lluuh4ps4mv2wlp26i Testing/Data/Input/DSA.png +bafkreigtvmfzjg3iujcduykbe7h7rejt5krggjmbmpm6gdh7osaqdqq5am Testing/Data/Input/DicomDirectionsTest/1020_0075.dcm +bafkreif7x5iz7b7mtnplhjjg7omgaiunirjlfxkjlifaorgeol2ol2syou Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.1.dcm bafkreidcjj3ntkh53eoxnw2yfse4pg42ijbk4wq7k5dghhjljtw7lrnmuq Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.2.dcm bafkreichsot47hdalj3tosr72dmvfso7zwsgc5n4orrue6jbznu3e7yhtm Testing/Data/Input/DicomImageOrientationTest/ImageOrientation.3.dcm bafkreicztxb5yxsktbeop3yy5cswb3lsrj7t7o3l7ccsya7446cyark3mu Testing/Data/Input/DicomSeries/Image0075.dcm +bafkreifdu6kqcijdlsnmhmivvnhekouluk3udxcdzc22kppdl277n3uqzy Testing/Data/Input/DicomSeries/Image0076.dcm +bafkreifthhj3upw4aaflnghqh3hlrr5vxhqscjnwpxvzjqsf46bny5cveq Testing/Data/Input/DicomSeries/Image0077.dcm bafkreicztxb5yxsktbeop3yy5cswb3lsrj7t7o3l7ccsya7446cyark3mu Testing/Data/Input/DicomSeries2/Image0075.dcm +bafkreigx7viqfdcrqgfnghxkqeoklgth73c3rkqzfxgiaadf2vgo3gsfqq Testing/Data/Input/DicomSeries2/Image0076-missingTag.dcm +bafkreigh7s5ihqpndj3ougsu3u623o3qqopdjl7avv6do7suuqnegnb7fu Testing/Data/Input/DotOnVaryingBackground.png +bafkreihot6d43qrnoljt7emt2klhzptl2mkfhilrd72ra54rl6hrydw2k4 Testing/Data/Input/DwiCorpusCallosum.nhdr +bafybeighzj7kjwnn3jr5mndpzbznpyodoxr45dhu6xpvfb3mmbc2xkzwpq Testing/Data/Input/DwiCorpusCallosum.raw bafkreicpkbc2vba2lap3a6fn2p5j6ljbn4fgaivg3qdzpmiaqedpu45lgi Testing/Data/Input/Gourds.png +bafybeigxfn6bgslcpwevceum5qlzvjsjvzv2n6j3c4x3vso67oyb4plyra Testing/Data/Input/GradientRecursiveGaussianImageFilterTest.mha bafkreidfo67pypdutnvxpuy77e2so2shtiatnsnjgqpojfuvj222244nzq Testing/Data/Input/GrayAlpha.png +bafkreielz7ns45sx6p4jwxc4kcelnyll62f5du5km3cd7fupvx67qukmzu Testing/Data/Input/GrayscaleImageWithVariousShapes.png +bafkreielz7ns45sx6p4jwxc4kcelnyll62f5du5km3cd7fupvx67qukmzu Testing/Data/Input/GrayscaleImageWithVariousShapes01.png bafkreid7el3rna5o7g6pw4am7q6pbgjqsv2z2xdbixmwh2pjpjq7avy7qq Testing/Data/Input/GrayscaleVolumeWithVariousShapes.mhd +bafkreigkejvuno6vpewvryaoistt7ztokqpto7t5bdgjtpd3wlthrmdu3i Testing/Data/Input/GrayscaleVolumeWithVariousShapes.raw +bafkreiectxieb7wcdlktpk3ock3jprjzewxoa3qyh3l6l2tv2yunxb7ncu Testing/Data/Input/HeadMRVolume.cub +bafkreifuwrvdclxmac5a7bky3lf3ylwmqfr2wfq3ivmawzjquztck7cr3u Testing/Data/Input/HeadMRVolume.mha +bafkreihmuwe5cxj2yvudwhtfj73p6d7lmk6vl53oqf2fereb6iwqcimqti Testing/Data/Input/HeadMRVolume.mhd bafkreidrj723fw2z2odhm5oq6jazyjfhd3jdjgc3hhob5kb647lsceg6jm Testing/Data/Input/HeadMRVolume.raw +bafkreiectxieb7wcdlktpk3ock3jprjzewxoa3qyh3l6l2tv2yunxb7ncu Testing/Data/Input/HeadMRVolume1.cub bafkreieawnk457jzi3oshe6fzpxghwhzuldwf3skbijorwxkbcvzfdxucq Testing/Data/Input/HeadMRVolume1.cub.gz +bafkreiectxieb7wcdlktpk3ock3jprjzewxoa3qyh3l6l2tv2yunxb7ncu Testing/Data/Input/HeadMRVolume2.cub bafkreieawnk457jzi3oshe6fzpxghwhzuldwf3skbijorwxkbcvzfdxucq Testing/Data/Input/HeadMRVolume2.cub.gz bafkreid54i4w3c7hw3pgglrfexxpv5iftnuye3nca2ctqyml3rvzk6p6ny Testing/Data/Input/HeadMRVolumeCompressed.mha +bafkreigv7kv4pkweswk7wi56grqfuhj3bme4ljc7emm4wghzg7mn2mzrpi Testing/Data/Input/HeadMRVolumeWithDirection.mhd bafkreibgc3v7omkekea4k5fzsyotfvahpkuzmecm4ik6nmf37vlhzhjnvy Testing/Data/Input/HeadMRVolumeWithDirection.nhdr bafkreidmlpyfhnoaswsdwarxyiweeuf4ebsvdvbtljawrdlimkbrxsoxsu Testing/Data/Input/HeadMRVolumeWithDirection.raw.gz bafkreie6pylc5fpjq5xzyvbstb2ycsenufgknk6cpis3r73yqejmtxpoem Testing/Data/Input/HeadMRVolumeWithDirection001.mhd bafkreidcemq7u4lwpxhgtlsbmjlwk5ch5ftvubu3ngr5u2qnzdnspzj32q Testing/Data/Input/HeadMRVolumeWithDirection002.mhd +bafkreigf72ppgk2anojjg25vk2e4d5uu4qbpqe5vz3dslr7o4ghncios5y Testing/Data/Input/HeadMRVolumeWithDirection003.mhd +bafkreigm232wtfkorcyzd7k34ubxfi7cg7tlg6sr43sed62uvonglhrgxm Testing/Data/Input/HeadMRVolumeWithDirectionIdentity.mhd bafkreieck5xt4bjfe4dhz7ikwxir5f5qqijw66xjpjzeiyqzkatvz2bsra Testing/Data/Input/HeadMRVolumeWithDirectionIdentity.nhdr +bafkreihzvopegcurs2yoa45om4fdmbdezxhniarb6ffnt2en7tdlee4k5e Testing/Data/Input/HeadMRVolumeWithDirectionIdentity.raw.gz +bafkreig2zsgr6f5ti4okwd4ulqgoc5tftxhrmvxzac3l6g263ezi6rpo4u Testing/Data/Input/Input-RA-Short.nrrd +bafkreihtpbn6bxeewxu6rz6bchhc5qlvvgh2df6okd5bxg4ekytt2uxkeu Testing/Data/Input/IntensityRamp64.png bafkreiapsruqlhchlkgwzalja2drpdsixoitiphzu2nrptun4txws7hfci Testing/Data/Input/LPSLabels.nii.gz +bafkreihnblsw7gu7rtsjvxnzaynq3ycpmybz7nkdudsioej22d6hj2ssam Testing/Data/Input/LPSLabels_noqform.nii.gz bafkreiayifmz2arvb5gyvhhmwyoeggin75tx2retastdpy2buuxnz4ktpa Testing/Data/Input/LPSLabels_nosform.nii.gz +bafkreig62frynvf6canzruosefjg7scthq47op2yptsjtglqqcfurf5rpm Testing/Data/Input/LabelImageWithVariousShapes.png bafkreidv26ctqs3l4tkpupgij3myhnezhb36t2awp24ydnyjgqxnzgt4g4 Testing/Data/Input/LabelVolumeWithVariousShapes.mhd bafkreidy5qsaj7suku65t3ytg6ng5kvoqhvmlyu5qgsqrraydlraidmgym Testing/Data/Input/LabelVolumeWithVariousShapes.raw bafkreicdjbd4wnnbfzh44hdt3gp46brt7v3mbyqm6kspxb4btldmkweojy Testing/Data/Input/LinearTransform.h5 +bafkreihqla7rhgu3qip4qigz6daqp7tr2oz5l2aqopjiogk7gb7zqcnjuq Testing/Data/Input/LittleEndian.hdr bafkreiccntubvccyuviu4ftzizt5xuoceuwgu7vozcw5gd7cxe6bjsr6za Testing/Data/Input/LittleEndian.img bafkreidybxsps47unhxj3h34djbwmzbjmfxsfwanwhwxzha5vahcvrvg6a Testing/Data/Input/LittleEndian.mhd +bafkreihqla7rhgu3qip4qigz6daqp7tr2oz5l2aqopjiogk7gb7zqcnjuq Testing/Data/Input/LittleEndianCompressed.hdr bafkreidqao4n7uhgo7hwsaixvy6koeprjnwvaqcctpter4u4rwwtdn3jdi Testing/Data/Input/LittleEndianCompressed.img.gz +bafkreihqla7rhgu3qip4qigz6daqp7tr2oz5l2aqopjiogk7gb7zqcnjuq Testing/Data/Input/LittleEndianZ.hdr +bafkreihlmouxb2gt2iym723jrmor2kznipnpa3lvp42hkexyygtxnw5yeq Testing/Data/Input/LittleEndianZ.img.gz +bafkreigvefcf5iyimeqt7pcmoppn43l2k4zoroy6srfkwo3545leup2pvu Testing/Data/Input/LungSliceBinary.png +bafkreif25uhrbnnnrxyjt24csjxl3dr63xpqj4nih7ebnmr4dzq7qahkgq Testing/Data/Input/MetaIO/Small Ramp Volume 03.tif +bafkreih4ghyy4wicpmkvsvbplyrnmwekusiuhrl53iweckvbeaywy6ic7e Testing/Data/Input/MetaIO/Small Ramp Volume 06.tif +bafkreihwoyjju2u7oofblozkiae5ucswtyeceqapyvgdhjb5guzpgbrada Testing/Data/Input/MetaIO/Small Ramp Volume List.mhd bafkreibsm7pxeylg3nun5jdeubzzhabhwtgmwzu3x54amkzlxo3mecavcm Testing/Data/Input/MetaIO/SmallRampVolume01.tif bafkreibwgb5aqw76qqqz6xqwlwtvbv6tdz6m7wjehfbeekgq7iehwvtcrq Testing/Data/Input/MetaIO/SmallRampVolume02.tif +bafkreif25uhrbnnnrxyjt24csjxl3dr63xpqj4nih7ebnmr4dzq7qahkgq Testing/Data/Input/MetaIO/SmallRampVolume03.tif bafkreiacernybemiaok4zsz4kegmzh7eh7b53rwml2w2f5kicnwxsde44e Testing/Data/Input/MetaIO/SmallRampVolume04.tif bafkreiasxjv6gstfagh72yldawtencaxdzm3uk43arb5xatnjqy7nvt2jq Testing/Data/Input/MetaIO/SmallRampVolume05.tif +bafkreih4ghyy4wicpmkvsvbplyrnmwekusiuhrl53iweckvbeaywy6ic7e Testing/Data/Input/MetaIO/SmallRampVolume06.tif bafkreiabv2oshlbykm2uhoojgcki435zvkrlwj54nwfcohjmaeqhxyjz3a Testing/Data/Input/MetaIO/SmallRampVolumeList.mhd +bafkreifn7qffkd2y5f3osy4jyxnnd5uvfpzzziv5evwujxv2vn4qf5qkda Testing/Data/Input/MetaIO/SmallRampVolumeRegEx.mhd bafkreibf4ax3y4f5d4d7gu4sncsyy7qmdx4y2l32rdjvptbny62f4wr7bu Testing/Data/Input/MetaImageError.mhd bafkreicshs5i7vygmntrhvdboiqnwl6bfp6dmmtmqclun7lkss7ignljmy Testing/Data/Input/NonOrthoSform.nii.gz +bafkreif6mzw3lsp5ad2pdjslax7ohtelrok4l4r3itixzwkxvwbcodrgry Testing/Data/Input/Number1inText.png +bafkreiffitrwhkjydlbznuaxx6hi5f5cakqkq5d4pbbyp6reqsriba3koa Testing/Data/Input/Number2inText.png bafkreibct4vqe3frlihsfvh32a3x67idg42n3cbzyx72luw46tznn6rfie Testing/Data/Input/Number3inText.png +bafkreigvkychab37o7xwucss2ixz6ypianbw2k2grkkvbjgrfrlhl3qks4 Testing/Data/Input/OT-PAL-8-face.dcm bafkreidwwx2643j5w7iezpbjk4b32qcfkfia46iun3re6n2tqku3ovqtsa Testing/Data/Input/OrthogonalDirectionsTest.dcm +bafybeiakbl2jenttnlho7tuw7flgm3ew7oddrd63kgcuvkp5waduzajvee Testing/Data/Input/RGBDicomTest.dcm +bafkreih6bqkhe5mkrwils24jgvisjjilxasdseyhhsbol23ebhrdtxdani Testing/Data/Input/RGBTestImage.tif +bafkreifin2koybuekqqrdriwti7k653ovikxcxl2ckpvl3wu6hlkce5dge Testing/Data/Input/RGBTestImageCCITTFax3.tif bafkreibnb3piktjl6rnmxokouwugvxj5ifutv6njivbxo7unfx654hwbay Testing/Data/Input/RGBTestImageCCITTFax4.tif bafkreidy7fgl33hl2nlb2zh33p5ugqfczcdqct3y6ki7ghnj3cugjr6x6a Testing/Data/Input/RGBTestImageGray.tif +bafkreigsdpiymwlqmh6sxpumedlqu3u2olcr6reovhavrg72ktt6dch6f4 Testing/Data/Input/RGBTestImageHuffmanRLE.tif +bafkreihbal3lvbyojh4hf7txfe2r7mz6ccfm7kxnnrkvtocn6vn33db2ee Testing/Data/Input/RGBTestImageJPEG.tif bafkreichkfizkrmy3ymsdmx6djruyznwsz2l7ut7pufhyapdk3qibxmd3m Testing/Data/Input/RGBTestImageLZW.tif +bafkreiefgiwxo2vo7ekrumzpzsuzlverloeobyfmarphupseoafa7tmf3e Testing/Data/Input/RGBTestImageNone.tif bafkreiddwcjiwdxnwjcbvwzc6ynljgs474z5dcyonjamcgbnvy7e7ha3by Testing/Data/Input/RGBTestImagePackBits.tif +bafkreifxu56ewlpmbev2canssjzk4gdnjzmuwew3nuo3z6hdwyjjmtjram Testing/Data/Input/RGBTestImageZIP.tif +bafkreieprhxyg6sbdhg3rrel7geno64ictov5g32w5q6r6pjarihrxkrri Testing/Data/Input/STAPLE1.png +bafkreifxnyhhbjszrc7obizc3kpxta3zpj7kzhd6nhbfpkwccav2z2qnku Testing/Data/Input/STAPLE2.png +bafkreihouwqztg4ybt7extqrbs4ekvxypofjn7qszufu4khmzf7ofhkw2a Testing/Data/Input/STAPLE3.png bafkreibhdstyfeaiag4slqklyzemsgcwh7ka6sxe4uc4ya7er554ptrsua Testing/Data/Input/STAPLE4.png +bafkreigc2lrpwz4f56acntbifys2ce3sxeigpyggxycqqy3y6wyblmoxq4 Testing/Data/Input/Shapes.png +bafkreif7c5axgb5lddi6tcmgdbpgvojvg4lglrut5kitpvowiwynmidjim Testing/Data/Input/ShortPlanarTestImage.tiff bafkreic2hm3cma4ucr3pdzqqshdplo6tu4mlovjraerl74agvxebgk5cfa Testing/Data/Input/ShortTestImage.tiff bafkreiebtec36rsbd4habywaidhp22x7u2ksf4l6ia2yxsxvxnq5ocvody Testing/Data/Input/SpatialObjects.meta bafkreidl2fpnnw7cjlgjosn6ff7n5hiwqbdntr5y5smsnumcswyoznqudi Testing/Data/Input/Spots-markers.png +bafkreigkkkxrkrqhvlamneaurskvh733jgjkaqwoizgm6xo7pqttyuxs3q Testing/Data/Input/Spots.png +bafkreihjzf743b7dl6hfh4suly2tmer7rgjqjet5aksr4265vf2kuqezay Testing/Data/Input/SpotsInverted.png +bafkreiftckienxvpmttttqwnmugs3krtime3x5k37zxthqtqy5a7q75b5m Testing/Data/Input/SpotsLabeled.png bafkreidbyuse534mnlbekkaqpvompi3c5bqipmdyotefpvxlwp2yarlho4 Testing/Data/Input/SquareBinary201.png +bafkreif3nndb2vz5tipg45cg4uxnpczsdhnr2ykqsgldv66wgizwzqw4mm Testing/Data/Input/Statistics/BrainT1Slice_AfterKMeansClassification.png +bafkreigeu3zwyglw2n4r6kcp7gsxtj55neogu3gsp6eujz7k7sdwvziswq Testing/Data/Input/Statistics/TwoDimensionTwoGaussian.dat bafkreialct4roz556epsous5logatfdgujhx3d3y64cegbqn2vhmzrilcu Testing/Data/Input/Statistics/TwoDimensionTwoGaussianTesting.dat bafkreiakdptaidn43xwmsjxewkk3jahakcy6ttjps4p2uh6xc5pjwy22dq Testing/Data/Input/T1_MEASUREMENT_4_1.PAR bafkreicjfacm2duvhctivq2ohsjtgjqqz24m654kdbd5jco2bmozl5rhoi Testing/Data/Input/T1_MEASUREMENT_4_1.REC @@ -1056,42 +2045,83 @@ bafkreiccg65qfdvxrmom7eyjq7nyt2sjab2t67xylwbveftwuyvee7t3xq Testing/Data/Input/T bafkreiagrsbz7ruqqapa4b5x4pqenrs3erqhqyk4vr5do5b4zzgou4ocvm Testing/Data/Input/VHFColor.mhd bafkreiaqa6gvexvgen3yc3ug4caw5ob3qtyfbs7yith5vfjbbq4a7s2yoe Testing/Data/Input/VHFColor.raw bafkreie3uxik4q5vv4s6s2sj4omm42z7rckpkys3v5wiss4cyke5sn5kba Testing/Data/Input/VisibleWomanEyeSlice.png +bafkreieytpf3h46ytfwy3cowhb7fhpfemhon5gizmm72w73ibjkmv4gfky Testing/Data/Input/VisibleWomanEyeSliceInitialLevelSet.png bafkreico44qbyjwtuji7dxcbychpq4km5sgepnmvqlruyrf62exkajp23u Testing/Data/Input/XML/test.pso.xml +bafkreihz6lrvy7bhepq4u3jgrov5wuaiihgjtcnhuzdf4obmhmjowhdydy Testing/Data/Input/XML/test.xml bafkreibo5jx5hrwuqwtrwoplrxwixhc4hali7ajh7iyusegb6figbqgsri Testing/Data/Input/box.nhdr +bafkreihys4e5ahw6nxxnidmclzeuwrkhfogzqvq7yanwrcmdpkrlilzn7q Testing/Data/Input/box.raw +bafybeihglboiha6nv6qsbh2p2pyzwu7scmropnbcrdf7plp2pq4mwkpxzq Testing/Data/Input/brainweb1e1a10f20.mha +bafkreifony5lqeosjgs2fjzqy4ncvaafe5c24wupd4pb3jr7bnu4goryea Testing/Data/Input/button-hole.png +bafkreigza53i5anoecoz4zufifwdpuoxc375zr5x5eussjdahzivtrzjfa Testing/Data/Input/cake_easy.png +bafkreifgxdvjbaqz3ymb3u4pufxiecmldu6wfxxwtd6tgvbu243dw3xsiu Testing/Data/Input/cake_hard.png bafkreiaein6l3pxmcpyv3w6pu5mx5tdnazqwouffcbkjh4azg4kphur6vq Testing/Data/Input/chondt.png +bafkreihytwdqh24fds7jcif3ihivf5xiow2r6hjpe5zez7tdoxhdidqlly Testing/Data/Input/circle.png +bafkreigy7r3rouxrkt6a4xpnpmathagiwrze7skzggo3wahegom33grvhy Testing/Data/Input/circle100.png +bafkreife5osxxssq2egqism34pqnr7lgjko6wfhnlr6j25w7gek55rsl6y Testing/Data/Input/closerec1.jpg +bafkreifmrnjiotvzdk3f4gfiwwn3s2bnadlvtm73chyp6qwszqh56zvza4 Testing/Data/Input/color_lowerleft.bmp +bafkreigwoo2arcgr44tbcv4eylemmrl3iattpe7zxkkqupyohghuswlawy Testing/Data/Input/color_upperleft.bmp +bafkreifd5myig46tw5co4edramhm5ev3o6celehinadqfgx635hh2wemwm Testing/Data/Input/connected0lines.png +bafkreigzp3gg7kog2ryyyrs35fuzjjtedzxy3evztw6u5fqiv2pvmgehhy Testing/Data/Input/cthead1-257.png +bafkreihk6cce3msivskjtcetf5rgxa2pr2mvvnctjm6hiyyuwj7jq3e6ki Testing/Data/Input/cthead1-bin.png bafkreibegteuabwy7gpqhoxjr5akjlku5litxockmjuce3iwib7pqj6sae Testing/Data/Input/cthead1-markers.png bafkreia6zkmi7zcu7wzfrmt2lpggn2gln43tcipkk4tj3f5quyrnpdvalu Testing/Data/Input/cthead1-mask.png bafkreidnkzw6sxzrzyb4tlyjqytxq5xbxfc2kku6s25j3qre7nptfhyvcq Testing/Data/Input/cthead1-multires.tif bafkreiaphgjig3eiyx2soc34anrjgtip7hpt6nakmf72xexah44ghnb63i Testing/Data/Input/cthead1-threshmask.png +bafkreieppgtb7ljk637srk7brun2tympfle4t67iixrhjgyx353ijxrm2e Testing/Data/Input/cthead1.bmp bafkreiag3r5eotbcnaxxvznnfzgr44liqsmccv52swubvgfgmjd4nqsdjq Testing/Data/Input/cthead1.jpg +bafkreiesi6ak4ctmw5ijv2o5xqlhw66uqpyee56btx4j4aj6mjvn6dumtm Testing/Data/Input/cthead1.lsm +bafkreieilrgrns7xcna5yle2yw3q2wxkl3wn7lp22k4d4pwjhlhwc3ed4u Testing/Data/Input/cthead1.png bafkreibnzmariwkrmk3l55xlsngj6kfrt7qryyid6v4jggww4eo66kd54q Testing/Data/Input/cthead1.tif bafkreibqas7mt3o7s3edtkyrtnfx7zxsur4gjqhx5pf6km2dkej3h5vlqa Testing/Data/Input/cthead1Label.png bafkreidb4rqzbyx27vsfhrmyvwshhmlen3qgzdpqfeaztvws3fk4nshpsu Testing/Data/Input/cthead254x254.bmp bafkreid4luuamv7d4ypvlpx3iahgyzx6cnbbkrltsfecwnt6fl4lfd2amm Testing/Data/Input/dicom-sc_cs-1.dcm +bafkreifmvtvahyaegj2tskytwtxerwujehex6n5riyjxov5wdyrsh2cari Testing/Data/Input/genusZeroSurface01.vtk bafkreibpbglgwfvyda3xqki2p64vzkiuaenhzvzqqpftscemf5mzs37iti Testing/Data/Input/grayscale_lowerleft.bmp bafkreic3hoowztk7glic2o7bxemfefblzzekzjsff63q62w5qhffuscali Testing/Data/Input/grayscale_lowerleft_rle.bmp +bafkreieigtiywvc2zo7svfirwyehgkqzz52tee6p5uzmhoqdhg5hbkuqam Testing/Data/Input/grayscale_upperleft.bmp bafkreid2h7exryfznak5mdp2mifusnzi22ihoc66vmhbwxcygn47g6ygui Testing/Data/Input/historical_misspelled_TranformParameters.h5 bafkreib4ybfrewzbarydwd7wxeyis6aumyhzxsjrr3wujgl2f6h5jh2vcm Testing/Data/Input/image_color.bmp +bafkreifxbchugztsfxvcaywfsfmxrjebqiuic44fi5i3idp4i3vu2ne2r4 Testing/Data/Input/image_grayscale.bmp +bafybeigcwpx5nodlsh3b4lemjmaupce6oz63nvvrfvlpf4hkpgkicol55i Testing/Data/Input/itkDCMTKNonSquare.dcm +bafkreif62py55t4d6x3pmtpm42iijysqu5qk2jb4elyuqb7jcvo36sn5wu Testing/Data/Input/itkGDCMImageIOTest.dcm +bafkreiencasyf3k22kcthk7omztll6igb5v5lgifvx5xctebfvhwvhmkoa Testing/Data/Input/itkGDCMImageIOTest3.dcm +bafkreig2drcaubshzqt7vhlftqebwr2yo256yfhkyw4ipdjza7n6n5ffeu Testing/Data/Input/itkImageNegativeSpacing.mha bafkreidrlyovpi4tuxmegzwpiytkvuk3hgwcg4rzrjeyodc2bs6gi7qtti Testing/Data/Input/itkNiftisform2DirectionDef.nii.gz +bafkreieegiuqy5mn4fw7xdhdlfz2rzgxvznoregvqtftu5kgjagucqhrv4 Testing/Data/Input/level.png bafkreia54nwpkhz4fxjtuivhoibzci5vzulvh3yrtysi7z4njy77syo2qa Testing/Data/Input/metamesh.txt bafkreickcfrkdhd5gorlbn3wzrnarbkdqeslgbd5n2tfevuabpieayu23a Testing/Data/Input/mini-complex-slow.nrrd bafkreidr6bht6m76ccmgnz3kzqyjec4to7vl2yi34yfusfby7dqm3qpkhq Testing/Data/Input/mini-covector-fast.nrrd +bafkreighhfztdtjqq56pxinoah3zj4i2jvuim6yrkhe4qx2eklespfdp5y Testing/Data/Input/mini-covector-slow.nrrd bafkreidng4sbczgdcbjjhdnq4dpqtoh756ddvclicatjhbbbbipgkbysve Testing/Data/Input/mini-ten-mask.nrrd bafkreidqkj3vhhgwv2pgncyw7vfavdvmlbjbqyqnb6eqn3q3ofwaouinny Testing/Data/Input/mini-ten-nomask-fast.nrrd bafkreidnvruwpzif65e6r7bq4opnr5fb5yef5tv4udax6cvabamb7qytaq Testing/Data/Input/mini-ten-nomask-slow.nrrd +bafkreignmg5lqlmqa5zrr66boqtpginlj5saiycdjh7c4s5ylcrsymcprm Testing/Data/Input/mini-vector-fast.nrrd +bafkreihsgzczl6bkh3jwxbfajmrdeauaxu2rq6katdi3naoqfbzg7w3aei Testing/Data/Input/mini-vector-slow.nrrd bafkreibmodaapwlmwl25k3vp5fvx6a3e4mtrmjexyi6brdjbgvnmtly7qa Testing/Data/Input/mri3D.mhd bafkreiaosokxvuurl7k7wzvi3q6oyiqo2oxm2kq77loyivpeahxxzaild4 Testing/Data/Input/mushroom.vtk +bafkreifh3s4yvxlh5p2ng2ntry2fdgl6vfzh6dsw4c5i7rdxllet4hp2cu Testing/Data/Input/nonConnected3DLines.tif bafkreicc6ldouhxxgo7lkabmkvjptocdcck5vrqsjfqv3kzahroida2r6e Testing/Data/Input/parametersBSpline.txt bafkreicypztvbqgaqvjp6fiva4axuwlgnrlpxlmgzgcw3e7f6xp23pebim Testing/Data/Input/pass-values.png bafkreidvsh557q6wq5mpzashhjhyqt27p46rkjrbytasf3jchui67fptvy Testing/Data/Input/peppers.png bafkreidfkhnr57v4fa4f7ynp5ez7e6xeh6uto3c4lst7z75azgokjltiti Testing/Data/Input/plateau.png bafkreib2mnx73jbm2oprni2tqyt3nzvet2yj4miejszyr3w4if2fbwsvh4 Testing/Data/Input/pointsForKdTree.txt +bafkreifu7h5vzgbiss7l6s5wfwrqo5gamypcyjnrx3aua3xr6eenlvrlfy Testing/Data/Input/pointsForKdTree2.txt +bafkreigoukhx5poqgmguzjimdibgl3zhmcauasyca2g6g2fliwzzcveyjy Testing/Data/Input/r16slice.nii.gz bafkreiajxeelq44vxxgpxlzqftii2km3vkpfvpxuqvar6zuyvf6pszqjbm Testing/Data/Input/r64slice.nii.gz bafkreibtmnmqob7py3i5yqrs7w2a3mjuax7guh7ouie74k2gdorv5agoee Testing/Data/Input/ramp.gipl +bafkreif5qdohfa6d6otd2xj7wn523qaxeypqsgmmqntklmsvnghtqm3xgi Testing/Data/Input/ramp.gipl.gz +bafkreihrwqqfwdjpn4q2zm2hoax6nanb5tx7qaxu3lvaiv3sntfkvgyowi Testing/Data/Input/ramp.tif +bafkreihn72ob7yntbyukgeub626q2tbkmfvdgudl7set4l53hvlysvrru4 Testing/Data/Input/rampShort.tif bafkreibl5gmdw32meh5mzqixf2vhlewk7elht2zcqcql5lgsj4oc5vcwkm Testing/Data/Input/sf4.png bafkreiaozkfgry4ohv4gk4fuo2fytkc6epemzlr66mn2nazevlaaxc36tm Testing/Data/Input/simple-label-b.png bafkreicbbhnqtl7rztos5dg2areyhxe3uwognu4fxa4yphuo2vk5sl76xq Testing/Data/Input/simple-label-c.png bafkreic6h2kau6larhvohrqibtm7lgl377ne5sixn6kblu7yqeade2sq7e Testing/Data/Input/simple-label-d.png +bafkreihmersevkswlvl3th25fg44ynwxtuwjxzly27cs37ko4qqhg7n4z4 Testing/Data/Input/simple-label-e.png +bafkreif72uvrlrmwdevwzeiq7h5fnvocgkazissolmoa34vjzuho7jlxy4 Testing/Data/Input/sinogram-small.mha +bafkreihdmuca5wtalebjbaqlpe7tuqxc72uaba75kyxcls3wico6q5nvei Testing/Data/Input/small-tensors.nhdr +bafkreihc2drcsqhi5e4c2ttfnewpyyslzodvzacbry3azhe6vdexcajzke Testing/Data/Input/small-tensors.raw +bafkreifhxm5filbxldphpl2gkhdwbsi3emko6vhcfkhdpbgxuo2xyxcu7u Testing/Data/Input/smallRGBA.bmp +bafkreiezoo2hbk2rvtp4dvmwtuebldoqozh4wvkm5tih3j24ip73mww6se Testing/Data/Input/smooth_circle.png bafkreid3qzqlhub4tclws7acxa623jhpo7qqw7edbolu3424qukuprebfy Testing/Data/Input/smooth_square.png bafkreibzlnk4hi5htbabds53iv7xrofvjl6mvy75ergwflcapaigl7nv4e Testing/Data/Input/sobel_x.nii.gz bafkreicojrj773okbjnvhd3c5gopqn5til7wg23blbrsbefd2qopbemu4u Testing/Data/Input/sobel_y.nii.gz @@ -1101,47 +2131,78 @@ bafkreib5x4r4zcroilk36n2bsx3wo7y5grmoosudojifnn2dcf2viwieiu Testing/Data/Input/t bafkreickggjzritwhvbdqj64w6s4olnsh5f4icp6ycqyvtidpzybqitndm Testing/Data/Input/test_ge4/19771.002.003 bafkreia6nz4nrxgal47ns5epex7wxgaag4gughg5xorjem7oewdj7ck6nu Testing/Data/Input/test_ge4/19771.002.004 bafkreic4zoyqnybqogydtkiwidosy3v6xwnofzjnofir7txgd553bel4zq Testing/Data/Input/test_ge4/19771.002.005 +bafkreiftiogu3h7dpyk55svoz6fw7ybzlfd3u3odancrs23rhgljrbjvdq Testing/Data/Input/test_ge4/19771.002.006 bafkreiecl6v2p36p5ewgmmptvjajopa2bod3bcnqdgq2rosq4nmd25fl3e Testing/Data/Input/test_ge5/113766.003.001 bafkreicbywnrrjcl2wehhbqmff73bjcwwoucopxutj53g5virc5x2qal6m Testing/Data/Input/test_ge5/113766.003.002 +bafkreihvzsg2qtvsy7pbdry25tzm5gzjqwyo5gyfw36vix26chj5eu4oe4 Testing/Data/Input/test_ge5/113766.003.003 +bafkreiffchdk6cqi2tkyysxfwbaw2kqit6k7fq7exnsbopn76ehrtp2jfq Testing/Data/Input/test_ge5/113766.003.004 bafkreiafcd4siu7wrrm7c6k5ou5a7wm4p2j7iyczgngjh5h5a74rmk4eem Testing/Data/Input/test_ge5/113766.003.005 bafkreicv562xhqs7mdeasawxh5p5kjnhua4boomkvjp2i4ob6fskhvnv5i Testing/Data/Input/test_ge5/113766.003.006 bafkreickr2fah2h2eow544t5z3p6ilp26kts7ons6v4tgcebrtnrcosxdu Testing/Data/Input/test_geadw/I.001 bafkreicehz2rvpsyxmt2qqnofyqvlvzhcr2klv67oj3fpbmrmm65hjdxg4 Testing/Data/Input/test_geadw/I.002 bafkreibcl2o24ifudyyg7chregazecpaubgh3whbmzdkqd6uew65chvzzu Testing/Data/Input/test_geadw/I.003 +bafkreihfgwvaxrzkhv5ijvfk7dv3mv7bbjnqnbv7zsy5lz6dhcronwblba Testing/Data/Input/test_geadw/I.004 +bafkreifdtolneaocrmvswpfyinradjcxd4j67mib635eas4ppdgduer7ze Testing/Data/Input/test_geadw/I.005 +bafkreiglbqdig5efejasqiaojcxnf4ae22vhooifkdhhdzqjfsvwzfclim Testing/Data/Input/test_geadw/I.006 +bafkreiee6lf4vw7mtxb7pl3qnwy4lvchkexr5vkcfshpbekw7rnbs3jnwu Testing/Data/Input/test_siemens/3868-2-100.ima bafkreic2vrkdkxhofmxigr7lgwr4dmfazgpgeex4pqisi7dalpou6k3cku Testing/Data/Input/test_siemens/3868-2-101.ima bafkreicrzykil4y5saxyhfrmjnow4sbcgsumthxttfoiigi74rtkwrbo3y Testing/Data/Input/test_siemens/3868-2-102.ima bafkreiabct5y5d3w6ktiwvrasown3g33zbeb3wgemuqn7ucocq2ajchvn4 Testing/Data/Input/test_siemens/3868-2-103.ima +bafkreig2ki726vm3c7urohj4i6q5yavbluyqud2zdpptay3beeczpilu6m Testing/Data/Input/test_siemens/3868-2-104.ima bafkreie2uiz6ykfo5b5ipcy7pzmtwlkzyelfma6kzx6uvcjz65vlejr3oy Testing/Data/Input/test_siemens/3868-2-105.ima +bafkreihux37qymavmg46huubmhwnf7gtcuwqjh4lqxuml6yl32h3xbsjcy Testing/Data/Input/testrgb-0.nhdr +bafkreiecmkdsinkyjclkkndyuksb4skzwwihu4m7rijr3emtei5ezmd2g4 Testing/Data/Input/testrgb-0.raw +bafkreieih7gxzjssjld36dovkkx24lq7mg3jgjixdmwdbkcvorbjvm3jqi Testing/Data/Input/testrgb-1.nhdr bafkreidsru4x6dpwhfiezmb7cvasclio7bfllcv7tvqr5za7f2dhjrmmvu Testing/Data/Input/testrgb-1.raw bafkreiawz7ry7jt6jxhmdqd7p7a2fjpz6xrj3z2ngrcdllxmrsgyzjuw44 Testing/Data/Input/testrgb-2.nhdr +bafkreiefdtv2n2kqq2dyaqatvf2rfofxcd4byxwdjdiapktac5e6ti2zse Testing/Data/Input/testrgb-2.raw bafkreiaih4ngm2xyi6yi72mvqfanvzcu2my7umdjrfw455kpueuzmbho3a Testing/Data/Input/testrgba.nrrd +bafkreihquufngmwramml4zn2wbmxunacvwnwhm3j6mvypo5jmavxjwxqoe Testing/Data/Input/tetrahedron.vtk +bafkreigzfnt3ol5cw5cff2yvurwbfa2naqtuw2vwif36qyzjgzhminotii Testing/Data/Input/thick-lines.png bafkreiclja3q74oxpulnhupowm5caitc2ejup4l22twvrz6ppixvhhuy2a Testing/Data/Input/tilt_series_big.mrc bafkreiatzfmbxkx3pvrhmmjiu45fx6ycbkkwwws7h753omhcxa3qial3ze Testing/Data/Input/tilt_series_little.mrc +bafkreif6rd42wbx77artdqzi3cloyubow7juckow46t5vqs2coixysgiem Testing/Data/Input/vol-ascii.ascii +bafkreig5yzhzkv6zxavyyrdg7n7uwcp3jameukkxg74kqloa2sx77rbuae Testing/Data/Input/vol-ascii.nhdr bafkreic7a67wtvnpp7xlu4yzqkeiwh4nkvdlpmnenmxzmxd3v5qexs77de Testing/Data/Input/vol-ascii.nrrd bafkreie7hxmnxeyagogkweyikpjeri3kvgpkwxnwdlijkk2kf7tojapc34 Testing/Data/Input/vol-gzip-big.nhdr bafkreiabp5bbsgyem2leiwwvclhtezvl2bqthpmclgl7mujdmwwoupduly Testing/Data/Input/vol-gzip-big.nrrd bafkreibgrckx4xhyefx7w74aj7amfzosfe4v6y6rxinctucrhllsz6ns4y Testing/Data/Input/vol-gzip-big.raw.gz bafkreidtxgukzsttdbbw3jsykxob7ixbjpw3zpw2qkcdqxarsr2oua3rvi Testing/Data/Input/vol-gzip-little.nhdr bafkreiaj7adkflxcpouflo7z3trpxqmxuuaj2bxkgp7ixevpkadwzwq54y Testing/Data/Input/vol-gzip-little.nrrd +bafkreihkwgwddcb4regsvd3yqjewap34ssbc5y6fsagzgtsqcbhamtotja Testing/Data/Input/vol-gzip-little.raw.gz +bafkreigbxemwfndlcxczvmzumjb5bwo7otkl7o65ja7uh43uuv2kk6yiue Testing/Data/Input/vol-raw-big.nhdr bafkreiani5dcsbrgcnvcq2vdoqpuaemyfvem5mn725jjnk5aar7qi75iha Testing/Data/Input/vol-raw-big.nrrd +bafkreigis33lykqlj3eh7fwdg6slditqf6wvux6uxlqs4la74eljig5nee Testing/Data/Input/vol-raw-big.raw bafkreidaur5cvmokmm4ukuty3k4qwbvmkyfez4wtzcmwkn7t6oyzibl4ri Testing/Data/Input/vol-raw-little.nhdr bafkreic5vva2t5fdotrog2d4rufwe47oyt2gexjshc42ron5flw4jobrmq Testing/Data/Input/vol-raw-little.nrrd bafkreie3krk647ehcxofowy7j3nal2alcsz4jm7zc6ds7ulhtfzvrjyrji Testing/Data/Input/vol-raw-little.raw bafkreidscgxnze7fpjhbsyqubyjg2g255ycexl34jop34rcez3ktkvcpxu Testing/Data/Input/vtkPolyDataBad0.vtk +bafkreif7raf7mfqhbxj6joxity6qqe2vggjoglw6fggrxj6v4zrqrxv54u Testing/Data/Input/vtkPolyDataBad1.vtk bafkreiak7yqtd44rtoeaxpnvpm5sqxwlp4uucdrlwe3upgesbh6l7e4ss4 Testing/Data/Input/vtkPolyDataBad10.vtk +bafkreiet4of2ff5p6detwx2sg6bsxftltk3to2lll75jsrkwm5wlyqtkq4 Testing/Data/Input/vtkPolyDataBad11.vtk bafkreiaq7vjyl62cqdtrbvxbaz3inlzulawmscuur6smxq72xa4ogmvsiy Testing/Data/Input/vtkPolyDataBad12.vtk bafkreiebh4n26stwks3qiqqa5y2l2exmodw42ob5j3gy5qu7qcrbvfqjny Testing/Data/Input/vtkPolyDataBad13.vtk bafkreiappp5o3istpjgnvbmu25nxlssnq3ia4hxs7du7mzny42bzagszqu Testing/Data/Input/vtkPolyDataBad14.vtk bafkreidcoxfjaqpeish7wnftdwgslittk6cpcn3d5uu4t3bk36pk6acyye Testing/Data/Input/vtkPolyDataBad15.vtk +bafkreihipfalhhhaa4ccjnrqt7cpa22t4w6532cdhhhur37kyu3esaotjm Testing/Data/Input/vtkPolyDataBad16.vtk bafkreicflfkb27ejhagxb6cgkos7tfgtafecbyw2fkam2ibtopcu22kqru Testing/Data/Input/vtkPolyDataBad17.vtk bafkreibw6plrw2mto4fzkvnewwrqw2qo3wguxjgiuzy22v3j2i7h66zz6a Testing/Data/Input/vtkPolyDataBad2.vtk bafkreibh4zslddv3exzhvu7vhwagv4drk65peowia2l4fietc3wjyup4zy Testing/Data/Input/vtkPolyDataBad3.vtk +bafkreied4sl4hv3j6yexdz6e3ulc56t47oe7eykssxekgs4liuip65vknu Testing/Data/Input/vtkPolyDataBad4.vtk bafkreibmk5ifogwqnuhj7644efuq4td66otyuxukvimpp6pokogd5l6tme Testing/Data/Input/vtkPolyDataBad5.vtk +bafkreiflx6ggx62ihddw54pi632phckgyhu2yoe3abysgpzzno5wnwg6ly Testing/Data/Input/vtkPolyDataBad6.vtk bafkreicczftwtwomlw7a66aa47cns3cswmxgs4myisjnrrk4csqwyb7b74 Testing/Data/Input/vtkPolyDataBad7.vtk bafkreidgbnybvdbqxeho3wugi7dguf6bhae45wj7enplc54emxhisaezwy Testing/Data/Input/vtkPolyDataBad8.vtk +bafkreiegj4aod6kw6d7735vfpxtkw3rlcu3mgwqyuksaj6rf6gu2j66gcy Testing/Data/Input/vtkPolyDataBad9.vtk bafkreicumosfeby44q3brkjv26v5jyugq7svqy5njjngku33bw4j5remye Testing/Data/Input/whiteSpot.png bafkreiawchmkmudnmnb3eaiczohdht4354da6y34w4uf7rgq3zjfucvcje Wrapping/images/2th_cthead1.png +bafkreihshmjsfrysjbqxgqn3igzrfrqmeixlmxc5a3pz2gqjholoixq5xe Wrapping/images/BrainProtonDensitySlice.png bafkreid2daqt7b65x7id6zg2uvhs7uybz3pfu2gl5mla44rwj5eb6nbvc4 Wrapping/images/TestVLV.seg.nrrd +bafkreihamtumphomvhhiliqndovcfaor4bmlgbx4molf2lhg53dqxw4hba Wrapping/images/VentricleModel.png bafkreiavbnqshfqacjimpct2aikxtkkwxjkyj73hicamjyeaak754qofw4 Wrapping/images/VisibleWomanEyeSlice.png +bafkreieilrgrns7xcna5yle2yw3q2wxkl3wn7lp22k4d4pwjhlhwc3ed4u Wrapping/images/cthead1.png +bafkreigoukhx5poqgmguzjimdibgl3zhmcauasyca2g6g2fliwzzcveyjy Wrapping/images/r16slice.nii.gz +bafkreigvn5oqo4nq2wr6ri2w3rewjebnyh4nac65lrjlpnfscibglg6ylm Wrapping/images/sourceImage.nii.gz bafkreicwiikwxij2sgwhw6phxmnbk2rc27rqn5mfk67sg7lfdaxril3zie Wrapping/images/templated_pipeline.png +bafkreigfms4bvhlnxis5yyfcusaiz6gyyvhr4zhrrcjbrgiwa5sbvpotyy Wrapping/images/warp2D.nii.gz bafybeidgydpaoeu6qv4jupn3apal7ri47zr2q2qar435d3l4mdri66opby Wrapping/images/warp3D.nii.gz From ce864b722b3b83bab255e130f0e16f2f732b864c Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 13:23:42 -0400 Subject: [PATCH 18/23] DOC: Clarify that Fileabse S3 Compatible API is called "Access token" In the web interface. --- Documentation/docs/contributing/data.md | 2 +- Utilities/Maintenance/ExternalDataUpload/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/docs/contributing/data.md b/Documentation/docs/contributing/data.md index adab0e5e701..0009614371d 100644 --- a/Documentation/docs/contributing/data.md +++ b/Documentation/docs/contributing/data.md @@ -70,7 +70,7 @@ documented in [`Utilities/Maintenance/ExternalDataUpload/README.md`] before the helper will succeed. Contributors who prefer not to run any local tooling can instead use the [content-link-upload] web app, which returns a `.cid` -file directly — manifest and mirror updates must then be added by hand. +file directly. For more details, see the description and procedures in [Upload Binary Data]. diff --git a/Utilities/Maintenance/ExternalDataUpload/README.md b/Utilities/Maintenance/ExternalDataUpload/README.md index 9b68c882889..0641a1c52c5 100644 --- a/Utilities/Maintenance/ExternalDataUpload/README.md +++ b/Utilities/Maintenance/ExternalDataUpload/README.md @@ -81,7 +81,7 @@ cache; subsequent runs are offline. The helper scripts read three environment variables: ```bash -export FILEBASE_ACCESS_KEY=... # S3 access key +export FILEBASE_ACCESS_KEY=... # S3 access token export FILEBASE_SECRET_KEY=... # S3 secret key export FILEBASE_BUCKET=itk-data # bucket name from step 2 ``` From cd4c47ee58fc893eea59265143892b602926d602 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 13:26:48 -0400 Subject: [PATCH 19/23] COMP: Update pixi.lock for external-data-upload entries Added for the external-data-upload environment. --- pixi.lock | 1898 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1894 insertions(+), 4 deletions(-) diff --git a/pixi.lock b/pixi.lock index a08b65346a3..6f74fdfd969 100644 --- a/pixi.lock +++ b/pixi.lock @@ -612,6 +612,240 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + external-data-upload: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py313h18e8e13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-25.8.2-he4ff34a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.13-h6add32d_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.5.0-py313h5c42d0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20260107.1-cxx17_h6983b43_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.0-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-25.8.2-hfb02533_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.13-h11c0449_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.5.0-py313h116f8bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.5-h19cb2f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.0-hcc62823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.1-h8f8c405_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nodejs-25.8.2-hf3170e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.2-hc881268_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.13-h3d5d122_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py313h7208f8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-25.8.2-h7039424_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.13-h20e6be0_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.5.0-py313h2a31948_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py313h3ebfc14_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.0-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.1-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nodejs-25.8.2-h80d1838_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.2-hf411b9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.13-h09917c8_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.5-h1b7c187_36.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.51.36231-h1b9f54f_36.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36231-h1b9f54f_36.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda pre-commit: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1140,6 +1374,19 @@ packages: license: None size: 2562 timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28948 + timestamp: 1770939786096 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 @@ -1153,6 +1400,18 @@ packages: license_family: BSD size: 23621 timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.5.0-py313h18e8e13_0.conda + sha256: 310e114a783b249517d1dd6e74b3f339af30e947bc93446ae4e4e9c86fff7478 + md5: 0de0c2c1f2677ea074bdda91de5a4c01 + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 242514 + timestamp: 1778594045042 - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_4.conda sha256: 682ba640d2263a283adf69dfe81f53272bc381102ee5007debf9f9be8934fbd9 md5: b2d29f14e7e7a5e8f4ef9a089a233f38 @@ -1182,6 +1441,21 @@ packages: license_family: GPL size: 36084 timestamp: 1761335225100 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + sha256: dadec2879492adede0a9af0191203f9b023f788c18efd45ecac676d424c458ae + md5: 6c4d3597cf43f3439a51b2b13e29a4ba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 hb03c661_1 + license: MIT + license_family: MIT + size: 367721 + timestamp: 1764017371123 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5 md5: 51a19bba1b8ebfb60df25cde030b7ebc @@ -1192,6 +1466,16 @@ packages: license_family: BSD size: 260341 timestamp: 1757437258798 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 260182 + timestamp: 1771350215188 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb md5: f7f0d6cc2dc986d42ac2689ec88192be @@ -1202,6 +1486,16 @@ packages: license_family: MIT size: 206884 timestamp: 1744127994291 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e + md5: 920bb03579f15389b9e512095ad995b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 207882 + timestamp: 1765214722852 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda sha256: 8e7a40f16400d7839c82581410aa05c1f8324a693c9d50079f8c50dc9fb241f0 md5: abd85120de1187b0d1ec305c2173c71b @@ -1337,6 +1631,17 @@ packages: license_family: BSD size: 27050 timestamp: 1759866571696 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a + md5: c80d8a3b84358cb967fa81e7075fbc8a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12723451 + timestamp: 1773822285671 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 md5: b38117a3c920364aff79f870c984b4a3 @@ -1372,6 +1677,32 @@ packages: license_family: GPL size: 742501 timestamp: 1761335175964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda + sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c + md5: 18335a698559cdbcd86150a48bf54ba6 + depends: + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 728002 + timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239 + md5: 6f7b4302263347698fd24565fbf11310 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + size: 1384817 + timestamp: 1770863194876 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-38_h4a7cf45_openblas.conda build_number: 38 sha256: b26a32302194e05fa395d5135699fd04a905c6ad71f24333f97c64874e053623 @@ -1389,6 +1720,38 @@ packages: license_family: BSD size: 17522 timestamp: 1761680084434 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + sha256: 318f36bd49ca8ad85e6478bd8506c88d82454cc008c1ac1c6bf00a3c42fa610e + md5: 72c8fd1af66bd67bf580645b426513ed + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 79965 + timestamp: 1764017188531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + sha256: 12fff21d38f98bc446d82baa890e01fd82e3b750378fedc720ff93522ffb752b + md5: 366b40a69f0ad6072561c1d09301c886 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 34632 + timestamp: 1764017199083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + sha256: a0c15c79997820bbd3fbc8ecf146f4fe0eca36cc60b62b63ac6cf78857f1dd0d + md5: 4ffbb341c8b616aa2494b6afb26a0c5f + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 hb03c661_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 298378 + timestamp: 1764017210931 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-38_h0358290_openblas.conda build_number: 38 sha256: 7fe653f45c01eb16d7b48ad934b068dad2885d6f4a7c41512b6a5f1f522bffe9 @@ -1452,6 +1815,28 @@ packages: license_family: MIT size: 74811 timestamp: 1752719572741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.0-hecca717_0.conda + sha256: ea33c40977ea7a2c3658c522230058395bc2ee0d89d99f0711390b6a1ee80d12 + md5: a3b390520c563d78cc58974de95a03e5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.8.0.* + license: MIT + license_family: MIT + size: 77241 + timestamp: 1777846112704 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + size: 58592 + timestamp: 1769456073053 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 md5: 35f29eec58405aaf55e01cb470d8c26a @@ -1475,6 +1860,28 @@ packages: license_family: GPL size: 822552 timestamp: 1759968052178 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 + md5: 57736f29cc2b0ec0b6c2952d3f101b6a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_19 + - libgomp 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1041084 + timestamp: 1778269013026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 + md5: 331ee9b72b9dff570d56b1302c5ab37d + depends: + - libgcc 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27694 + timestamp: 1778269016987 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda sha256: 2045066dd8e6e58aaf5ae2b722fb6dfdbb57c862b5f34ac7bfb58c40ef39b6ad md5: 280ea6eee9e2ddefde25ff799c4f0363 @@ -1516,6 +1923,15 @@ packages: license_family: GPL size: 447919 timestamp: 1759967942498 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b + md5: faac990cb7aedc7f3a2224f2c9b0c26c + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 603817 + timestamp: 1778268942614 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-38_h47877c9_openblas.conda build_number: 38 sha256: 63d6073dd4f82ab46943ad99a22fc4edda83b0f8fe6170bdaba7a43352bed007 @@ -1541,6 +1957,27 @@ packages: license: 0BSD size: 112894 timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d + md5: b88d90cad08e6bc8ad540cb310a761fb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 113478 + timestamp: 1775825492909 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 92400 + timestamp: 1769482286018 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee md5: c7e925f37e3b40d893459e625f6a53f1 @@ -1567,6 +2004,22 @@ packages: license_family: MIT size: 666600 timestamp: 1756834976695 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda + sha256: 663444d77a42f2265f54fb8b48c5450bfff4388d9c0f8253dd7855f0d993153f + md5: 2a45e7f8af083626f009645a6481f12d + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 663344 + timestamp: 1773854035739 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_3.conda sha256: 200899e5acc01fa29550d2782258d9cf33e55ce4cbce8faed9c6fe0b774852aa md5: ac2e4832427d6b159576e8a68305c722 @@ -1602,6 +2055,16 @@ packages: license: blessing size: 932581 timestamp: 1753948484112 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda + sha256: 54cdcd3214313b62c2a8ee277e6f42150d9b748264c1b70d958bf735e420ef8d + md5: 7dc38adcbf71e6b38748e919e16e0dce + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 954962 + timestamp: 1777986471789 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 md5: eecce068c7e4eddeb169591baac20ac4 @@ -1626,6 +2089,18 @@ packages: license_family: GPL size: 3898269 timestamp: 1759968103436 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc + md5: 5794b3bdc38177caf969dabd3af08549 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_19 + constrains: + - libstdcxx-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5852044 + timestamp: 1778269036376 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda sha256: 024fd46ac3ea8032a5ec3ea7b91c4c235701a8bf0e6520fe5e6539992a6bd05f md5: f627678cf829bd70bccf141a19c3ad3e @@ -1645,6 +2120,15 @@ packages: license_family: BSD size: 37135 timestamp: 1758626800002 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda + sha256: 3f0edf1280e2f6684a986f821eaa3e123d2694a00b31b96ca0d4a4c12c129231 + md5: 7d0a66598195ef00b6efc55aefc7453b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-3-Clause + size: 40163 + timestamp: 1779118517630 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b md5: 0f03292cc56bf91a077a134ea8747118 @@ -1667,6 +2151,17 @@ packages: license_family: Other size: 60963 timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 + md5: d87ff7921124eccd67248aa483c23fec + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 63629 + timestamp: 1774072609062 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -1676,6 +2171,15 @@ packages: license: X11 AND BSD-3-Clause size: 891641 timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 + md5: fc21868a1a5aacc937e7a18747acb8a5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: X11 AND BSD-3-Clause + size: 918956 + timestamp: 1777422145199 - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.1-h171cf75_0.conda sha256: 1522b6d4a55af3b5a4475db63a608aad4c250af9f05050064298dcebe5957d38 md5: 6567fa1d9ca189076d9443a0b125541c @@ -1687,6 +2191,30 @@ packages: license_family: APACHE size: 186326 timestamp: 1752218296032 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-25.8.2-he4ff34a_0.conda + sha256: d1a673d1418d9e956b6e4e46c23e72a511c5c1d45dc5519c947457427036d5e2 + md5: baffb1570b3918c784d4490babc52fbf + depends: + - libgcc >=14 + - libstdcxx >=14 + - __glibc >=2.28,<3.0.a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libuv >=1.51.0,<2.0a0 + - c-ares >=1.34.6,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - libsqlite >=3.52.0,<4.0a0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + - zstd >=1.5.7,<1.6.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + license: MIT + license_family: MIT + size: 18829340 + timestamp: 1774514313036 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.4-py313hf6604e3_0.conda sha256: 41084b68fbbcbaba0bce28872ec338371f4ccbe40a5464eb8bed2c694197faa5 md5: c47c527e215377958d28c470ce4863e1 @@ -1717,6 +2245,43 @@ packages: license_family: Apache size: 3119624 timestamp: 1759324353651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda + sha256: c0ef482280e38c71a08ad6d71448194b719630345b0c9c60744a2010e8a8e0cb + md5: da1b85b6a87e141f5140bb9924cecab0 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3167099 + timestamp: 1775587756857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.13-h6add32d_100_cp313.conda + build_number: 100 + sha256: 7f77eb57648f545c1f58e10035d0d9d66b0a0efb7c4b58d3ed89ec7269afdde1 + md5: 05051be49267378d2fcd12931e319ac3 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuuid >=2.42,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 37358322 + timestamp: 1775614712638 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-hc97d973_101_cp313.conda build_number: 101 sha256: e89da062abd0d3e76c8d3b35d3cafc5f0d05914339dcb238f9e3675f2a58d883 @@ -1766,6 +2331,17 @@ packages: license_family: GPL size: 282480 timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 345073 + timestamp: 1765813471974 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 md5: c1c9b02933fdb2cfb791d936c20e887e @@ -1776,6 +2352,19 @@ packages: license_family: MIT size: 193775 timestamp: 1748644872902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3301196 + timestamp: 1769460227866 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 md5: a0116df4f4ed05c303811a837d5b39d8 @@ -1811,6 +2400,16 @@ packages: license_family: MIT size: 85189 timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 + md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 + depends: + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 601375 + timestamp: 1764777111296 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 @@ -1823,6 +2422,18 @@ packages: license_family: BSD size: 567578 timestamp: 1742433379869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 + md5: 468fd3bb9e1f671d36c2cbc677e56f1d + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 28926 + timestamp: 1770939656741 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 @@ -1835,6 +2446,17 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.5.0-py313h5c42d0f_0.conda + sha256: 18188329658487e5bcf347c05a3bd54d79ab1cd6a225c635ee490a0253b14e45 + md5: 5c578c27b3e1de6eca8d5835d7079aad + depends: + - python + - libgcc >=14 + - python_abi 3.13.* *_cp313 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 244976 + timestamp: 1778594051726 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.44-hf1166c9_4.conda sha256: bc9347cefd94d1e7739ddc744666e183e4067039d1d280db6e1de3d4d2aa3922 md5: 39f6e726e80f1f3344c32e18753b8c76 @@ -1864,6 +2486,21 @@ packages: license_family: GPL size: 36241 timestamp: 1761335356045 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py313hb260801_1.conda + sha256: 5fe27389162240ab9a5cd8d112d51bdd9019f9a68c5593b5298e54f0437f714f + md5: 523c55147ba15d3e0e0cdb9f67cda339 + depends: + - libgcc >=14 + - libstdcxx >=14 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 he30d5cf_1 + license: MIT + license_family: MIT + size: 372678 + timestamp: 1764017653333 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_8.conda sha256: d2a296aa0b5f38ed9c264def6cf775c0ccb0f110ae156fcde322f3eccebf2e01 md5: 2921ac0b541bf37c69e66bd6d9a43bca @@ -1873,6 +2510,15 @@ packages: license_family: BSD size: 192536 timestamp: 1757437302703 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda + sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c + md5: 840d8fc0d7b3209be93080bc20e07f2d + depends: + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + size: 192412 + timestamp: 1771350241232 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.5-h86ecc28_0.conda sha256: ccae98c665d86723993d4cb0b456bd23804af5b0645052c09a31c9634eebc8df md5: 5deaa903d46d62a1f8077ad359c3062e @@ -1882,6 +2528,15 @@ packages: license_family: MIT size: 215950 timestamp: 1744127972012 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + sha256: 7ec8a68efe479e2e298558cbc2e79d29430d5c7508254268818c0ae19b206519 + md5: 1dfbec0d08f112103405756181304c16 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 217215 + timestamp: 1765214743735 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda sha256: a16c5078619d60e54f75336ed2bbb4ee0fb6f711de02dd364983748beda31e04 md5: 89bc32110bba0dc160bb69427e196dc4 @@ -2015,6 +2670,16 @@ packages: license_family: BSD size: 26837 timestamp: 1759866521559 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda + sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 + md5: 546da38c2fa9efacf203e2ad3f987c59 + depends: + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + size: 12837286 + timestamp: 1773822650615 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda sha256: 5ce830ca274b67de11a7075430a72020c1fb7d486161a82839be15c2b84e9988 md5: e7df0aab10b9cbb73ab2a467ebfaf8c7 @@ -2048,6 +2713,30 @@ packages: license_family: GPL size: 787069 timestamp: 1761335309762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda + sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 + md5: a21644fc4a83da26452a718dc9468d5f + depends: + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-aarch64 2.45.1 + license: GPL-3.0-only + license_family: GPL + size: 875596 + timestamp: 1774197520746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20260107.1-cxx17_h6983b43_0.conda + sha256: 37675140819e10235a8ff342cb09f688f843ac390b64856d8e230700bbd7d5aa + md5: 2a19160c13e688710dd200812fc9a6d3 + depends: + - libgcc >=14 + - libstdcxx >=14 + constrains: + - abseil-cpp =20260107.1 + - libabseil-static =20260107.1=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1401836 + timestamp: 1770863223557 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-38_haddc8a3_openblas.conda build_number: 38 sha256: e99230887ecab5e7cd0f6db396b817fb6ad329534800a85cad54d48796325b64 @@ -2065,6 +2754,35 @@ packages: license_family: BSD size: 17557 timestamp: 1761680163290 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.2.0-he30d5cf_1.conda + sha256: 5fa8c163c8d776503aa68cdaf798ff9440c76a0a1c3ea84e0c43dbf1ece8af4d + md5: 8ec1d03f3000108899d1799d9964f281 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 80030 + timestamp: 1764017273715 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda + sha256: 494365e8f58799ea95a6e82334ef696e9c2120aecd6626121694b30a15033301 + md5: 47e5b71b77bb8b47b4ecf9659492977f + depends: + - libbrotlicommon 1.2.0 he30d5cf_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 33166 + timestamp: 1764017282936 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda + sha256: f998c03257b9aa1f7464446af2cf424862f0e54258a2a588309853e45ae771df + md5: 6553a5d017fe14859ea8a4e6ea5def8f + depends: + - libbrotlicommon 1.2.0 he30d5cf_1 + - libgcc >=14 + license: MIT + license_family: MIT + size: 309304 + timestamp: 1764017292044 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-38_hd72aa62_openblas.conda build_number: 38 sha256: 249e8ba4c134405e2a62dc1272e989043f6acb2c755319bfaf7841400e3d9d71 @@ -2125,15 +2843,47 @@ packages: license_family: MIT size: 74309 timestamp: 1752719762749 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda - sha256: 6c3332e78a975e092e54f87771611db81dcb5515a3847a3641021621de76caea - md5: 0c5ad486dcfb188885e3cf8ba209b97b +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.0-hfae3067_0.conda + sha256: 206c422a7f4b462d1dc17d558f0299088d0992bd3309ae83f5440fcc4f130602 + md5: 3bacd6171f0a3f8fddd06c3d5ae01955 depends: - libgcc >=14 + constrains: + - expat 2.8.0.* license: MIT license_family: MIT - size: 55586 + size: 76996 + timestamp: 1777846096032 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda + sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 + md5: 2f364feefb6a7c00423e80dcb12db62a + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 55952 + timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-hd65408f_0.conda + sha256: 6c3332e78a975e092e54f87771611db81dcb5515a3847a3641021621de76caea + md5: 0c5ad486dcfb188885e3cf8ba209b97b + depends: + - libgcc >=14 + license: MIT + license_family: MIT + size: 55586 timestamp: 1760295405021 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda + sha256: 4592b096e553f67799ae70d4b6167eeda3ec74587d68c7aecbf4e7b1df136681 + md5: f35b3f52d0a2ec4ffe3c89ba135cdb9a + depends: + - _openmp_mutex >=4.5 + constrains: + - libgomp 15.2.0 h8acb6b2_19 + - libgcc-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 622462 + timestamp: 1778268755949 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-he277a41_7.conda sha256: 616f5960930ad45b48c57f49c3adddefd9423674b331887ef0e69437798c214b md5: afa05d91f8d57dd30985827a09c21464 @@ -2146,6 +2896,15 @@ packages: license_family: GPL size: 510719 timestamp: 1759967448307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda + sha256: 1137f93f477f56199ded24117430045a0c02cbe8b10031beac3b9ad2138539d3 + md5: 770cf892e5530f43e63cadc673e85653 + depends: + - libgcc 15.2.0 h8acb6b2_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 27738 + timestamp: 1778268759211 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_7.conda sha256: 7d98979b2b5698330007b0146b8b4b95b3790378de12129ce13c9fc88c1ef45a md5: a5ce1f0a32f02c75c11580c5b2f9258a @@ -2177,6 +2936,13 @@ packages: license_family: GPL size: 1145738 timestamp: 1759967460371 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + sha256: 2370ef0ffcbae5bede3c4bf136add4abc257245eb91f724c99bb4a43116c5a83 + md5: c5e8a379c4a2ec2aea4ba22758c001d9 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 587387 + timestamp: 1778268674393 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-he277a41_7.conda sha256: 0a024f1e4796f5d90fb8e8555691dad1b3bdfc6ac3c2cd14d876e30f805fcac7 md5: 34cef4753287c36441f907d5fdd78d42 @@ -2208,6 +2974,16 @@ packages: license: 0BSD size: 125103 timestamp: 1749232230009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda + sha256: d61962b9cd54c3554361550203c64d5b65b71e3058a285b66e4b04b9769f0a5c + md5: 76298a9e6d71ee6e832a8d0d7373b261 + depends: + - libgcc >=14 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 126102 + timestamp: 1775828008518 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-h86ecc28_0.conda sha256: ef8697f934c80b347bf9d7ed45650928079e303bad01bd064995b0e3166d6e7a md5: 78cfed3f76d6f3f279736789d319af76 @@ -2217,6 +2993,15 @@ packages: license_family: BSD size: 114064 timestamp: 1748393729243 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda + sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 + md5: 7b9813e885482e3ccb1fa212b86d7fd0 + depends: + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + size: 114056 + timestamp: 1769482343003 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.67.0-ha888d0e_0.conda sha256: b03f406fd5c3f865a5e08c89b625245a9c4e026438fd1a445e45e6a0d69c2749 md5: 981082c1cc262f514a5a2cf37cab9b81 @@ -2232,6 +3017,21 @@ packages: license_family: MIT size: 728661 timestamp: 1756835019535 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda + sha256: 13782715b9eeebc4ad16d36e84ca569d1495e3516aea3fe546a32caa0a597d82 + md5: be5f0f007a4500a226ef001115535a3d + depends: + - c-ares >=1.34.6,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 726928 + timestamp: 1773854039807 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_3.conda sha256: 30d394f472905a01a0c1a5b1bbca1760d0d6c05f1da6e323d4ada3f631a0bea8 md5: 1613b69c1908764ea3243d0cfd69c055 @@ -2264,6 +3064,15 @@ packages: license: blessing size: 931661 timestamp: 1753948557036 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda + sha256: ad03b7d8e4d08001f0df88ee7a56108bb35bae4795a42b9a04cc1abfa822bd07 + md5: 2ec1119217d8f0d086e9a62f3cb0e5ea + depends: + - libgcc >=14 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 955361 + timestamp: 1777986487553 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda sha256: 1e289bcce4ee6a5817a19c66e296f3c644dcfa6e562e5c1cba807270798814e7 md5: eecc495bcfdd9da8058969656f916cc2 @@ -2286,6 +3095,17 @@ packages: license_family: GPL size: 3831785 timestamp: 1759967470295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda + sha256: 1dadc45e599f510dd5f97141dddcdbb9844d9f1430c1f3a38075cf1c58f87b4e + md5: 543fbc8d71f2a0baf04cf88ce96cb8bb + depends: + - libgcc 15.2.0 h8acb6b2_19 + constrains: + - libstdcxx-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 5546559 + timestamp: 1778268777463 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hf1166c9_7.conda sha256: 26fc1bdb39042f27302b363785fea6f6b9607f9c2f5eb949c6ae0bdbb8599574 md5: 9e5deec886ad32f3c6791b3b75c78681 @@ -2304,6 +3124,14 @@ packages: license_family: BSD size: 39172 timestamp: 1758626850999 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda + sha256: 1628839b062e98b2192857d4da8496ac9ac6b0dbb77aa040c34efc9192c440ee + md5: 0f42f9fedd2a32d798de95a7f65c456f + depends: + - libgcc >=14 + license: BSD-3-Clause + size: 43453 + timestamp: 1779118526838 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.51.0-he30d5cf_1.conda sha256: 7a0fb5638582efc887a18b7d270b0c4a6f6e681bf401cab25ebafa2482569e90 md5: 8e62bf5af966325ee416f19c6f14ffa3 @@ -2324,6 +3152,15 @@ packages: license_family: Other size: 66657 timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f + md5: 502006882cf5461adced436e410046d1 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 69833 + timestamp: 1774072605429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 md5: 182afabe009dc78d8b73100255ee6868 @@ -2332,6 +3169,14 @@ packages: license: X11 AND BSD-3-Clause size: 926034 timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda + sha256: 369db85c5cd8d99dde364ce70725d76511d9c8199e5b820c740414091bf5bcca + md5: b2a43456aa56fe80c2477a5094899eff + depends: + - libgcc >=14 + license: X11 AND BSD-3-Clause + size: 960036 + timestamp: 1777422174534 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.1-hdc560ac_0.conda sha256: a3f1ea64658be3faddd30dca61e00a8df1680500a571e9c0159b3c0eaa8b2274 md5: eff201e0dd7462df1f2a497cd0f1aa11 @@ -2342,6 +3187,30 @@ packages: license_family: APACHE size: 183057 timestamp: 1752218322983 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-25.8.2-hfb02533_0.conda + sha256: c8b2a1c6925f0ffbcbd6f462e7f7227f0ec1505c12dcabcda456d50040660a8d + md5: 723c200828e4f81bbeaf00fee03dd616 + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.28,<3.0.a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + - c-ares >=1.34.6,<2.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - libuv >=1.51.0,<2.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - icu >=78.3,<79.0a0 + license: MIT + license_family: MIT + size: 25141896 + timestamp: 1774515649240 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.3.4-py313h11e5ff7_0.conda sha256: 6f4f3ba2cf507f731c483d23aff44fe2238290fb46b38133e3eeef6bb9296a1a md5: 1f4179317764cd649c65159781171711 @@ -2370,6 +3239,41 @@ packages: license_family: Apache size: 3644584 timestamp: 1759326000128 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda + sha256: 348cb74c1530ac241215d047ef65d134cf797af935c97a68655319362b7e6a01 + md5: 3b129669089e4d6a5c6871dbb4669b99 + depends: + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + size: 3706406 + timestamp: 1775589602258 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.13-h11c0449_100_cp313.conda + build_number: 100 + sha256: d14e731e871d6379f8b82f3af5eb3382caa444880a9fc9d1d12033748277eb14 + md5: 81809cabd4647dee1127f2623a6a3005 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuuid >=2.42,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 34042952 + timestamp: 1775613691000 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.9-h4c0d347_101_cp313.conda build_number: 101 sha256: 95f11d8f8e8007ead0927ff15401a9a48a28df92b284f41a08824955c009e974 @@ -2418,6 +3322,16 @@ packages: license_family: GPL size: 291806 timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda + sha256: fe695f9d215e9a2e3dd0ca7f56435ab4df24f5504b83865e3d295df36e88d216 + md5: 3d49cad61f829f4f0e0611547a9cda12 + depends: + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 357597 + timestamp: 1765815673644 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda sha256: 0fe6f40213f2d8af4fcb7388eeb782a4e496c8bab32c189c3a34b37e8004e5a4 md5: 745d02c0c22ea2f28fbda2cb5dbec189 @@ -2427,6 +3341,18 @@ packages: license_family: MIT size: 207475 timestamp: 1748644952027 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 + md5: 7fc6affb9b01e567d2ef1d05b84aa6ed + depends: + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + size: 3368666 + timestamp: 1769464148928 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5688188_102.conda sha256: 46e10488e9254092c655257c18fcec0a9864043bdfbe935a9fbf4fb2028b8514 md5: 2562c9bfd1de3f9c590f0fe53858d85c @@ -2460,6 +3386,15 @@ packages: license_family: MIT size: 88088 timestamp: 1753484092643 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda + sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 + md5: c3655f82dcea2aa179b291e7099c1fcc + depends: + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 614429 + timestamp: 1764777145593 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_2.conda sha256: 0812e7b45f087cfdd288690ada718ce5e13e8263312e03b643dd7aa50d08b51b md5: 5be90c5a3e4b43c53e38f50a85e11527 @@ -2471,6 +3406,30 @@ packages: license_family: BSD size: 551176 timestamp: 1742433378347 +- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.43.9-pyhd8ed1ab_0.conda + sha256: c949c4e697116d3e19100986b371809f8cad29e18702c447da72c2c400fd54bd + md5: 85b2abe799885691c77e1ce505d99980 + depends: + - botocore >=1.43.9,<1.44.0 + - jmespath >=0.7.1,<2.0.0 + - python >=3.10 + - s3transfer >=0.17.0,<0.18.0 + license: Apache-2.0 + license_family: Apache + size: 85954 + timestamp: 1778958329530 +- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.43.10-pyhd8ed1ab_0.conda + sha256: 714e8a05b6a0217c6c17bd7c3186caf986c8ce8a5437393a591cb22cf908e0f6 + md5: f7248969cdbc3342d7c5a5e222fe9896 + depends: + - jmespath >=0.7.1,<2.0.0 + - python >=3.10 + - python-dateutil >=2.1,<3.0.0 + - urllib3 >=1.25.4,!=2.2.0,<3 + license: Apache-2.0 + license_family: Apache + size: 8708966 + timestamp: 1779203660056 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda sha256: bfb7f9f242f441fdcd80f1199edd2ecf09acea0f2bcef6f07d7cbb1a8131a345 md5: e54200a1cd1fe33d61c9df8d3b00b743 @@ -2487,6 +3446,30 @@ packages: license: ISC size: 155907 timestamp: 1759649036195 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-h4c7d964_0.conda + sha256: 6f4ff81534c19e76acf52fcabf4a258088a932b8f1ac56e9a59e98f6051f8e46 + md5: 56fb2c6c73efc627b40c77d14caecfba + depends: + - __win + license: ISC + size: 131388 + timestamp: 1776865633471 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + sha256: c9dbcc8039a52023660d6d1bbf87594a93dd69c6ac5a2a44323af2c92976728d + md5: e18ad67cf881dcadee8b8d9e2f8e5f73 + depends: + - __unix + license: ISC + size: 131039 + timestamp: 1776865545798 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda + sha256: 989db6e5957c4b44fa600c68c681ec2f36a55e48f7c7f1c073d5e91caa8cd878 + md5: 929471569c93acefb30282a22060dcd5 + depends: + - python >=3.10 + license: ISC + size: 135656 + timestamp: 1776866680878 - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f md5: 57df494053e17dce2ac3a0b33e1b2a2e @@ -2496,6 +3479,15 @@ packages: license_family: MIT size: 12973 timestamp: 1734267180483 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda + sha256: 3f9483d62ce24ecd063f8a5a714448445dc8d9e201147c46699fc0033e824457 + md5: a9167b9571f3baa9d448faa2139d1089 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 58872 + timestamp: 1775127203018 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -2555,6 +3547,36 @@ packages: license: Unlicense size: 17976 timestamp: 1759948208140 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 + md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 + depends: + - python >=3.10 + - hyperframe >=6.1,<7 + - hpack >=4.1,<5 + - python + license: MIT + license_family: MIT + size: 95967 + timestamp: 1756364871835 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.15-pyhd8ed1ab_0.conda sha256: 32d5007d12e5731867908cbf5345f5cd44a6c8755a2e8e63e15a184826a51f82 md5: 25f954b7dae6dd7b0dc004dab74f1ce9 @@ -2565,6 +3587,16 @@ packages: license_family: MIT size: 79151 timestamp: 1759437561529 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda + sha256: 9ab620e6f64bb67737bd7bc1ad6f480770124e304c6710617aba7fe60b089f48 + md5: fb7130c190f9b4ec91219840a05ba3ac + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + size: 59038 + timestamp: 1776947141407 - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 md5: 9614359868482abba1bd15ce465e3c42 @@ -2574,6 +3606,16 @@ packages: license_family: MIT size: 13387 timestamp: 1760831448842 +- conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda + sha256: 904d43d5210584004cf8b38f9657c717661ae55b0fb3f60573be974e50653fa1 + md5: cc73a9bd315659dc5307a5270f44786f + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 25946 + timestamp: 1769161799923 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda sha256: 305c22a251db227679343fd73bfde121e555d466af86e537847f4c8b9436be0d md5: ff007ab0f0fdc53d245972bba8a6d40c @@ -2700,6 +3742,27 @@ packages: license_family: BSD size: 889287 timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + size: 21784 + timestamp: 1733217448189 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.2-pyhd8ed1ab_0.conda sha256: 41053d9893e379a3133bb9b557b98a3d2142fca474fb6b964ba5d97515f78e2d md5: 1f987505580cb972cf28dc5f74a0f81b @@ -2718,6 +3781,17 @@ packages: license_family: MIT size: 276734 timestamp: 1757011891753 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 + depends: + - python >=3.9 + - six >=1.5 + - python + license: Apache-2.0 + license_family: APACHE + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -2728,6 +3802,32 @@ packages: license_family: BSD size: 7002 timestamp: 1752805902938 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da + md5: 4a85203c1d80c1059086ae860836ffb9 + depends: + - python >=3.10 + - certifi >=2023.5.7 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - urllib3 >=1.26,<3 + - python + constrains: + - chardet >=3.0.2,<8 + license: Apache-2.0 + license_family: APACHE + size: 68709 + timestamp: 1778851103479 +- conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.17.0-pyhd8ed1ab_0.conda + sha256: 848ed74bfe68c2f45f6de54186480df7c079b791b60db3b948d4eb7963f8621e + md5: 6f92735891911568fd92b40e0bb2d04e + depends: + - botocore >=1.37.4,<2.0a.0 + - python >=3.10 + license: Apache-2.0 + license_family: Apache + size: 67379 + timestamp: 1777547821065 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 md5: 4de79c071274a53dcaf2a8c749d1499e @@ -2737,6 +3837,16 @@ packages: license_family: MIT size: 748788 timestamp: 1748804951958 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d + md5: 3339e3b65d58accf4ca4fb8748ab16b3 + depends: + - python >=3.9 + - python + license: MIT + license_family: MIT + size: 18455 + timestamp: 1753199211006 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda sha256: 0053c17ffbd9f8af1a7f864995d70121c292e317804120be4667f37c92805426 md5: 1bad93f0aa428d618875ef3a588a889e @@ -2785,6 +3895,25 @@ packages: license: LicenseRef-Public-Domain size: 122968 timestamp: 1742727099393 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 + md5: cbb88288f74dbe6ada1c6c7d0a97223e + depends: + - backports.zstd >=1.0.0 + - brotli-python >=1.2.0 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.10 + license: MIT + license_family: MIT + size: 103560 + timestamp: 1778188657149 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.35.4-pyhd8ed1ab_0.conda sha256: 77193c99c6626c58446168d3700f9643d8c0dab1f6deb6b9dd039e6872781bfb md5: cfccfd4e8d9de82ed75c8e2c91cab375 @@ -2807,6 +3936,40 @@ packages: license_family: MIT size: 238764 timestamp: 1745560912727 +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 + depends: + - __win + - python >=3.9 + license: LicenseRef-Public-Domain + size: 9555 + timestamp: 1733130678956 +- conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.5.0-py313h116f8bd_0.conda + sha256: 0557fc0212f9ac1e7e754ac8baa6e7421fdd37246ad375aa9fd9632ce66c6d39 + md5: a5f2ea5a3424de52d369824dc639fe3f + depends: + - python + - __osx >=11.0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 243581 + timestamp: 1778594172497 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda + sha256: 3d328413ff65a12af493066d721d12f5ee82a0adf3565629ce4c797c4680162c + md5: 7c5e382b4d5161535f1dd258103fea51 + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 389859 + timestamp: 1764018040907 - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda sha256: 8f50b58efb29c710f3cecf2027a8d7325ba769ab10c746eff75cea3ac050b10c md5: 97c4b3bd8a90722104798175a1bdddbf @@ -2816,6 +3979,15 @@ packages: license_family: BSD size: 132607 timestamp: 1757437730085 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + sha256: 9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42 + md5: 4173ac3b19ec0a4f400b4f782910368b + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + size: 133427 + timestamp: 1771350680709 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda sha256: b37f5dacfe1c59e0a207c1d65489b760dff9ddb97b8df7126ceda01692ba6e97 md5: eafe5d9f1a8c514afe41e6e833f66dfd @@ -2825,6 +3997,15 @@ packages: license_family: MIT size: 184824 timestamp: 1744128064511 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + sha256: 2f5bc0292d595399df0d168355b4e9820affc8036792d6984bd751fdda2bcaea + md5: fc9a153c57c9f070bebaa7eef30a8f17 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 186122 + timestamp: 1765215100384 - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.11.0-h7a00415_0.conda sha256: 2bd1cf3d26789b7e1d04e914ccd169bd618fceed68abf7b6a305266b88dcf861 md5: 2b23ec416cef348192a5a17737ddee60 @@ -2995,6 +4176,15 @@ packages: license_family: BSD size: 6732 timestamp: 1753098827160 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda + sha256: 1294117122d55246bb83ad5b589e2a031aacdf2d0b1f99fd338aa4394f881735 + md5: 627eca44e62e2b665eeec57a984a7f00 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 12273764 + timestamp: 1773822733780 - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c md5: d4765c524b1d91567886bde656fb514b @@ -3039,6 +4229,19 @@ packages: license_family: Other size: 1111965 timestamp: 1762108478771 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda + sha256: 2b4ff36082ddfbacc47ac6e11d4dd9f3403cd109ce8d7f0fbee0cdd47cdef013 + md5: 317f40d7bd7bf6d54b56d4a5b5f5085d + depends: + - __osx >=10.13 + - libcxx >=19 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + size: 1217836 + timestamp: 1770863510112 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-38_he492b99_openblas.conda build_number: 38 sha256: 7005975d45fc0538d539f01760cba9132b8b341d4ee833dd2d3133ef6c19d7a9 @@ -3056,6 +4259,35 @@ packages: license_family: BSD size: 17666 timestamp: 1761680501294 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + sha256: 4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b + md5: f157c098841474579569c85a60ece586 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 78854 + timestamp: 1764017554982 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + sha256: 729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7 + md5: 63186ac7a8a24b3528b4b14f21c03f54 + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 30835 + timestamp: 1764017584474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + sha256: 8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401 + md5: 12a58fd3fc285ce20cf20edf21a0ff8f + depends: + - __osx >=10.13 + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + size: 310355 + timestamp: 1764017609985 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-38_h9b27e0a_openblas.conda build_number: 38 sha256: b7c393080aea5518cb87a1f1e44fd1b29f1564cf5f2610a2ddb575e582396779 @@ -3105,6 +4337,15 @@ packages: license_family: Apache size: 572306 timestamp: 1761852325847 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.5-h19cb2f5_1.conda + sha256: 8f3d495df4427d9285ae25a51d32123ca251c32abebcef020fddb8ac1f200894 + md5: 56fa8b3e43d26c97da88aea4e958f616 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 567420 + timestamp: 1778192020253 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-19.1.7-h7c275be_1.conda sha256: d1ee08b0614d8f9bca84aa91b4015c5efa96162fd865590a126544243699dfc6 md5: 0f3f15e69e98ce9b3307c1d8309d1659 @@ -3143,6 +4384,17 @@ packages: license_family: MIT size: 72450 timestamp: 1752719744781 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.0-hcc62823_0.conda + sha256: 5ebcc413d0a75da926a8b9b681d7d12c9562993991ba49c90a9881c4a59bdc11 + md5: d2e01f78c1daaeb4d2aa870125ebcd7e + depends: + - __osx >=11.0 + constrains: + - expat 2.8.0.* + license: MIT + license_family: MIT + size: 75242 + timestamp: 1777846416221 - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda sha256: 277dc89950f5d97f1683f26e362d6dca3c2efa16cb2f6fdb73d109effa1cd3d0 md5: d214916b24c625bcc459b245d509f22e @@ -3152,6 +4404,15 @@ packages: license_family: MIT size: 52573 timestamp: 1760295626449 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 + md5: 66a0dc7464927d0853b590b6f53ba3ea + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 53583 + timestamp: 1769456300951 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda sha256: 97551952312cf4954a7ad6ba3fd63c739eac65774fe96ddd121c67b5196a8689 md5: cd5393330bff47a00d37a117c65b65d0 @@ -3218,6 +4479,16 @@ packages: license: 0BSD size: 104826 timestamp: 1749230155443 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + sha256: d9e2006051529aec5578c6efeb13bb6a7200a014b2d5a77a579e83a8049d5f3c + md5: becdfbfe7049fa248e52aa37a9df09e2 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 105724 + timestamp: 1775826029494 - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda sha256: 98299c73c7a93cd4f5ff8bb7f43cd80389f08b5a27a296d806bdef7841cc9b9e md5: 18b81186a6adb43f000ad19ed7b70381 @@ -3227,6 +4498,15 @@ packages: license_family: BSD size: 77667 timestamp: 1748393757154 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + sha256: 1096c740109386607938ab9f09a7e9bca06d86770a284777586d6c378b8fb3fd + md5: ec88ba8a245855935b871a7324373105 + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + size: 79899 + timestamp: 1769482558610 - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda sha256: c48d7e1cc927aef83ff9c48ae34dd1d7495c6ccc1edc4a3a6ba6aff1624be9ac md5: e7630cef881b1174d40f3e69a883e55f @@ -3242,6 +4522,21 @@ packages: license_family: MIT size: 605680 timestamp: 1756835898134 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + sha256: 899551e16aac9dfb85bfc2fd98b655f4d1b7fea45720ec04ccb93d95b4d24798 + md5: dba4c95e2fe24adcae4b77ebf33559ae + depends: + - __osx >=11.0 + - c-ares >=1.34.6,<2.0a0 + - libcxx >=19 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 606749 + timestamp: 1773854765508 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_3.conda sha256: 209812edd396e0f395bee0a5628a8b77501e6671795c081455c27049e9a1c96a md5: e32aca8f732f7ea1ed876ffbec0d6347 @@ -3265,6 +4560,16 @@ packages: license: blessing size: 980121 timestamp: 1753948554003 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.1-h8f8c405_0.conda + sha256: 5e964e07a14180ce20decfd4897e8f81d48ec78c1cbf4af85c5520f535d9510c + md5: 9273c877f78b7486b0dfdd9268327a79 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 1007171 + timestamp: 1777987093870 - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 @@ -3326,6 +4631,17 @@ packages: license_family: Other size: 57133 timestamp: 1727963183990 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 + md5: 30439ff30578e504ee5e0b390afc8c65 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 59000 + timestamp: 1774073052242 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.4-h472b3d1_0.conda sha256: fe28e94eeab77587efe0b3c4ee9d539ad8ce1613c1d4e5f57858e9de2d821317 md5: 8c18393582f6e0750ece3fd3bb913101 @@ -3375,6 +4691,14 @@ packages: license: X11 AND BSD-3-Clause size: 822259 timestamp: 1738196181298 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + sha256: f5f7e006ff4271305ab4cc08eedd855c67a571793c3d18aff73f645f088a8cae + md5: 31b8740cf1b2588d4e61c81191004061 + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + size: 831711 + timestamp: 1777423052277 - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.13.1-h0ba0a54_0.conda sha256: e920fc52ab18d8bd03d26e9ffe6a44ae1683d2811eaef8289051a34b738a799a md5: 71576ca895305a20c73304fcb581ae1a @@ -3385,6 +4709,29 @@ packages: license_family: APACHE size: 177958 timestamp: 1752218300571 +- conda: https://conda.anaconda.org/conda-forge/osx-64/nodejs-25.8.2-hf3170e9_0.conda + sha256: 6e82ed9c2de2e5a472a9c25f7a4a3a296d33aa38b94151acbbb5a28754962d8d + md5: de36be6257a15d17e85c96b47d290f82 + depends: + - libcxx >=19 + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + - icu >=78.3,<79.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libuv >=1.51.0,<2.0a0 + - c-ares >=1.34.6,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: MIT + license_family: MIT + size: 18382168 + timestamp: 1774517889949 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.4-py313ha99c057_0.conda sha256: 97856ffabea4a84badba72515178ad9cf5e8def837203e97bf78a59ce21c8b5f md5: 8f1926ac8ba86847cde84b477b1bdf4d @@ -3412,6 +4759,39 @@ packages: license_family: Apache size: 2747108 timestamp: 1759326402264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.2-hc881268_0.conda + sha256: 334fd49ea31b99114f5afb1ec44555dc8c90640648302a4f8f838ee345d1ec50 + md5: 5cf0ece4375c73d7a5765e83565a69c7 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2776564 + timestamp: 1775589970694 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.13-h3d5d122_100_cp313.conda + build_number: 100 + sha256: 6f71b48fe93ebc0dd42c80358b75020f6ad12ed4772fb3555da36000139c0dc7 + md5: 8948c8c7c653ad668d55bbbd6836178b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 17650454 + timestamp: 1775616128232 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h17c18a5_101_cp313.conda build_number: 101 sha256: b56484229cf83f6c84e8b138dc53f7f2fa9ee850f42bf1f6d6fa1c03c044c2d3 @@ -3456,6 +4836,16 @@ packages: license_family: GPL size: 256712 timestamp: 1740379577668 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 + md5: eefd65452dfe7cce476a519bece46704 + depends: + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 317819 + timestamp: 1765813692798 - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda sha256: 65c946fc5a9bb71772a7ac9bad64ff08ac07f7d5311306c2dcc1647157b96706 md5: d0fcaaeff83dd4b6fb035c2f36df198b @@ -3485,6 +4875,16 @@ packages: license_family: MIT size: 221236 timestamp: 1725491044729 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda + sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b + md5: 6e6efb7463f8cef69dbcb4c2205bf60e + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3282953 + timestamp: 1769460532442 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc md5: 9864891a6946c2fe037c02fca7392ab4 @@ -3517,6 +4917,16 @@ packages: license_family: MIT size: 79419 timestamp: 1753484072608 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f + md5: 727109b184d680772e3122f40136d5ca + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 528148 + timestamp: 1764777156963 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca md5: cd60a4a5a8d6a476b30d8aa4bb49251a @@ -3527,6 +4937,32 @@ packages: license_family: BSD size: 485754 timestamp: 1742433356230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.5.0-py313h7208f8c_0.conda + sha256: 3ff16bb31de2cd6699804388337a6efa8a33c12850b5387b13ef38460ca605a3 + md5: 27b54f7bbc635f824806978d9d201573 + depends: + - python + - __osx >=11.0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 243876 + timestamp: 1778594074850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda + sha256: 2e21dccccd68bedd483300f9ab87a425645f6776e6e578e10e0dd98c946e1be9 + md5: b03732afa9f4f54634d94eb920dfb308 + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + size: 359568 + timestamp: 1764018359470 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda sha256: b456200636bd5fecb2bec63f7e0985ad2097cf1b83d60ce0b6968dffa6d02aa1 md5: 58fd217444c2a5701a44244faf518206 @@ -3536,6 +4972,15 @@ packages: license_family: BSD size: 125061 timestamp: 1757437486465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df + md5: 620b85a3f45526a8bc4d23fd78fc22f0 + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + size: 124834 + timestamp: 1771350416561 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda sha256: b4bb55d0806e41ffef94d0e3f3c97531f322b3cb0ca1f7cdf8e47f62538b7a2b md5: f8cd1beb98240c7edb1a95883360ccfa @@ -3545,6 +4990,15 @@ packages: license_family: MIT size: 179696 timestamp: 1744128058734 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + sha256: 2995f2aed4e53725e5efbc28199b46bf311c3cab2648fc4f10c2227d6d5fa196 + md5: bcb3cba70cf1eec964a03b4ba7775f01 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 180327 + timestamp: 1765215064054 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.11.0-h61f9b84_0.conda sha256: b51bd1551cfdf41500f732b4bd1e4e70fb1e74557165804a648f32fa9c671eec md5: 148516e0c9edf4e9331a4d53ae806a9b @@ -3725,6 +5179,15 @@ packages: license_family: MIT size: 11857802 timestamp: 1720853997952 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda + sha256: 3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5 + md5: f1182c91c0de31a7abd40cedf6a5ebef + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 12361647 + timestamp: 1773822915649 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b md5: c6dc8a0fdec13a0565936655c33069a1 @@ -3769,6 +5232,19 @@ packages: license_family: Other size: 1035237 timestamp: 1762108433243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda + sha256: 756611fbb8d2957a5b4635d9772bd8432cb6ddac05580a6284cca6fdc9b07fca + md5: bb65152e0d7c7178c0f1ee25692c9fd1 + depends: + - __osx >=11.0 + - libcxx >=19 + constrains: + - abseil-cpp =20260107.1 + - libabseil-static =20260107.1=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1229639 + timestamp: 1770863511331 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-38_h51639a9_openblas.conda build_number: 38 sha256: 1850e189ca9b623497b857cf905bb2c8d57c8a42de5aed63a9b0bd857a1af2ae @@ -3786,6 +5262,35 @@ packages: license_family: BSD size: 17695 timestamp: 1761680554564 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + sha256: a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229 + md5: 006e7ddd8a110771134fcc4e1e3a6ffa + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 79443 + timestamp: 1764017945924 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + sha256: 2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf + md5: 079e88933963f3f149054eec2c487bc2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + size: 29452 + timestamp: 1764017979099 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda + sha256: 01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1 + md5: b2b7c8288ca1a2d71ff97a8e6a1e8883 + depends: + - __osx >=11.0 + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + size: 290754 + timestamp: 1764018009077 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-38_hb0561ab_openblas.conda build_number: 38 sha256: 5ab5a9aa350a5838d91f0e4feed30f765cbea461ee9515bf214d459c3378a531 @@ -3835,6 +5340,15 @@ packages: license_family: Apache size: 568742 timestamp: 1761852287381 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.5-h55c6f16_1.conda + sha256: dddd01bd6b338221342a89530a1caffe6051a70cc8f8b1d8bb591d5447a3c603 + md5: ff484b683fecf1e875dfc7aa01d19796 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 569359 + timestamp: 1778191546305 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-19.1.7-h6dc3340_1.conda sha256: 6dd08a65b8ef162b058dc931aba3bdb6274ba5f05b6c86fbd0c23f2eafc7cc47 md5: 1399af81db60d441e7c6577307d5cf82 @@ -3873,6 +5387,26 @@ packages: license_family: MIT size: 65971 timestamp: 1752719657566 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda + sha256: f4b1cafc59afaede8fa0a2d9cf376840f1c553001acd72f6ead18bbc8ac8c49c + md5: 65466e82c09e888ca7560c11a97d5450 + depends: + - __osx >=11.0 + constrains: + - expat 2.8.0.* + license: MIT + license_family: MIT + size: 68789 + timestamp: 1777846180142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7 + md5: 43c04d9cb46ef176bb2a4c77e324d599 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 40979 + timestamp: 1769456747661 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda sha256: 9b8acdf42df61b7bfe8bdc545c016c29e61985e79748c64ad66df47dbc2e295f md5: 411ff7cd5d1472bba0f55c0faf04453b @@ -3948,6 +5482,16 @@ packages: license: 0BSD size: 92286 timestamp: 1749230283517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda + sha256: 34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e + md5: b1fd823b5ae54fbec272cea0811bd8a9 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 92472 + timestamp: 1775825802659 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2 md5: 85ccccb47823dd9f7a99d2c7f530342f @@ -3957,6 +5501,15 @@ packages: license_family: BSD size: 71829 timestamp: 1748393749336 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 + md5: 57c4be259f5e0b99a5983799a228ae55 + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + size: 73690 + timestamp: 1769482560514 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda sha256: a07cb53b5ffa2d5a18afc6fd5a526a5a53dd9523fbc022148bd2f9395697c46d md5: a4b4dd73c67df470d091312ab87bf6ae @@ -3972,6 +5525,21 @@ packages: license_family: MIT size: 575454 timestamp: 1756835746393 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda + sha256: 2bc7bc3978066f2c274ebcbf711850cc9ab92e023e433b9631958a098d11e10a + md5: 6ea18834adbc3b33df9bd9fb45eaf95b + depends: + - __osx >=11.0 + - c-ares >=1.34.6,<2.0a0 + - libcxx >=19 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + size: 576526 + timestamp: 1773854624224 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_3.conda sha256: dcc626c7103503d1dfc0371687ad553cb948b8ed0249c2a721147bdeb8db4a73 md5: a18a7f471c517062ee71b843ef95eb8a @@ -3996,6 +5564,15 @@ packages: license: blessing size: 902645 timestamp: 1753948599139 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.1-h1b79a29_0.conda + sha256: 49daec7c83e70d4efc17b813547824bc2bcf2f7256d84061d24fbfe537da9f74 + md5: 6681822ea9d362953206352371b6a904 + depends: + - __osx >=11.0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + size: 920047 + timestamp: 1777987051643 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a md5: b68e8f66b94b44aaa8de4583d3d4cc40 @@ -4055,6 +5632,17 @@ packages: license_family: Other size: 46438 timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 + md5: bc5a5721b6439f2f62a84f2548136082 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 47759 + timestamp: 1774072956767 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.4-h4a912ad_0.conda sha256: 3f977e96f4c87d00c2f37e74609ac1f897a27d7a31d49078afe415f1d7c063bf md5: 8e3ed09e85fd3f3ff3496b2a04f88e21 @@ -4104,6 +5692,14 @@ packages: license: X11 AND BSD-3-Clause size: 797030 timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + sha256: 4ea6c620b87bd1d42bb2ccc2c87cd2483fa2d7f9e905b14c223f11ff3f4c455d + md5: 343d10ed5b44030a2f67193905aea159 + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + size: 805509 + timestamp: 1777423252320 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.13.1-h4f10f1e_0.conda sha256: 6a8648c1079c3fd23f330b1b8657ae9ed8df770a228829dbf02ae5df382d0c3d md5: 3d1eafa874408ac6a75cf1d40506cf77 @@ -4114,6 +5710,29 @@ packages: license_family: APACHE size: 164392 timestamp: 1752218330593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-25.8.2-h7039424_0.conda + sha256: 4782b172b3b8a557b60bf5f591821cf100e2092ba7a5494ce047dfa41626de26 + md5: ca8277c52fdface8bb8ebff7cd9a6f56 + depends: + - libcxx >=19 + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libuv >=1.51.0,<2.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + - c-ares >=1.34.6,<2.0a0 + - libabseil >=20260107.1,<20260108.0a0 + - libabseil * cxx17* + license: MIT + license_family: MIT + size: 17101803 + timestamp: 1774517834028 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.4-py313h9771d21_0.conda sha256: 33c73a156ce2b48cea3a67810832b2eba830f5d0671858789518554582c9b450 md5: 1c27b9306edd808fdfc718c0c6c93cf9 @@ -4142,6 +5761,39 @@ packages: license_family: Apache size: 3067808 timestamp: 1759324763146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda + sha256: c91bf510c130a1ea1b6ff023e28bac0ccaef869446acd805e2016f69ebdc49ea + md5: 25dcccd4f80f1638428613e0d7c9b4e1 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 3106008 + timestamp: 1775587972483 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.13-h20e6be0_100_cp313.conda + build_number: 100 + sha256: d0fffc5fde21d1ae350da545dfb9e115a8c53bed8a9c5761f9efd4a5581853c1 + md5: 9991a930e81d3873eba7a299ba783ec4 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 12966447 + timestamp: 1775615694085 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-hfc2f54d_101_cp313.conda build_number: 101 sha256: 516229f780b98783a5ef4112a5a4b5e5647d4f0177c4621e98aa60bb9bc32f98 @@ -4187,6 +5839,16 @@ packages: license_family: GPL size: 252359 timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 + md5: f8381319127120ce51e081dce4865cf4 + depends: + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 313930 + timestamp: 1765813902568 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda sha256: f4957c05f4fbcd99577de8838ca4b5b1ae4b400a44be647a0159c14f85b9bfc0 md5: 029e812c8ae4e0d4cf6ff4f7d8dc9366 @@ -4216,6 +5878,16 @@ packages: license_family: MIT size: 207679 timestamp: 1725491499758 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 + md5: a9d86bc62f39b94c4661716624eb21b0 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3127137 + timestamp: 1769460817696 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e md5: 7362396c170252e7b7b0c8fb37fe9c78 @@ -4259,6 +5931,16 @@ packages: license_family: BSD size: 399979 timestamp: 1742433432699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 + md5: ab136e4c34e97f34fb621d2592a393d8 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 433413 + timestamp: 1764777166076 - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda build_number: 8 sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d @@ -4273,6 +5955,34 @@ packages: license_family: BSD size: 49468 timestamp: 1718213032772 +- conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.5.0-py313h2a31948_0.conda + sha256: 254383b75bf920e72ff0629c6a1828aefbacc9e9f27a168357a98aa50ae16c23 + md5: e3aaaf11ae0e2e2bab3b418abc678158 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + size: 242051 + timestamp: 1778594078865 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py313h3ebfc14_1.conda + sha256: 3558006cd6e836de8dff53cbe5f0b9959f96ea6a6776b4e14f1c524916dd956c + md5: 916a39a0261621b8c33e9db2366dd427 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libbrotlicommon 1.2.0 hfd05255_1 + license: MIT + license_family: MIT + size: 335605 + timestamp: 1764018132514 - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda sha256: d882712855624641f48aa9dc3f5feea2ed6b4e6004585d3616386a18186fe692 md5: 1077e9333c41ff0be8edd1a5ec0ddace @@ -4284,6 +5994,17 @@ packages: license_family: BSD size: 55977 timestamp: 1757437738856 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda + sha256: 76dfb71df5e8d1c4eded2dbb5ba15bb8fb2e2b0fe42d94145d5eed4c75c35902 + md5: 4cb8e6b48f67de0b018719cdf1136306 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: bzip2-1.0.6 + license_family: BSD + size: 56115 + timestamp: 1771350256444 - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_1.conda sha256: f867a11f42bb64a09b232e3decf10f8a8fe5194d7e3a216c6bac9f40483bd1c6 md5: 55b44664f66a2caf584d72196aa98af9 @@ -4392,6 +6113,30 @@ packages: license_family: MIT size: 141322 timestamp: 1752719767870 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.0-hac47afa_0.conda + sha256: 2d81d647c1f01108803457cac999b947456f44dd0a3c2325395677feacaeca67 + md5: 264e350e035092b5135a2147c238aec4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - expat 2.8.0.* + license: MIT + license_family: MIT + size: 71094 + timestamp: 1777846223617 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda + sha256: 59d01f2dfa8b77491b5888a5ab88ff4e1574c9359f7e229da254cdfe27ddc190 + md5: 720b39f5ec0610457b725eb3f396219a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 45831 + timestamp: 1769456418774 - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda sha256: ddff25aaa4f0aa535413f5d831b04073789522890a4d8626366e43ecde1534a3 md5: ba4ad812d2afc22b9a34ce8327a0930f @@ -4490,6 +6235,18 @@ packages: license: 0BSD size: 104935 timestamp: 1749230611612 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda + sha256: d636d1a25234063642f9c531a7bb58d84c1c496411280a36ea000bd122f078f1 + md5: 8f83619ab1588b98dd99c90b0bfc5c6d + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - xz 5.8.3.* + license: 0BSD + size: 106486 + timestamp: 1775825663227 - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf md5: 74860100b2029e2523cf480804c76b9b @@ -4501,6 +6258,17 @@ packages: license_family: BSD size: 88657 timestamp: 1723861474602 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + sha256: 40dcd0b9522a6e0af72a9db0ced619176e7cfdb114855c7a64f278e73f8a7514 + md5: e4a9fc2bba3b022dad998c78856afe47 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-2-Clause + license_family: BSD + size: 89411 + timestamp: 1769482314283 - conda: https://conda.anaconda.org/conda-forge/win-64/libopenblas-0.3.30-pthreads_ha4fe6b2_3.conda sha256: 9966fd30677d31ceeda47d5db5252a1a7f4f841de3c0fb897216a59afdb5c18b md5: de94d3bd6dd3ed8ab7b2a1dd80870e48 @@ -4524,6 +6292,16 @@ packages: license: blessing size: 1288499 timestamp: 1753948889360 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.1-hf5d6505_0.conda + sha256: e70562450332ca8954bc16f3455468cca5ef3695c7d7187ecc87f8fc3c70e9eb + md5: 7fea434a17c323256acc510a041b80d7 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: blessing + size: 1304178 + timestamp: 1777986510497 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda sha256: cbdf93898f2e27cefca5f3fe46519335d1fab25c4ea2a11b11502ff63e602c09 md5: 9dce2f112bfd3400f4f432b3d0ac07b2 @@ -4606,6 +6384,19 @@ packages: license_family: Other size: 55476 timestamp: 1727963768015 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda + sha256: 88609816e0cc7452bac637aaf65783e5edf4fee8a9f8e22bdc3a75882c536061 + md5: dbabbd6234dea34040e631f87676292f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + size: 58347 + timestamp: 1774072851498 - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.4-hfa2b4ca_0.conda sha256: 397d1874330592e57c6378a83dff194c6d1875cab44a41f9fdee8c3fe20bbe6b md5: 5d56fdf8c9dc4c385704317e6743fca4 @@ -4647,6 +6438,13 @@ packages: license_family: APACHE size: 309517 timestamp: 1752218329097 +- conda: https://conda.anaconda.org/conda-forge/win-64/nodejs-25.8.2-h80d1838_0.conda + sha256: 5e38e51da1aa4bc352db9b4cec1c3e25811de0f4408edaa24e009a64de6dbfdf + md5: e626ee7934e4b7cb21ce6b721cff8677 + license: MIT + license_family: MIT + size: 31271315 + timestamp: 1774517904472 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.4-py313hce7ae62_0.conda sha256: 0ab0c3a5fb404f5a501506aca0cc7eeb5be92bd3ce6d4811dbd7963ed330d33f md5: 348041d099d11ab630124d7135bf233a @@ -4680,6 +6478,41 @@ packages: license_family: Apache size: 9218823 timestamp: 1759326176247 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.2-hf411b9b_0.conda + sha256: feb5815125c60f2be4a411e532db1ed1cd2d7261a6a43c54cb6ae90724e2e154 + md5: 05c7d624cff49dbd8db1ad5ba537a8a3 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + size: 9410183 + timestamp: 1775589779763 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.13-h09917c8_100_cp313.conda + build_number: 100 + sha256: b8108d7f83f71fb15fbb4a263406c2065a8990b3d7eba2cbd7a3075b9a6392ba + md5: 7065f7067762c4c2bda1912f18d16239 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.5,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.52.0,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - python_abi 3.13.* *_cp313 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Python-2.0 + size: 16618694 + timestamp: 1775613654892 + python_site_packages_path: Lib/site-packages - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.9-h09917c8_101_cp313.conda build_number: 101 sha256: bc855b513197637c2083988d5cbdcc407a23151cdecff381bd677df33d516a01 @@ -4740,6 +6573,17 @@ packages: license_family: BSD size: 3466348 timestamp: 1748388121356 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + sha256: 0e79810fae28f3b69fe7391b0d43f5474d6bd91d451d5f2bde02f55ae481d5e3 + md5: 0481bfd9814bf525bd4b3ee4b51494c4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: TCL + license_family: BSD + size: 3526350 + timestamp: 1769460339384 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5 md5: 71b24316859acd00bdb8b38f5e2ce328 @@ -4774,6 +6618,17 @@ packages: license_family: BSD size: 18861 timestamp: 1760418772353 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.5-h1b7c187_36.conda + sha256: dbcbad366e38979ac8ca9efb0ec48e5fedf9ce76f9485120c131cab7315c681c + md5: 10eac3d81ceea1be614f1d90045c7e9b + depends: + - vc14_runtime >=14.51.36231 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 20260 + timestamp: 1779061872533 - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda sha256: e3a3656b70d1202e0d042811ceb743bd0d9f7e00e2acdf824d231b044ef6c0fd md5: 378d5dcec45eaea8d303da6f00447ac0 @@ -4786,6 +6641,18 @@ packages: license_family: Proprietary size: 682706 timestamp: 1760418629729 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.51.36231-h1b9f54f_36.conda + sha256: e6f48954124c4f9419e50b3de7cb4b88f3a6078bf3616e997ea60144d499aa30 + md5: df9d8c15f117f28087b4aa6efa529a56 + depends: + - ucrt >=10.0.20348.0 + - vcomp14 14.51.36231 h1b9f54f_36 + constrains: + - vs2015_runtime 14.51.36231.* *_36 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 739707 + timestamp: 1779061867466 - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda sha256: f3790c88fbbdc55874f41de81a4237b1b91eab75e05d0e58661518ff04d2a8a1 md5: 58f67b437acbf2764317ba273d731f1d @@ -4797,6 +6664,17 @@ packages: license_family: Proprietary size: 114846 timestamp: 1760418593847 +- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36231-h1b9f54f_36.conda + sha256: bba3bcaf805eefd0aa14beb3d08a34a81d5d36e6890bd6ce33fcb968429a3bc7 + md5: d929e2c56341be7ae1bd9a77a9b535c2 + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.51.36231.* *_36 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + size: 124124 + timestamp: 1779061850036 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_32.conda sha256: 0694683d118d0d8448cd997fe776dbe33858c0f3957d9886b2b855220babe895 md5: c61ef6a81142ee3bd6c3b0c9a0c91e35 @@ -4824,6 +6702,18 @@ packages: license_family: MIT size: 63944 timestamp: 1753484092156 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda + sha256: 368d8628424966fd8f9c8018326a9c779e06913dd39e646cf331226acc90e5b2 + md5: 053b84beec00b71ea8ff7a4f84b55207 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 388453 + timestamp: 1764777142545 - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 md5: 21f56217d6125fb30c3c3f10c786d751 From f1ed9c231e23f8f08804cce8eb2f510637e4e872 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 14:18:16 -0400 Subject: [PATCH 20/23] BUG: Fix normalize.py cross-device move and relative-path crash Path.rename (-> os.rename) refused to move the fetched bytes from /tmp (often tmpfs) into the source tree with EXDEV "Invalid cross-device link". Use shutil.move, which copy-then-unlinks across filesystems. Path.relative_to(REPO_ROOT) raised ValueError when the user passed a relative target (e.g. "Modules") because the walked link paths were relative but REPO_ROOT is absolute. Call .resolve() first. --- Utilities/Maintenance/ExternalDataUpload/normalize.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/normalize.py b/Utilities/Maintenance/ExternalDataUpload/normalize.py index 9f2b626274a..4277862e999 100755 --- a/Utilities/Maintenance/ExternalDataUpload/normalize.py +++ b/Utilities/Maintenance/ExternalDataUpload/normalize.py @@ -22,6 +22,7 @@ import argparse import hashlib import re +import shutil import subprocess import sys import tempfile @@ -292,7 +293,9 @@ def main(argv: list[str] | None = None) -> int: fail += 1 continue - tmp_bytes.rename(real_file) + # shutil.move, not Path.rename: tmp_bytes is in /tmp (tmpfs) and + # os.rename rejects cross-fs moves with EXDEV. + shutil.move(str(tmp_bytes), real_file) link.unlink() try: @@ -310,7 +313,8 @@ def main(argv: list[str] | None = None) -> int: cid_path = real_file.with_name(real_file.name + ".cid") cid_path.write_text(cid + "\n") real_file.unlink() - rel_path = real_file.relative_to(REPO_ROOT).as_posix() + # resolve() so a user-relative target ("Modules") becomes absolute. + rel_path = real_file.resolve().relative_to(REPO_ROOT).as_posix() update_manifest(cid, rel_path) print(f"NORMALIZE {link} ({ext}) -> {cid_path}") From c2bc134fba538e9b41e9f621ef5aee07c11ab54f Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 14:25:44 -0400 Subject: [PATCH 21/23] ENH: Add content links to manifest generated by normalize.py Generated after: pixi run -e external-data-upload python Utilities/Maintenance/ExternalDataUpload/normalize.py Modules --- Testing/Data/content-links.manifest | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Testing/Data/content-links.manifest b/Testing/Data/content-links.manifest index c48ce890086..95b6d75b084 100644 --- a/Testing/Data/content-links.manifest +++ b/Testing/Data/content-links.manifest @@ -51,6 +51,10 @@ bafkreictm6jjboquhyrk736ly2klohvpypryfgn3paklbnejvadtohgckq Modules/Core/Common/ bafkreidhkafpsqdpychpf3rljlrsm2o4gh5xiyp47zoniyokultxfsy7jq Modules/Core/Common/test/Baseline/itkSobelOperatorImageVertTest.tiff bafkreieaecnog37ts5k6ox57ej2yvraeuzmvaqsakoupqf7xtcqk7ywami Modules/Core/Common/test/Baseline/vol-raw-big-dup2.nrrd bafkreiaqgx7eaphidpcagcuqm7t2zfd6vjcdnpg7c7rr24xefvgukhcha4 Modules/Core/Mesh/test/Baseline/itkTriangleMeshToBinaryImageFilterTest2.mha +bafkreicd6xi33oatbqzspxkeszliv3mmjnnmiiu6dj6qj6wuclkv7uokda Modules/Core/MultipleImageIterator/test/img1.png +bafkreiactetnzqheknc2zjeg6aoo6y7uqbid7oukpwttfjuj52stok6wbe Modules/Core/MultipleImageIterator/test/img2.png +bafkreibqkbie3ezhl2y2kvgfizpoj5qfz3y5xdbe5rqtjo35pb5zn5geti Modules/Core/MultipleImageIterator/test/img3.png +bafkreihso7ziayrcpwm22dbjctew7ju3a7egxdyoytdn4ueuwggu26tscq Modules/Core/MultipleImageIterator/test/randBase.nrrd bafkreidcfy4yoah4gsszni5i3yzzpgdhkzvcdyyhpcclkmrctvvnwaalry Modules/Core/SpatialObjects/test/Baseline/itkPolygonSpatialObjectIsInsideInObjectSpaceTest.mha bafkreidxdbtv6bub7ligfei2qd7axjey6wxoiygcik6vqjcijh2twcv6ca Modules/Core/SpatialObjects/test/Input/PolygonContourPoints.csv bafkreic3w33ftya4ayrcg5jwvsgjiymswmnehrnlfjlk5rcimfluii7iuu Modules/Core/TestKernel/test/Baseline/itkRandomImageSourceValuesTest.mha From 185270501165e21b31f1e232d297d1da5740e0b2 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 14:30:05 -0400 Subject: [PATCH 22/23] STYLE: Run black on ExternalDataUpload scripts --- Utilities/Maintenance/ExternalDataUpload/normalize.py | 7 ++----- Utilities/Maintenance/ExternalDataUpload/sync.py | 3 +-- Utilities/Maintenance/ExternalDataUpload/upload.py | 4 +--- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/Utilities/Maintenance/ExternalDataUpload/normalize.py b/Utilities/Maintenance/ExternalDataUpload/normalize.py index 4277862e999..924a6708ff7 100755 --- a/Utilities/Maintenance/ExternalDataUpload/normalize.py +++ b/Utilities/Maintenance/ExternalDataUpload/normalize.py @@ -97,8 +97,7 @@ def parse_url_templates(cmake_file: Path) -> list[str]: if end_idx is None: sys.exit( - f"ERROR: unterminated ExternalData_URL_TEMPLATES list() in " - f"{cmake_file}" + f"ERROR: unterminated ExternalData_URL_TEMPLATES list() in " f"{cmake_file}" ) body = text[anchor.end() : end_idx] @@ -273,9 +272,7 @@ def main(argv: list[str] | None = None) -> int: continue if args.dry_run: - print( - f"WOULD-NORMALIZE {link} ({ext}={value}) -> {real_file}.cid" - ) + print(f"WOULD-NORMALIZE {link} ({ext}={value}) -> {real_file}.cid") continue print(f"==> Normalizing {link} ({ext}={value})") diff --git a/Utilities/Maintenance/ExternalDataUpload/sync.py b/Utilities/Maintenance/ExternalDataUpload/sync.py index 3eaf3921aa0..517df90ef2d 100755 --- a/Utilities/Maintenance/ExternalDataUpload/sync.py +++ b/Utilities/Maintenance/ExternalDataUpload/sync.py @@ -114,8 +114,7 @@ def main(argv: list[str] | None = None) -> int: "--dry-run", action="store_true", help=( - "List CIDs that would be uploaded; do not upload or modify the " - "manifest." + "List CIDs that would be uploaded; do not upload or modify the " "manifest." ), ) args = parser.parse_args(argv) diff --git a/Utilities/Maintenance/ExternalDataUpload/upload.py b/Utilities/Maintenance/ExternalDataUpload/upload.py index 23c4d13a21c..4449066fdbc 100755 --- a/Utilities/Maintenance/ExternalDataUpload/upload.py +++ b/Utilities/Maintenance/ExternalDataUpload/upload.py @@ -208,9 +208,7 @@ def update_manifest(cid: str, rel_path: str) -> None: MANIFEST.write_text("\n".join(header_lines + data_lines) + "\n") -def mirror_to_testing_data( - file_path: Path, cid: str, testing_data_repo: Path -) -> bool: +def mirror_to_testing_data(file_path: Path, cid: str, testing_data_repo: Path) -> bool: """Copy ``file_path`` to ``/CID/`` and ``git add`` it. Returns False (with a warning) for files over GitHub's 50 MB push limit; From 6d053e4e62d4443bcf94a4aa9a781b3a2ada7964 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Tue, 19 May 2026 14:38:30 -0400 Subject: [PATCH 23/23] ENH: Fix stale Testing/Data/README + normalize.py mirror error path Testing/Data/README.md still referenced the removed ipfs-upload.sh and the multi-service pinning flow. Replace with the upload.py / Filebase invocation so a contributor following the doc actually has a runnable command. In normalize.py, mirror_to_testing_data re-raised CalledProcessError on git-add failure, aborting the whole batch and leaving the in-flight link in an inconsistent state. Wrap the call in try/except: the Filebase upload already pinned the bytes, so keep writing the new .cid and manifest entry and emit a WARN. sync.py can re-apply the mirror later. Addresses two greptile P1 review comments on PR 6111. --- Testing/Data/README.md | 13 +++++++------ .../Maintenance/ExternalDataUpload/normalize.py | 10 +++++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Testing/Data/README.md b/Testing/Data/README.md index 275e0dff962..dc56d58917d 100644 --- a/Testing/Data/README.md +++ b/Testing/Data/README.md @@ -20,11 +20,12 @@ To add new test data, use the upload skill at `Utilities/Maintenance/ExternalDataUpload/`: ```bash -Utilities/Maintenance/ExternalDataUpload/ipfs-upload.sh +pixi run -e external-data-upload python \ + Utilities/Maintenance/ExternalDataUpload/upload.py ``` -The script uploads the file to IPFS, pins it on the redundant pinning -services, replaces the original with a `.cid` content-link, and records the -CID in `Testing/Data/content-links.manifest`. See the skill's `README.md` -for one-time setup and the full workflow, including the optional -`ITKTestingData` GitHub Pages mirror step. +The script packs the file into a CARv1, uploads it to Filebase IPFS storage, +replaces the original with a `.cid` content-link, and records the CID in +`Testing/Data/content-links.manifest`. See the skill's `README.md` for +one-time setup and the full workflow, including the optional `ITKTestingData` +GitHub Pages mirror step. diff --git a/Utilities/Maintenance/ExternalDataUpload/normalize.py b/Utilities/Maintenance/ExternalDataUpload/normalize.py index 924a6708ff7..04131133aef 100755 --- a/Utilities/Maintenance/ExternalDataUpload/normalize.py +++ b/Utilities/Maintenance/ExternalDataUpload/normalize.py @@ -305,7 +305,15 @@ def main(argv: list[str] | None = None) -> int: continue if testing_data_repo is not None: - mirror_to_testing_data(real_file, cid, testing_data_repo) + try: + mirror_to_testing_data(real_file, cid, testing_data_repo) + except (subprocess.CalledProcessError, OSError) as exc: + # Best-effort: Filebase already has the bytes; sync.py can + # re-apply the mirror later. + print( + f"WARN {link} mirror-failed: {exc}", + file=sys.stderr, + ) cid_path = real_file.with_name(real_file.name + ".cid") cid_path.write_text(cid + "\n")