From d1294a75a33b6b85966c23c11002fffa563c7b02 Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Wed, 27 May 2026 10:56:17 +0000 Subject: [PATCH 1/7] Make skills/ the source of truth for skills Signed-off-by: Rostan Tabet --- .agents/skills | 1 + .claude/skills | 2 +- {.agents/skills => skills}/dali-dynamic-mode/SKILL.md | 0 {.agents/skills => skills}/dali-dynamic-mode/evals/evals.json | 0 .../dali-dynamic-mode/evals/files/pipeline_to_convert.py | 0 5 files changed, 2 insertions(+), 1 deletion(-) create mode 120000 .agents/skills rename {.agents/skills => skills}/dali-dynamic-mode/SKILL.md (100%) rename {.agents/skills => skills}/dali-dynamic-mode/evals/evals.json (100%) rename {.agents/skills => skills}/dali-dynamic-mode/evals/files/pipeline_to_convert.py (100%) diff --git a/.agents/skills b/.agents/skills new file mode 120000 index 00000000000..42c5394a18a --- /dev/null +++ b/.agents/skills @@ -0,0 +1 @@ +../skills \ No newline at end of file diff --git a/.claude/skills b/.claude/skills index 2b7a412b8fa..42c5394a18a 120000 --- a/.claude/skills +++ b/.claude/skills @@ -1 +1 @@ -../.agents/skills \ No newline at end of file +../skills \ No newline at end of file diff --git a/.agents/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md similarity index 100% rename from .agents/skills/dali-dynamic-mode/SKILL.md rename to skills/dali-dynamic-mode/SKILL.md diff --git a/.agents/skills/dali-dynamic-mode/evals/evals.json b/skills/dali-dynamic-mode/evals/evals.json similarity index 100% rename from .agents/skills/dali-dynamic-mode/evals/evals.json rename to skills/dali-dynamic-mode/evals/evals.json diff --git a/.agents/skills/dali-dynamic-mode/evals/files/pipeline_to_convert.py b/skills/dali-dynamic-mode/evals/files/pipeline_to_convert.py similarity index 100% rename from .agents/skills/dali-dynamic-mode/evals/files/pipeline_to_convert.py rename to skills/dali-dynamic-mode/evals/files/pipeline_to_convert.py From 0d3b962b0d43c0ce0d0bb1a43c7e231d775c21da Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Wed, 27 May 2026 11:02:20 +0000 Subject: [PATCH 2/7] Add license field to skill frontmatter Signed-off-by: Rostan Tabet --- skills/dali-dynamic-mode/SKILL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md index 4a23da05938..9f3e5a9bf08 100644 --- a/skills/dali-dynamic-mode/SKILL.md +++ b/skills/dali-dynamic-mode/SKILL.md @@ -1,6 +1,7 @@ --- name: dali-dynamic-mode description: "Use when writing DALI data loading or preprocessing code with `nvidia.dali.experimental.dynamic` (ndd), or when converting DALI pipeline-mode code to dynamic mode, or when the user asks about DALI dynamic mode, imperative DALI, or ndd. Use this skill any time someone mentions 'ndd', 'dynamic mode', or wants to load/augment data with DALI outside of a pipeline definition." +license: Apache-2.0 --- # DALI Dynamic Mode From cd9ec342fb9fe4bf36ac33be01807a176f11549e Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Thu, 28 May 2026 14:16:23 +0000 Subject: [PATCH 3/7] Add metadata to dali-dynamic-mode skill Signed-off-by: Rostan Tabet --- skills/dali-dynamic-mode/SKILL.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md index 9f3e5a9bf08..546bbc77a94 100644 --- a/skills/dali-dynamic-mode/SKILL.md +++ b/skills/dali-dynamic-mode/SKILL.md @@ -2,6 +2,19 @@ name: dali-dynamic-mode description: "Use when writing DALI data loading or preprocessing code with `nvidia.dali.experimental.dynamic` (ndd), or when converting DALI pipeline-mode code to dynamic mode, or when the user asks about DALI dynamic mode, imperative DALI, or ndd. Use this skill any time someone mentions 'ndd', 'dynamic mode', or wants to load/augment data with DALI outside of a pipeline definition." license: Apache-2.0 +metadata: + author: "DALI Team " + tags: + - dali + - dynamic-mode + - ndd + - data-loading + - data-processing + - gpu-processing + languages: + - python + team: dali + domain: deep-learning --- # DALI Dynamic Mode From 4cc964cc3d4798264d779cb229349c6497545c68 Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Thu, 28 May 2026 14:35:54 +0000 Subject: [PATCH 4/7] Add explicit `## Introduction` and `## Examples` sections. Signed-off-by: Rostan Tabet --- skills/dali-dynamic-mode/SKILL.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md index 546bbc77a94..b5d3d3ff595 100644 --- a/skills/dali-dynamic-mode/SKILL.md +++ b/skills/dali-dynamic-mode/SKILL.md @@ -19,6 +19,8 @@ metadata: # DALI Dynamic Mode +## Introduction + Dynamic mode is DALI's imperative Python API. Call DALI operators as regular Python functions with standard control flow -- no pipeline graph, no `pipe.build()`, no `pipe.run()`. ```python @@ -200,12 +202,13 @@ Key rules: Manual `get_state` / `set_state` is also available directly on each `Reader` and `RNG` -- the `Checkpoint` aggregator is built on top of it. Use the manual API only when integrating with an external checkpoint system. -## Example: Image Classification Pipeline +## Examples + +### Image Classification Pipeline ```python import nvidia.dali.experimental.dynamic as ndd -ndd.set_num_threads(4) reader = ndd.readers.File(file_root="/data/imagenet/train", random_shuffle=True) for epoch in range(num_epochs): From bf681f40ef95a4ceace6fc7aea13c773f8292cae Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Thu, 28 May 2026 16:46:19 +0000 Subject: [PATCH 5/7] Address medium-low issues in dynamic mode skill Signed-off-by: Rostan Tabet --- skills/dali-dynamic-mode/SKILL.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md index b5d3d3ff595..91eacec0a9d 100644 --- a/skills/dali-dynamic-mode/SKILL.md +++ b/skills/dali-dynamic-mode/SKILL.md @@ -1,6 +1,6 @@ --- name: dali-dynamic-mode -description: "Use when writing DALI data loading or preprocessing code with `nvidia.dali.experimental.dynamic` (ndd), or when converting DALI pipeline-mode code to dynamic mode, or when the user asks about DALI dynamic mode, imperative DALI, or ndd. Use this skill any time someone mentions 'ndd', 'dynamic mode', or wants to load/augment data with DALI outside of a pipeline definition." +description: "DALI imperative dynamic mode (`nvidia.dali.experimental.dynamic`, ndd): write/review ndd code or migrate pipelines; skip pipeline-only tasks." license: Apache-2.0 metadata: author: "DALI Team " @@ -19,6 +19,23 @@ metadata: # DALI Dynamic Mode +## Purpose + +Guide AI agents in writing, reviewing, and migrating code that uses DALI's imperative dynamic-mode API, `nvidia.dali.experimental.dynamic` (`ndd`). + +## Instructions + +- Write dynamic-mode code as direct `ndd` calls in ordinary Python; do not use pipeline-mode APIs such as `Pipeline`, `@pipeline_def`, `pipe.build()`, or `pipe.run()`. +- Treat readers as stateful: create them once, reuse them across epochs, and pass `batch_size` to `next_epoch(...)`. +- Pass explicit `batch_size` to random ops; there is no pipeline-level batch size to inherit. +- Use dynamic-mode API conventions: `device="gpu"` instead of pipeline-mode `"mixed"`, `Batch.tensors[...]` for sample selection, and `Batch.slice[...]` for per-sample slicing. + +## Prerequisites + +- To run or validate code, NVIDIA DALI must be installed with dynamic mode importable as `nvidia.dali.experimental.dynamic`. +- GPU decode or GPU operators require a CUDA-capable DALI build and an available NVIDIA GPU/driver. +- Framework conversion examples require the target framework installed, such as PyTorch for `.torch()`. + ## Introduction Dynamic mode is DALI's imperative Python API. Call DALI operators as regular Python functions with standard control flow -- no pipeline graph, no `pipe.build()`, no `pipe.run()`. From 4d4cfdd17e62d1b359dfae8d78de2e95aa71083f Mon Sep 17 00:00:00 2001 From: Rostan Tabet Date: Thu, 28 May 2026 17:23:02 +0000 Subject: [PATCH 6/7] Add limitations and troubleshooting section to dunamic mode skill Signed-off-by: Rostan Tabet --- skills/dali-dynamic-mode/SKILL.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/skills/dali-dynamic-mode/SKILL.md b/skills/dali-dynamic-mode/SKILL.md index 91eacec0a9d..9098932d760 100644 --- a/skills/dali-dynamic-mode/SKILL.md +++ b/skills/dali-dynamic-mode/SKILL.md @@ -1,6 +1,6 @@ --- name: dali-dynamic-mode -description: "DALI imperative dynamic mode (`nvidia.dali.experimental.dynamic`, ndd): write/review ndd code or migrate pipelines; skip pipeline-only tasks." +description: "DALI imperative dynamic mode (`nvidia.dali.experimental.dynamic`, ndd): use when working on ndd code or migrating pipelines; skip pipeline-only tasks." license: Apache-2.0 metadata: author: "DALI Team " @@ -25,7 +25,7 @@ Guide AI agents in writing, reviewing, and migrating code that uses DALI's imper ## Instructions -- Write dynamic-mode code as direct `ndd` calls in ordinary Python; do not use pipeline-mode APIs such as `Pipeline`, `@pipeline_def`, `pipe.build()`, or `pipe.run()`. +- Import dynamic mode as `nvidia.dali.experimental.dynamic as ndd` and write code as direct `ndd` calls in ordinary Python; do not use pipeline-mode APIs such as `Pipeline`, `@pipeline_def`, `pipe.build()`, or `pipe.run()`. - Treat readers as stateful: create them once, reuse them across epochs, and pass `batch_size` to `next_epoch(...)`. - Pass explicit `batch_size` to random ops; there is no pipeline-level batch size to inherit. - Use dynamic-mode API conventions: `device="gpu"` instead of pipeline-mode `"mixed"`, `Batch.tensors[...]` for sample selection, and `Batch.slice[...]` for per-sample slicing. @@ -38,11 +38,7 @@ Guide AI agents in writing, reviewing, and migrating code that uses DALI's imper ## Introduction -Dynamic mode is DALI's imperative Python API. Call DALI operators as regular Python functions with standard control flow -- no pipeline graph, no `pipe.build()`, no `pipe.run()`. - -```python -import nvidia.dali.experimental.dynamic as ndd -``` +Dynamic mode is DALI's imperative Python API. It lets code call DALI operators directly from normal Python control flow instead of building and running a pipeline graph. ## Core Data Types @@ -271,3 +267,12 @@ for epoch in range(num_epochs): | `output.as_cpu()` | `batch.cpu()` | | `pipe.run()` returns tuple of `TensorList` | `reader.next_epoch(batch_size=N)` yields tuples of `Batch` | | `Pipeline(..., enable_checkpointing=True)` + `pipe.checkpoint()` / `pipeline(checkpoint=...)` | `ndd.checkpoint.Checkpoint` + per-object `register` / `collect` / `save` / `load`; readers opt in with `enable_checkpointing=True` | + +## Limitations + +Dynamic mode is more flexible than pipeline mode, but can have slightly worse performance. For maximum throughput, prefer pipeline mode. + +## Troubleshooting + +- If errors surface later than the failing call, rerun the block under `with ndd.EvalMode.sync_full:`. +- If a reader behaves unexpectedly across epochs, check that it is created once and each `next_epoch()` iterator is fully consumed. From c38e11cf88ecf6cb9a5f3ec93a0cdd9e7b7685d7 Mon Sep 17 00:00:00 2001 From: nvskills-svc-account Date: Thu, 28 May 2026 18:24:19 +0000 Subject: [PATCH 7/7] Attach NVSkills validation signatures Signed-off-by: nvskills-svc-account --- skills/dali-dynamic-mode/BENCHMARK.md | 64 ++++++++++++++++++++++++++ skills/dali-dynamic-mode/skill-card.md | 47 +++++++++++++++++++ skills/dali-dynamic-mode/skill.oms.sig | 1 + 3 files changed, 112 insertions(+) create mode 100644 skills/dali-dynamic-mode/BENCHMARK.md create mode 100644 skills/dali-dynamic-mode/skill-card.md create mode 100644 skills/dali-dynamic-mode/skill.oms.sig diff --git a/skills/dali-dynamic-mode/BENCHMARK.md b/skills/dali-dynamic-mode/BENCHMARK.md new file mode 100644 index 00000000000..e7b4dab6f97 --- /dev/null +++ b/skills/dali-dynamic-mode/BENCHMARK.md @@ -0,0 +1,64 @@ +# Evaluation Report + +Evaluation of the `dali-dynamic-mode` skill before publication through NVSkills-Eval. + +This benchmark summarizes 3-Tier Evaluation from NVSkills-Eval results for the skill. The goal is to document whether the skill is safe, discoverable, effective, and useful for agents before it is published for broader workflow use. + +## Evaluation Summary + +- Skill: `dali-dynamic-mode` +- Evaluation date: 2026-05-28 +- NVSkills-Eval profile: `external` +- Overall verdict: PASS +- Tier 3 live agent evaluation: not available in this report + +## Agents Used + +- Tier 3 agent details were not available in this report. + +## Metrics Used + +Reported benchmark dimensions: + +- Security: checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access. +- Correctness: checks whether the agent follows the expected workflow and produces the correct final output. +- Discoverability: checks whether the agent loads the skill when relevant and avoids using it when irrelevant. +- Effectiveness: checks whether the agent performs measurably better with the skill than without it. +- Efficiency: checks whether the agent uses fewer tokens and avoids redundant work. + +Underlying evaluation signals used in this run: + +- No Tier 3 evaluation signal details were available in this report. + +## Test Tasks + +Tier 3 evaluation task details were not available in this report. + +## Results + +Tier 3 dimension rollup was not available in this report. + +## Tier 1: Static Validation Summary + +Tier 1 validation passed. NVSkills-Eval ran 9 checks and found 0 total findings. + +Notable observations: + +- SECURITY: No security vulnerabilities detected (secrets, API keys, credentials) +- SCHEMA: Found skill manifest: SKILL.md +- VERSION: No semantic version label present; resource will use commit-hash history (opting back out of an existing label is allowed) +- PII: Scanning 1 files for PII +- LICENSE: no findings reported. + +## Tier 2: Deduplication Summary + +Tier 2 validation passed. NVSkills-Eval ran 2 checks and found 0 total findings. + +Notable observations: + +- Context Deduplication: Collected 1 file(s) +- Inter-Skill Deduplication: Parsed skill 'dali-dynamic-mode': 150 char description + +## Publication Recommendation + +The skill is suitable to proceed toward NVSkills-Eval publication based on this benchmark. Skill owners should keep this file with the skill and refresh it when the evaluation dataset, skill behavior, or target agents materially change. diff --git a/skills/dali-dynamic-mode/skill-card.md b/skills/dali-dynamic-mode/skill-card.md new file mode 100644 index 00000000000..82d435afb13 --- /dev/null +++ b/skills/dali-dynamic-mode/skill-card.md @@ -0,0 +1,47 @@ +## Description:
+DALI imperative dynamic mode (`nvidia.dali.experimental.dynamic`, ndd): use when working on ndd code or migrating pipelines; skip pipeline-only tasks.
+ +This skill is ready for commercial/non-commercial use.
+ +## Owner +NVIDIA
+ +### License/Terms of Use:
+Apache-2.0
+## Use Case:
+Developers and engineers writing, reviewing, or migrating code that uses NVIDIA DALI's imperative dynamic-mode API for GPU-accelerated data loading and preprocessing.
+ +### Deployment Geography for Use:
+Global
+ +## Known Risks and Mitigations:
+Risk: Review before execution as proposals could introduce incorrect or misleading guidance into skills.
+Mitigation: Review and scan skill before deployment.
+ +## Reference(s):
+ + +## Skill Output:
+**Output Type(s):** [Code, Configuration instructions]
+**Output Format:** [Markdown with inline Python code blocks]
+**Output Parameters:** [1D]
+**Other Properties Related to Output:** [None]
+ +## Evaluation Metrics Used:
+Reported benchmark dimensions:
+- Security: Checks whether skill-assisted execution avoids unsafe behavior such as secret leakage, destructive commands, or unauthorized access.
+- Correctness: Checks whether the agent follows the expected workflow and produces the correct final output.
+- Discoverability: Checks whether the agent loads the skill when relevant and avoids using it when irrelevant.
+- Effectiveness: Checks whether the agent performs measurably better with the skill than without it.
+- Efficiency: Checks whether the agent uses fewer tokens and avoids redundant work.
+ + + +## Skill Version(s):
+4d4cfdd1 (source: git SHA, committed 2026-05-28)
+ +## Ethical Considerations:
+NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our terms of service, developers should work with their internal team to ensure this skill meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
+ +(For Release on NVIDIA Platforms Only)
+Please report quality, risk, security vulnerabilities or NVIDIA AI Concerns [here](https://app.intigriti.com/programs/nvidia/nvidiavdp/detail).
diff --git a/skills/dali-dynamic-mode/skill.oms.sig b/skills/dali-dynamic-mode/skill.oms.sig new file mode 100644 index 00000000000..de47b27e048 --- /dev/null +++ b/skills/dali-dynamic-mode/skill.oms.sig @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"x509CertificateChain":{"certificates":[{"rawBytes":"MIICgzCCAgmgAwIBAgIUKIyS7SxNteQIiWzK1dWj85E6520wCgYIKoZIzj0EAwMwVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwHhcNMjYwNDAxMDAwMDAwWhcNMjgwNDIyMTUzMzA5WjBUMQswCQYDVQQGEwJVUzEbMBkGA1UECgwSTlZJRElBIENvcnBvcmF0aW9uMSgwJgYDVQQDDB9OVklESUEgQWdlbnQgU2tpbGxzIFNpZ25pbmcgMDAxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEYoRM9bQl/dGlwSRNi6bTpIJUXH8Nv9GciP6LSflJYYMLCc296kpyuTSsk5ddbAWiDcFX3C/ydX3jwc+qCLYP6uHy9XphyLjOQ27Yb2J6rBLVtRBS1mgGco/Gr7fL6ODco4GaMIGXMB0GA1UdDgQWBBRQ/5ZW3nJ6lmo9SVk7I15o7UGmpTAfBgNVHSMEGDAWgBRPGpILxMBBleJSsBGjrMKsby1CgjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLm5kaXMubnZpZGlhLmNvbTAKBggqhkjOPQQDAwNoADBlAjAUygu/GiOCIXrgGr4SmLgeEVDcEitfFUv7ALbvLVGVyMysB3mxmO/uInZfXzWcJZsCMQDxuoxj4ZmO30jhkPIcCxGFCOvnUsnfU3TfGcouYm4M6iRpbKvtVnHPiy4bi6pcKf0="},{"rawBytes":"MIICiDCCAg6gAwIBAgIUZsIuSv9NkpJCNqtYEfCouVv5BzowCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowVTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjEpMCcGA1UEAwwgTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBJQ0EgMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASI72cR3ctKGg4VWnB3bNja6g1Z2PnOmFEopkPof+QeIcPk9rT+g9MjJnq51EQXL93a7C2GJ9J985G4o2V85VD7wJ1RaXhluHW2rf3y8bQGeAYaKMr5s/hUgn+M3/9WlWejgaAwgZ0wHQYDVR0OBBYEFE8akgvEwEGV4lKwEaOswqxvLUKCMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3AubmRpcy5udmlkaWEuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCeIMMfAbyzPDacw2MxG+Yt1cikrJX/DVxiGfXuHmkkXn6VgSzE79+lkqDErpVO2gYCMCNEColOyvUvkzZGUEI1hQ3PfMgi3FIo9tHoBKMw4/wGBLFpu/0ubtmbBXM6/UMOEw=="},{"rawBytes":"MIICRTCCAcygAwIBAgIUeJdY3rV86EdvFmG7L8LJBsyQFYkwCgYIKoZIzj0EAwMwUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTAgFw0yNjA0MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowUTELMAkGA1UEBhMCVVMxGzAZBgNVBAoMEk5WSURJQSBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcTlZJRElBIEFnZW50IENhcGFiaWxpdGllcyBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABAYpiXCDjJ9NT2eSDhyHJVSw1Tbze18cGG2F/578oWvHxg23eQAhNRYdq88i1iOshZSO6C29doKui5Xpmo/7Ctw9Sx4PP2RzOmIuOLCuTdNtKcTRwi4GEsd5BAFvWj42M6NjMGEwHQYDVR0OBBYEFItnoAjjfuCEUvzyvWyI2vOGvwPjMB8GA1UdIwQYMBaAFItnoAjjfuCEUvzyvWyI2vOGvwPjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cAMGQCMCwtAjWLaNwgGWNCgdyNoTyvNhqWRECRJV2r3+7w8g0PL6NHLOsbkgE09BH95h8XlgIwTaQmbbUh2ChAJ5TA1wRiVDnCcvbzHlZl2jM2FcwQQZlk19LOAbyGMRixbu2Ww/rj"}]},"tlogEntries":[]},"dsseEnvelope":{"payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YxIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiZGFsaS1keW5hbWljLW1vZGUiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTc0NWVkOTRkYjg1MGVlOWUyMDAwMTM0ODI3MWJkMGZlOTYxYjU0ZWNmZWE0NDQ0OWJlNzE1ZTNkZmVjNWZkNSIKICAgICAgfQogICAgfQogIF0sCiAgInByZWRpY2F0ZVR5cGUiOiAiaHR0cHM6Ly9tb2RlbF9zaWduaW5nL3NpZ25hdHVyZS92MS4wIiwKICAicHJlZGljYXRlIjogewogICAgInJlc291cmNlcyI6IFsKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogImQ5NzJjYjg2Nzg3M2M0YjI3MTA4ZTllZWMxOTg4Y2FiYzVhOTM1NzEzOWQ0ZmUxNzM0MDM5OGM4ZDliMjMwMGIiLAogICAgICAgICJuYW1lIjogIkJFTkNITUFSSy5tZCIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjcyMTJiYjQ1ZWJiZDEzMTU1Y2UxNzIyMmZhOTFkM2U5NWIwYjAzMmZjNjg0MGRjMzUxNWRiOWJiNGIyMGE2ZjIiLAogICAgICAgICJuYW1lIjogIlNLSUxMLm1kIgogICAgICB9LAogICAgICB7CiAgICAgICAgImFsZ29yaXRobSI6ICJzaGEyNTYiLAogICAgICAgICJkaWdlc3QiOiAiMzViYjFkNGNmMWVlODhlODRjMzU0OTQ0MTAyYmQ5YTg4MjhlMmNkNzBhNjJjYjJmMThkMjYyMzdmZDc0NGMzZCIsCiAgICAgICAgIm5hbWUiOiAiZXZhbHMvZXZhbHMuanNvbiIKICAgICAgfSwKICAgICAgewogICAgICAgICJhbGdvcml0aG0iOiAic2hhMjU2IiwKICAgICAgICAiZGlnZXN0IjogIjUwOTIzOWIyNWQ2NzdiMDQ0NzU4YzNjZGY3OTdmMzdiMGVkZGJiYWQxOTczOTRlMmIyN2I1MmQ4NGQzMWJkMDgiLAogICAgICAgICJuYW1lIjogImV2YWxzL2ZpbGVzL3BpcGVsaW5lX3RvX2NvbnZlcnQucHkiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWxnb3JpdGhtIjogInNoYTI1NiIsCiAgICAgICAgImRpZ2VzdCI6ICI0NTdiNTVkMmEzODBiNGNkYjc3OGQ0NzVlNTM1YTYxZjQ5NjAwMDU0NGVhMmM5YzZjNzE2MDA5M2M3NWRjODk1IiwKICAgICAgICAibmFtZSI6ICJza2lsbC1jYXJkLm1kIgogICAgICB9CiAgICBdLAogICAgInNlcmlhbGl6YXRpb24iOiB7CiAgICAgICJhbGxvd19zeW1saW5rcyI6IGZhbHNlLAogICAgICAiaGFzaF90eXBlIjogInNoYTI1NiIsCiAgICAgICJtZXRob2QiOiAiZmlsZXMiLAogICAgICAiaWdub3JlX3BhdGhzIjogWwogICAgICAgICIuZ2l0IiwKICAgICAgICAiLmdpdGF0dHJpYnV0ZXMiLAogICAgICAgICIuZ2l0aWdub3JlIiwKICAgICAgICAiLmdpdGh1YiIKICAgICAgXQogICAgfQogIH0KfQ==","payloadType":"application/vnd.in-toto+json","signatures":[{"sig":"MGQCMGjyHHekJe2La3AijAWHTM4XlcMvr6f9IC9l4fo4S8cQ7QyU/NfrCaqPBd1or3H0dwIwTpBAfW0wiD/0biOMOByqW/LFpao99XnU60DWJcK/DdeDi1xr2ZGX9VHGbmoOz4+p","keyid":""}]}} \ No newline at end of file