From 1cd1e494301bd1ae195157b03d40d741988daa1a Mon Sep 17 00:00:00 2001 From: Thomas SharedInbox Date: Wed, 3 Jun 2026 00:14:53 +0200 Subject: [PATCH] feat: migrate CI secrets from Forgejo to SOPS, remove all fallbacks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add 6 secrets to secrets.enc.yaml: WEBSITE_SSH_HOST, PLAY_STORE_CONFIG_JSON, ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY, RENOVATE_FORGEJO_TOKEN - Extend setup_dagger_remote.sh to export all CI secrets from SOPS to GITHUB_ENV so subsequent steps receive them without Forgejo secret refs - Remove all silent-skip fallbacks (if: secrets.X != '') from deploy.yml, website.yml, firebase-tests.yml — jobs now fail hard if secrets are missing - Remove direct Forgejo secret references from all workflow env: blocks - Delete temporary dump-secrets workflow SSH_PRIVATE_KEY, SSH_KNOWN_HOSTS, SSH_USER, SSH_HOST are not yet in Forgejo and therefore not in SOPS — deploy/website tasks will fail with a clear Taskfile precondition error until those secrets are provided. Co-Authored-By: Claude Sonnet 4.6 --- .forgejo/workflows/deploy.yml | 16 ----- .forgejo/workflows/dump-secrets.yml | 91 --------------------------- .forgejo/workflows/firebase-tests.yml | 2 - .forgejo/workflows/renovate.yml | 1 - .forgejo/workflows/website.yml | 8 +-- scripts/setup_dagger_remote.sh | 28 +++++++++ secrets.enc.yaml | 42 +++++++------ 7 files changed, 53 insertions(+), 135 deletions(-) delete mode 100644 .forgejo/workflows/dump-secrets.yml diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 722de6a..a8e1363 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -113,11 +113,7 @@ jobs: run: scripts/setup_dagger_remote.sh - name: Publish Android to Play Store - if: ${{ secrets.PLAY_STORE_CONFIG_JSON != '' }} env: - ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} - ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} - PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }} DAGGER_NO_NAG: "1" run: task publish-android @@ -145,14 +141,7 @@ jobs: run: scripts/setup_dagger_remote.sh - name: Build & Deploy APK to server - if: ${{ secrets.SSH_PRIVATE_KEY != '' }} env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} - SSH_USER: ${{ secrets.SSH_USER }} - SSH_HOST: ${{ secrets.SSH_HOST }} - ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} - ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} DAGGER_NO_NAG: "1" run: task deploy-apk @@ -180,12 +169,7 @@ jobs: run: scripts/setup_dagger_remote.sh - name: Build & Deploy Linux to server - if: ${{ secrets.SSH_PRIVATE_KEY != '' }} env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} - SSH_USER: ${{ secrets.SSH_USER }} - SSH_HOST: ${{ secrets.SSH_HOST }} DAGGER_NO_NAG: "1" run: task deploy-linux diff --git a/.forgejo/workflows/dump-secrets.yml b/.forgejo/workflows/dump-secrets.yml deleted file mode 100644 index b37dce1..0000000 --- a/.forgejo/workflows/dump-secrets.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: Dump Secrets (TEMP - delete after use) - -on: - push: - branches: [sops-migrate] - -jobs: - dump: - name: Encrypt secrets with age pubkey - runs-on: ubuntu-latest - steps: - - name: Install age - run: | - AGE_VERSION="1.2.0" - curl -fsSL "https://github.com/FiloSottile/age/releases/download/v${AGE_VERSION}/age-v${AGE_VERSION}-linux-amd64.tar.gz" \ - | tar xz -C /usr/local/bin --strip-components=1 age/age age/age-keygen - age --version - - - name: Encrypt secrets and post as PR comment - env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} - SSH_USER: ${{ secrets.SSH_USER }} - SSH_HOST: ${{ secrets.SSH_HOST }} - WEBSITE_SSH_HOST: ${{ secrets.WEBSITE_SSH_HOST }} - PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }} - ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} - ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} - FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY }} - RENOVATE_FORGEJO_TOKEN: ${{ secrets.RENOVATE_FORGEJO_TOKEN }} - FORGEJO_TOKEN: ${{ github.token }} - FORGEJO_URL: ${{ github.server_url }} - GITHUB_REPOSITORY: ${{ github.repository }} - run: | - AGE_PUBKEY="age1r0k34dkgzppaew7etm3ka7p0dgxcd365gxe66kuuqsnw6hqax9qswda0sh" - OUT_FILE="/tmp/secrets_encrypted.txt" - - encrypt_secret() { - local name="$1" - local value="$2" - printf '=== %s ===\n' "$name" - if [ -z "$value" ]; then - printf '(empty)\n\n' - else - printf '%s' "$value" | age -r "$AGE_PUBKEY" | base64 -w0 - printf '\n\n' - fi - } - - { - encrypt_secret "SSH_PRIVATE_KEY" "$SSH_PRIVATE_KEY" - encrypt_secret "SSH_KNOWN_HOSTS" "$SSH_KNOWN_HOSTS" - encrypt_secret "SSH_USER" "$SSH_USER" - encrypt_secret "SSH_HOST" "$SSH_HOST" - encrypt_secret "WEBSITE_SSH_HOST" "$WEBSITE_SSH_HOST" - encrypt_secret "PLAY_STORE_CONFIG_JSON" "$PLAY_STORE_CONFIG_JSON" - encrypt_secret "ANDROID_KEYSTORE_BASE64" "$ANDROID_KEYSTORE_BASE64" - encrypt_secret "ANDROID_KEYSTORE_PASSWORD" "$ANDROID_KEYSTORE_PASSWORD" - encrypt_secret "FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY" "$FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY" - encrypt_secret "RENOVATE_FORGEJO_TOKEN" "$RENOVATE_FORGEJO_TOKEN" - } > "$OUT_FILE" - - python3 - <<'PYEOF' - import os, json, urllib.request - - token = os.environ["FORGEJO_TOKEN"] - url_base = os.environ["FORGEJO_URL"].rstrip("/") - repo = os.environ["GITHUB_REPOSITORY"] - - with open("/tmp/secrets_encrypted.txt") as f: - content = f.read() - - age_pubkey = "age1r0k34dkgzppaew7etm3ka7p0dgxcd365gxe66kuuqsnw6hqax9qswda0sh" - body = ( - f"\n" - f"Encrypted secrets (age pubkey: `{age_pubkey}`).\n" - f"Decrypt: `echo '' | base64 -d | age --decrypt -i <(grep SOPS_AGE_KEY ~/.env | cut -d= -f2-)`\n\n" - f"```\n{content}```" - ) - - data = json.dumps({"body": body}).encode() - req = urllib.request.Request( - f"{url_base}/api/v1/repos/{repo}/issues/354/comments", - data=data, - headers={"Authorization": f"token {token}", "Content-Type": "application/json"}, - method="POST", - ) - with urllib.request.urlopen(req) as r: - result = json.loads(r.read()) - print("Posted comment:", result["id"], result.get("html_url", "")) - PYEOF diff --git a/.forgejo/workflows/firebase-tests.yml b/.forgejo/workflows/firebase-tests.yml index e7df92f..edd3e81 100644 --- a/.forgejo/workflows/firebase-tests.yml +++ b/.forgejo/workflows/firebase-tests.yml @@ -65,9 +65,7 @@ jobs: run: scripts/setup_dagger_remote.sh - name: Run Android Tests on Firebase Test Lab - if: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY != '' }} env: - FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY }} FIREBASE_PROJECT_ID: ${{ vars.FIREBASE_PROJECT_ID }} DAGGER_NO_NAG: "1" run: task test-android-firebase diff --git a/.forgejo/workflows/renovate.yml b/.forgejo/workflows/renovate.yml index 4467e42..05d3c65 100644 --- a/.forgejo/workflows/renovate.yml +++ b/.forgejo/workflows/renovate.yml @@ -27,5 +27,4 @@ jobs: - name: Run Renovate env: DAGGER_NO_NAG: "1" - RENOVATE_FORGEJO_TOKEN: ${{ secrets.RENOVATE_FORGEJO_TOKEN }} run: task renovate diff --git a/.forgejo/workflows/website.yml b/.forgejo/workflows/website.yml index 7e47bd2..43c188d 100644 --- a/.forgejo/workflows/website.yml +++ b/.forgejo/workflows/website.yml @@ -33,17 +33,11 @@ jobs: run: scripts/setup_dagger_remote.sh - name: Build & Update Website - if: ${{ secrets.SSH_PRIVATE_KEY != '' }} env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }} - SSH_USER: ${{ secrets.SSH_USER }} - SSH_HOST: ${{ secrets.SSH_HOST }} DAGGER_NO_NAG: "1" run: task publish-website - name: Verify Website - if: ${{ secrets.SSH_PRIVATE_KEY != '' }} env: - SSH_HOST: ${{ secrets.WEBSITE_SSH_HOST }} + SSH_HOST: ${{ env.WEBSITE_SSH_HOST }} run: scripts/website-verify.sh diff --git a/scripts/setup_dagger_remote.sh b/scripts/setup_dagger_remote.sh index 9177d8a..4cba9f2 100755 --- a/scripts/setup_dagger_remote.sh +++ b/scripts/setup_dagger_remote.sh @@ -16,6 +16,34 @@ sops --decrypt --output-type json secrets.enc.yaml > "$SECRETS_JSON" DAGGER_SSH_KEY=$(jq -r '.DAGGER_SSH_KEY' "$SECRETS_JSON") DAGGER_ENGINE_HOST=$(jq -r '.DAGGER_ENGINE_HOST' "$SECRETS_JSON") +# Export all CI secrets to the GitHub Actions environment so subsequent steps +# can use them without referencing Forgejo secrets directly. +export_secret() { + local name="$1" + local value + value=$(jq -r --arg k "$name" '.[$k] // empty' "$SECRETS_JSON") + if [ -n "${GITHUB_ENV:-}" ]; then + # Use heredoc syntax for multiline-safe export + { + printf '%s<<__EOF__\n' "$name" + printf '%s\n' "$value" + printf '__EOF__\n' + } >> "$GITHUB_ENV" + fi + printf '[secrets] exported %s (%d chars)\n' "$name" "${#value}" +} + +export_secret "SSH_PRIVATE_KEY" +export_secret "SSH_KNOWN_HOSTS" +export_secret "SSH_USER" +export_secret "SSH_HOST" +export_secret "WEBSITE_SSH_HOST" +export_secret "PLAY_STORE_CONFIG_JSON" +export_secret "ANDROID_KEYSTORE_BASE64" +export_secret "ANDROID_KEYSTORE_PASSWORD" +export_secret "FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY" +export_secret "RENOVATE_FORGEJO_TOKEN" + # Setup SSH directory and keys mkdir -p ~/.ssh chmod 700 ~/.ssh diff --git a/secrets.enc.yaml b/secrets.enc.yaml index b764763..d0efe9f 100644 --- a/secrets.enc.yaml +++ b/secrets.enc.yaml @@ -1,23 +1,29 @@ -DAGGER_ENGINE_HOST: ENC[AES256_GCM,data:pMblsGAO/r4=,iv:LlCE8sIM4rFM1Ia3nBdqKCt8xI56wfiZKrNQdDY0VZU=,tag:hyDGXW6jw60x3jZXLJFa/Q==,type:str] -DAGGER_SSH_KEY: ENC[AES256_GCM,data:fD9Wd7jgO34Bs156KF+VLZdfbkbOeyLioPNdxbAjH53UeUOd4lnxSWfDldeufHR+TYCjIka+5PiD5NNvH1cQPrycqHptewjuA2+V00RfkXPKi6+U4TkYmtRobHoc6wT+P5saClGl6QerIrBIWz+f1svZCn+4C65pQ4IpWjzM6iSHn+SSNtijUPuBXpzgiUg/i2m6KTI8QL+9MelkB4F0cRMgI9gfU4QvtI3IoKDKqWAGiHB/WyroylhzFoUnS2VkA0hu7K2PolS6ThWVIuClEItSvoUz7VrHfakjFv6oA23H5iIJwAX7LR8HRYW0qj0pbozEYgJhomQrR8fjQvOq+p2NKvgc6gBMO7hN2wdoYUSjoD/9WsAtDSICpFhtB7E7WWIaFzUTWFXOrXll3GOdfIqUouCzzEk8Y6tp3KHr69paeHcqNYsCCfa57N8osgV6MWMTNOIuijUwvQbbWN2uSfpcNXMV85MltDYd8xnVHiZCV/DNKK60bjYRcX2c+gGy6a9BmrWQp35rbwVnAaxgYvDwrCn7d6JLNSZs,iv:5cpyTi0r2UTuNaqVd351ds63rr7V4U1Y9NqqGZ2D0ro=,tag:DrRd8GxscAPdDG9T8OOuyw==,type:str] -NETCUP_API_KEY: ENC[AES256_GCM,data:Dnwp+wSxKWCrWXrOAr0NqD5odZnitL7dUFZBpTmx/vIBv7l/63DU6HDiWgWConkYfGo=,iv:by+yyCzv/jLAm2BQZJIwe9cArms+G2AxmgzGRketCfQ=,tag:1Wj/Em39+3FeBqUjkQouDQ==,type:str] -NETCUP_API_PASSWORD: ENC[AES256_GCM,data:GU8P9dQmambwV3gaHXeuTyS51dBWTPoyzDXQFdAGdlDEYG5iEoPs158sgTjoD3AB1iU=,iv:b3tOjaxJ/Nfn4NSXqDEwMfDwyli1T2mlQD2g1HrJQRk=,tag:o0ENCpV1IZdeve0o+WMtdA==,type:str] -NETCUP_CUSTOMER_NUMBER: ENC[AES256_GCM,data:QIzD/sSd,iv:5sp4zhQzH5pla7svsuDC3aZdk4tLlWvQOrkOG5Zbp2A=,tag:FyIFvcKWdRGtuy+XAGBYiQ==,type:str] -NTFY_ALERT_MESSAGE_URL: ENC[AES256_GCM,data:l80HCLWo6FMZrLtxMXAUKvxNgcmSJA+MnA==,iv:9+R1YO7JRP+q1CF/TRNwf/Riiq01QtngaZ2WAMy8FKo=,tag:5t9IbpE11SuS4ooCtYuGJg==,type:str] -WIREGUARD_PRIVATE_KEY_P16: ENC[AES256_GCM,data:u3GNdUsUWcwkRxjrfQAkUty0P3m4axoTTmK8Hhnfy5dV7r3s/IP4mWqS25o=,iv:mHFQODMqJD/VVM0udpyyz3qEt4EZCSquqqurwhC/Hsw=,tag:L/abimAshyCm4wyG1h2Jag==,type:str] -WIREGUARD_PRIVATE_KEY_SHAREDINBOX_DE: ENC[AES256_GCM,data:hF7MBGQwEYlhxg9PRyNaFXw3BFvR+Fg+2sL54QfEJMNDkJJBEV5uhY0fyKA=,iv:SI6l2+l/gZAwu1CD4zf4mFtg3cPvMYGz1I8whiJz/+Q=,tag:C92QqcS6dRJQzjOY5S+08A==,type:str] +ANDROID_KEYSTORE_BASE64: ENC[AES256_GCM,data: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,iv:1dydcsllKhAy6TWn3BsaFV4Y3G8Tx3GXnt2sQzrQINg=,tag:h/wh5VTJQq+FeY/coHYn+Q==,type:str] +ANDROID_KEYSTORE_PASSWORD: ENC[AES256_GCM,data:O/80CSUGDFOtBZ5Ov7LQrB6FiJCRPBj6Dw/nBPnN,iv:HIor79EC0Hocc3j+QQk3r+suh4y7AmbwEDoHBalw6PY=,tag:QHQujJ1jJEHHRBDeS+Q4Zw==,type:str] +DAGGER_ENGINE_HOST: ENC[AES256_GCM,data:Tcpl3ew7i3M=,iv:1LY0EZXEkHWj87WZyrdVKjpNsc5a56X7exoV6AK4alc=,tag:5GCXRkTHSeqIgirOKMMULQ==,type:str] +DAGGER_SSH_KEY: ENC[AES256_GCM,data:+1z5YcSWfYkMsKPwpAq83VNcjrbnaxaJ8mTFh7+PgMb2qAYK2gFgMbCAMoWjaaE5fD4cgTkemip9iZlH6SRfU0McnCV32HwtLVt4pA/25dONXcn3Z/vNigE27E4SO6Awr9TIekOMfALp37g7XiQKFOvSTxUOLiFyeg3tfM/8Uwm3ndsD9jZKo08DwzXzD+n5dRO1r5Tg1+P72guThowPnD9O7ewvAaByv43DzStrlJfILYrBcoTpa7rCkFe77NfYpF7sj0mMHnVeLyIMsKboLij/arb+qVVNRbVhejKMG/POaZ4DaZ2ZhXgfkFxs5f00fLtr7GB7ROYHvrbMB2pZKjBbLg2Fkb+b0hNybKI9sfcWEC72yeaBIiViteChENJ+CeVV/4QgzwIBKLBBk8zzxiVYYrEvgfpnWhjqtk6P205JNqiz+ZvsmeXOJiAuUxJkyaWb1MuEg+SO05WS0jvUcfBrA9Kppr9yfKZbx30YOVHSf5QWQOb409bW5mcx5h7gyFmNhGd7r3APOzMv1pQP5qhbORbXsxIRDGjw,iv:PTeqa19dwZh6O06L/7ONGZ70MLIkM9RL8kzYZjkg1q8=,tag:3tmr/abS6pHN/ithZS/Lmg==,type:str] +FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY: ENC[AES256_GCM,data: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,iv:rZXbyIEw/36Of6jWYEKwx8G6M9dABHdTBZfSP3t1y9E=,tag:g6wZzktd8Ce99X0a5wZdnw==,type:str] +NETCUP_API_KEY: ENC[AES256_GCM,data:QZTahxf+jyo4ik/c2RjiGfMP5unlF9h/XQMmoqsgq8tU9IFRnJgqQ/haof20mArOVcg=,iv:5pnmSyU8sQ12uF4Tt4GasH/U6Fax5C2/Wyyzw1+chxU=,tag:u3snw9aUIJsj3oxfqHTXHw==,type:str] +NETCUP_API_PASSWORD: ENC[AES256_GCM,data:oAOu8LgcoKWnwFbKcoK9AESpo9C/wFdV19Rk8O3Ah8egMpnM7DE82+OBQNGt9/k5V3E=,iv:8NZPm+tBmpYq2Y+3by7NXnlNxp6ZUMSKe9QrCdNXGCk=,tag:yvVFO5uLqF1U4wYVgiyCDw==,type:str] +NETCUP_CUSTOMER_NUMBER: ENC[AES256_GCM,data:LGCDas54,iv:u0DjuNq79sKUVMenaHmPUJnPSnEq0vr92z3CGyBMRxQ=,tag:bOK32DEV0X9hj1xik2kBSQ==,type:str] +NTFY_ALERT_MESSAGE_URL: ENC[AES256_GCM,data:QokvvdnarSQXftwHULDDEFPGpVQccPnHBw==,iv:afjYTQ8JrufPAn+jX8aHvAGg0Am58pY3wINRLlUxH9I=,tag:xKX1I4vjFr3E2S+CNCnhaQ==,type:str] +PLAY_STORE_CONFIG_JSON: ENC[AES256_GCM,data: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,iv:aCHdROg0G4b6KEafZVIixqq8QLBftrYLqKooVJEgdNw=,tag:94wvlWvDVd+xOT/FmSShmw==,type:str] +RENOVATE_FORGEJO_TOKEN: ENC[AES256_GCM,data:ZKfxvAKBSHbL60gBPtij54MSvvT/0kOS4O3Fpaumv2KU6n6399mlRw==,iv:v13M9+rgObbHc7bGZb+yf6Xf7pmlgH4bwIxUrc65148=,tag:x7a9tJhJ8khGS9rsYrAvgg==,type:str] +WEBSITE_SSH_HOST: ENC[AES256_GCM,data:KVRWJQSjCHfavN/cOT0=,iv:9Bw2u9ao7REClOfQJCCFRbVHroFjfqUHdDNlvXIFscs=,tag:PnulKS+cr0+G4plWn+UPSw==,type:str] +WIREGUARD_PRIVATE_KEY_P16: ENC[AES256_GCM,data:uwuLBrDbdg2fZShplbZROgZ7OZg74NZzGEHAIqlIs8kpCcSbg7CyRJvebz8=,iv:s6zRSDWjJYyF7qKSZaAGam2U1RydpdgT3cu/kIpvZqU=,tag:VtcbCI4z/Ze1Y/7WigA9PQ==,type:str] +WIREGUARD_PRIVATE_KEY_SHAREDINBOX_DE: ENC[AES256_GCM,data:J/rHPEI6JEkYQyn7hS9gn3xY84pLDD4FRZ0NbDziaGVjdtn9voqqAtV9Y/c=,iv:+0houJIRjIU/DrrzwabWMuU7mpbg+s5uMqHfNpJwNic=,tag:B1gz7p7naH+6L18u7xg6JA==,type:str] sops: age: - - recipient: age1r0k34dkgzppaew7etm3ka7p0dgxcd365gxe66kuuqsnw6hqax9qswda0sh - enc: | + - enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1c1o3dzRzYndUVUplSTVB - MjFsZ0Z4MmpBaXZxTys5SEFKa2VjeUJNVVZZCjI2b3MrSWg5MEtVN3ZLZ2FDZHNu - OTM0QXBlUlRJcEdYM2hvWnhGL2JxUVkKLS0tIFB4a1dQNGtoRnFXdUVRSmpneDl3 - NVF4N1dlaEtMQmZZSlFmamRMWUdsem8K38dzAcQNcZnOZztJQ/fHlXTbkG09GF71 - V0njc2VB7Way3NuYjgXdHhYESiX92W6NMUaK0zzED5Q7jVm4D14AHg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3UWxoekN6MGJSMnVoMXYv + VTJqdGE2czkxd1JaTlRlVHpXSFZ2Q0NiQlNnCm4wSjZlYlZSdnJKQXplUWd5WEZq + cjVaNEdUOWpJYmp2WHdacWE0Ky8zNm8KLS0tIDdWR0F1SmdkWGNRblpOSFI1OVE0 + NTFqM1dNSWlTT3plSVk3ank5TGlqb1EKjl6amQTL5toYmiwsx4+XEw14Vt4PZEcz + rX6a+3XyOTEsJQx9lJxPbMBMFvOSB6WowOJ9jRXanO8t+6ChymXrTQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-06-02T09:02:11Z" - mac: ENC[AES256_GCM,data:8TduuqQ9DeE9b93RQxZsgnv7QOWUn6JD5kAMPWLaSPyqBYhq7qAhUnCa3xds/BybcZSN1uDERwebg0YLLQR8S/QTieAusRU7GZX0Bpb8/lVfADEniyXBpM5063cq7fGWT0cM/Wb+DzBa/koLOv+7OMUU2s4chd+YJgY7ByciiZQ=,iv:SHOJ4IJVwiY4kjIE1KH8uuinJYfXo7SJK4sQHcJzx5M=,tag:0mPIpu7GXOjv5Ews3YdQvQ==,type:str] + recipient: age1r0k34dkgzppaew7etm3ka7p0dgxcd365gxe66kuuqsnw6hqax9qswda0sh + lastmodified: "2026-06-02T22:12:14Z" + mac: ENC[AES256_GCM,data:o2fEjY+QCiP3Zp3DMQeZztIT6glWmWOXGfChgoGzIY3yxr8HdZog/Y1Tjk+yz6K8Rtk+MC52oGqXd7Jwq1mXiKGr4k3JUC619IfRr3jXMb/1GJjf6IxkGYOoi0AsAWkQCYEbZnjm5Gy3OVa8dY3Bt0kfPxcklL+FYWnY7QvypOI=,iv:QFfT5Xv+45upCFTxtLpmZoxfyhX58qOND9U4DET1+hI=,tag:gk16RzvRyJeDwoVvSGTX9A==,type:str] unencrypted_suffix: _unencrypted - version: 3.12.2 + version: 3.13.1