move to branch ADP-216_sops_automation

ADP-179_sops_manage_keys
LeeW 10 months ago
parent d5773f512a
commit def05b9af3

@ -1,171 +0,0 @@
#/usr/bin/env bash
# Purpose: manage .sops.yaml based on gpg keys in the same dir _and_ verify correct configuration
set -euo pipefail
# "anchor" for actions relevant to this script
repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)"
# OPTIONS: ARGPARSING and VALIDATION
# assume location of script as running directly from repo with keys (instead of as a standalone packaged tool)
keyfiles_dir="${repo_root}"
# assume location of secrets config file in pwd
sops_config_dir="${PWD}"
# path to role definitions
roles_def_dir="${repo_root}/roles"
# optional:
opt_list_roles=0
# optional: specify "roles"
roles_list=()
# optional: secrets files to be updated
secrets_file_list=()
while (( $# >= 1 ));do
cur="${1}";
case $cur in
# ARGS: print this help
-h|--help) echo "# ARGUMENTS:"; grep -A 1 '# ARGS:' "${BASH_SOURCE[0]}"; exit 0 ;;
# ARGS: dir containing gpg keyfiles
-k|--key|--keyfiles) keyfiles_dir="${2}"; shift ;;
# ARGS: dir containing .sops.yaml (sops config file)
-c|--config_dir) sops_config_dir="${2}"; shift ;;
# ARGS: [optional] show list of roles and exit
-lr|--list_roles) opt_list_roles=1 ;;
# ARGS: [optional] [list] specify "roles" which correspond to e.g. job roles, projects, etc
-r|--role) roles_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets
-s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets
*) secrets_file_list+=( "${cur}" )
esac
shift;
done
# Resolve Parameters
# ... i.e. combine,override,etc options which interact
if [[ "${#roles_list[@]}" -eq 1 ]]; then
# simply change keyfiles_dir to the "roles" dir
keyfiles_dir="${roles_def_dir}/${roles_list[0]}"
elif [[ "${#roles_list[@]}" -gt 1 ]]; then
>&2 echo "# ERROR: only specify one role"
exit 1
fi
# VALIDATE INPUTS
keyfiles_dir="$(realpath "${keyfiles_dir}")"
test -d "${keyfiles_dir}" || (echo "E: specify dir containing keyfiles; invalid dir: '${keyfiles_dir}'" && exit 1)
sops_config_dir="$(realpath "${sops_config_dir}")"
test -d "${sops_config_dir}" || (echo "E: specify dir containing .sops.yaml, invalid dir: '${sops_config_dir}'" && exit 1)
sops_config="${sops_config_dir}/.sops.yaml"
# create it! # test -e "${sops_config}" || (echo "E: could not locate .sops.yaml, tried ${sops_config}" && exit 1)
if [[ "${#secrets_file_list[@]}" != "0" ]]; then
for secrets_file in "${secrets_file_list[@]}"; do
test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1)
done
fi
# /VALIDATE INPUTS
# /OPTIONS: ARGPARSING and VALIDATION
function fn_extract_fpr(){
gpgkeyfile=$1;shift;
# fingerprint
# caveat: restrict to netgo.de email, use-case:
# uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872
fpr="$(gpg --show-keys --list-options show-only-fpr-mbox "${gpgkeyfile}" | grep '@netgo.de' | awk "{print \$1}")"
echo "${fpr}"
}
function fn_extract_uid(){
gpgkeyfile=$1;shift;
# user id
# caveat: restrict to netgo.de email, use-case:
# uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872
uid="$(gpg --show-keys --with-colons "${gpgkeyfile}" | awk -F':' '$1=="uid" {print $10}' | grep '@netgo.de')"
echo "${uid}"
}
function fn_generate_sops_config(){
# sops.yaml doc: https://github.com/getsops/sops?tab=readme-ov-file#using-sops-yaml-conf-to-select-kms-pgp-and-age-for-new-files
# CAVEAT: dirty hacks, as DRY as feasible within bash
# hack: 2D list workaround, i.e. difficult to have list-of-lists
fpr_list=()
uid_list=()
type_list=()
for gpgkeyfile in *automation*gpg.pub; do
type_list+=( "autom" )
fpr_list+=( "$(fn_extract_fpr "${gpgkeyfile}")" )
uid_list+=( "$(fn_extract_uid "${gpgkeyfile}")" )
done
for gpgkeyfile in $(ls *gpg.pub | grep -v automation); do
type_list+=( "human" )
fpr_list+=( "$(fn_extract_fpr "${gpgkeyfile}")" )
uid_list+=( "$(fn_extract_uid "${gpgkeyfile}")" )
done
# header
echo "# Fingerprint | User Type | User ID"
# entries/rows
for ind in "${!fpr_list[@]}"; do
printf "# %s | %s | %s\n" \
"${fpr_list[${ind}]}" \
"${type_list[${ind}]}" \
"${uid_list[${ind}]}"
done
echo "# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys"
cat <<EOM
creation_rules:
# list of keys for encryption in stage
- pgp: >-
EOM
# all but last line get comma
ind_2nd_last=$((${#fpr_list[@]} - 1))
for fpr in ${fpr_list[@]:0:${ind_2nd_last}}; do
echo " ${fpr},"
done
# last line no comma
# echo " ${fpr_list[-1]}," # requires bash v4.1
echo " ${fpr_list[${ind_2nd_last}]}"
}
# BEGIN
if [[ "${opt_list_roles}" -eq 1 ]]; then
# list available roles and exit
pushd "${roles_def_dir}" > /dev/null 2>&1
>&2 echo "# INFO: listing roles"
ls -1d *
exit 0
popd > /dev/null 2>&1
fi
# UPDATE SOPS CONFIG
# TODO: remove the 'pushd;popd' workaround and make the functions aware of the dir being read
pushd "${keyfiles_dir}" > /dev/null 2>&1
(fn_generate_sops_config) > "${sops_config}"
popd > /dev/null 2>&1
# VERIFY
fn_sops_updatekeys_and_verify(){
sops_enc_file="${1}";shift;
# update keys in secrets file
test -e "${sops_enc_file}" || exit 1
# "update the keys of SOPS files using the config file"
sops updatekeys "${sops_enc_file}"
# verify: dump secrets, GPG_TTY src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
GPG_TTY=$(tty) sops -d "${sops_enc_file}"
}
if [[ "${#secrets_file_list[@]}" != "0" ]]; then
for secrets_file in "${secrets_file_list[@]}"; do
fn_sops_updatekeys_and_verify "${secrets_file}"
done
echo "# SUCESS: all users with keys in this dir should have functional keys"
else
echo "# WARN: no secrets file passed in, make sure to call 'sops updatekeys' on secrets files"
fi

@ -1,69 +0,0 @@
# PURPOSE: BLUEPRINT for .sops.yaml config
# CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users
# Fingerprint | User Type | User ID
# 533A89DD49FBCDA2BF014A936C962DD77704154A | autom | build-infra <NSO-Team-DevOps@netgo.de>
# EFBBBB131CF1D863005C18868C8C09CA950B1DFF | autom | smardigo automation DEMOMPMX (smardigo automation DEMOMPMX) <NSO-Team-DevOps@netgo.de>
# A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de>
# 98235A419EA3586BFF4E3FC692D4A5202A0D9519 | autom | poc-workload01 (poc-workload01 gpg key for sops) <NSO-Team-DevOps@netgo.de>
# E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de>
# 890B2EB48F343D4C6DB9DA0916826F30002D3C1D | autom | smardigo automation QA (smardigo automation QA) <NSO-Team-DevOps@netgo.de>
# 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36 | autom | smardigo automation QANSO (smardigo automation QANSO) <NSO-Team-DevOps@netgo.de>
# 42AA7F6BF795490C1A522C730ED842BE1216E0C1 | autom | rancher-poc <NSO-Team-DevOps@netgo.de>
# B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de>
# DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de>
# 5623CCAD4242CC3E0225A62986AF09C173781578 | autom | smardigo automation SSPDEV <NSO-Team-DevOps@netgo.de>
# 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de>
# 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 | human | Claus Paetow (Firmenadresse) <claus.paetow@netgo.de>
# 03ADBCD31737EB474A4BD235CE615FAF927A2054 | human | Esther Fuhrmann (GPG Key for SOPS) <esther.fuhrmann@netgo.de>
# 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 | human | Hans-Peter Wissenbach <ext.hans-peter.wissenbach@netgo.de>
# 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de>
# 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de>
# BA6328948D50175F196AAB5111F324603D12DD56 | human | Jan Jantzen <jan.jantzen@netgo.de>
# B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de>
# C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de>
# 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de>
# BF3D5CEA36DB58AAE1063D0BB341078652D87924 | human | Lee Watson (dies ist mein schluessel, es gibt viele ähnliche, aber diese ist meins) <lee.watson@netgo.de>
# 1FBAEBCDF9336AD5E7CAD9369158CA503C2CEA15 | human | Matthias Friedrich <ext.matthias.friedrich@netgo.de>
# 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de>
# 13E169CF5C35EF164628764AAA2EECBDE0B38CF7 | human | Philipp Eichhorn <philipp.eichhorn@netgo.de>
# 13D7771BDE5241293F3EDA442AB3335ECC93DDDC | human | Sebastian Schröder <sebastian.schroeder@netgo.de>
# BE3FB94982C2DE95B1EDD388A96613A6B1DB15B5 | human | Sven Ketelsen <sven.ketelsen@netgo.de>
# 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de>
# 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys
creation_rules:
# list of keys for encryption in stage
- pgp: >-
533A89DD49FBCDA2BF014A936C962DD77704154A,
EFBBBB131CF1D863005C18868C8C09CA950B1DFF,
A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
0E8955A79FF4687A3ACF78E50B5E444C75867E58,
98235A419EA3586BFF4E3FC692D4A5202A0D9519,
E5B4FE1E0209DFFE320D2A2E47087747D89B72EC,
890B2EB48F343D4C6DB9DA0916826F30002D3C1D,
4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36,
42AA7F6BF795490C1A522C730ED842BE1216E0C1,
B4BAA59056DC362809388F3F2119881095EA7DED,
DF977A1F65999F4CDD721A27516F64D5932B8AD9,
5623CCAD4242CC3E0225A62986AF09C173781578,
1EBAE111F6EAE0CF136358E8625C5A3B8DA21485,
17B8FDF68AC123EB666934B17D0DF6EC048A5D77,
03ADBCD31737EB474A4BD235CE615FAF927A2054,
04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487,
9E561083EACDE14694C73A323A2F6C1D153D753F,
9F08DA9D42379AFE6610E9E615CCEC6801DBA02E,
BA6328948D50175F196AAB5111F324603D12DD56,
B643A5D780A01F24E95AA100DE6F8E2C149C3748,
C19A7D807525CE24443CA9A49372E896B41FE700,
0DB51A7E90AC6418B7DB83724D38970874850C33,
BF3D5CEA36DB58AAE1063D0BB341078652D87924,
1FBAEBCDF9336AD5E7CAD9369158CA503C2CEA15,
73C2C9954D1BC94DC6682525D2FA233B52AEC75C,
13E169CF5C35EF164628764AAA2EECBDE0B38CF7,
13D7771BDE5241293F3EDA442AB3335ECC93DDDC,
BE3FB94982C2DE95B1EDD388A96613A6B1DB15B5,
0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A,
57F93F2A6585CF2DF9A3B31F13B9F45E122698D5

@ -1,20 +0,0 @@
#!/usr/bin/env bash
set -ueo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
keys_dir="$(dirname "${BASH_SOURCE[0]}")/.."
# deliberate just "dot" for current dir
sops_cfg_dir=.
secrets_file="mock_secrets.yaml"
# prerequisite: for verification of sops config, idempotent create file with a mock secret, src: https://bash-org-archive.com/?244321
test -e "${secrets_file}" || (yq -n '.demo.credentials.secret = "hunter2"' > "${secrets_file}" && sops -e -i "${secrets_file}" )
set -x
# SAMPLE COMMANDS - manually uncomment to try out
# minimal operation: update .sops.yaml, update keys in encrypted file
../bin/update_sops.sh "${secrets_file}"
# Full Args: specify path to each, also for secrets, mix specified and positional params
# ../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}"
# TEST: induce error: invalid file
# ../bin/update_sops.sh "${secrets_file}" -s non_existing_secrets.yaml

@ -1,548 +0,0 @@
demo:
credentials:
secret: ENC[AES256_GCM,data:m3uKjs2CMg==,iv:REr+W6QAcMXjC6kt4+U9W680N7NmOaPCbf5ZsL5v+GU=,tag:JTcpjBULW1tb6wYyQO1cWw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-30T16:32:18Z"
mac: ENC[AES256_GCM,data:DNsgx0KhSbgbCqqME9MUJxHQSt4vVc/C2xfkckwjhK5nb4dW1Bz3Y5wAzPlOkPPKp9YB70/q2spw8MKSiJgeujfqnogPtZ409lbi3/RyF/7WxnJM0KFxdrsQwxfOJdYjfXnXicW9CD6xYPn1+LUVVqnRDBXt4MIzc5AMqaXy8pQ=,iv:dhVa4Dig7E3fld2Y3upjw3/P87bV6/C2oGDBgqQYRVY=,tag:RA9qsnRNMnznkNBDkjssIw==,type:str]
pgp:
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA49EwzBHBfyRAQv/eaN/EciCUfv/8EoTFpGJVlT6TCMkBkIuzO1+w3gBmeRA
phFFw4P5vm9EiveBQOvfDKk4Lhueb54CBZoy9ggeVCtQZGqCey8Er2A5KpKSdePB
1RjUXOsv19usZMw/GVEVG3FoS9G4H6fm5/fP2gmQFRFpNLeBlKvTuMf3PoQ52Djc
e3/HXhXWZlteUpJTf01VLNFoGtRs2iqFqYvxrApvJlxcAeAU5IkCrsLSVIFpBmqM
oF86VoeZgSf1ma0AhhAKmq4t8JUnceLXhFTVWnXzS3jVAyH0OrSabOdA/8OODfkD
Ium5+OWXIt4GCqpOYXjxKBnWvju9PSV/jnszmO1YzE8y5612GZG5Y3iC3nM3gMbW
a1BOfJL6LG7rS+zKZgbsjYSV4NCG/c0n+WklnVE/l0bj0IljqAJSxJCY02zoH6Sf
D1xzgRnDzqzwdbQAg5Id8xLAxDpnzB5cqo8nJibs8L2C3cPq4OM+PGqlSJ4in9li
3i0qTGkHwoFrNjN0pQlN0l4BfxA436xpi1Opse4L5AYKbLYqfvgJLWpIjvzW4ml3
xTNeJJHVpLIQmyY8nxa5bZBLQdfDVr/QEfTeneOugfKvLXNJyuRnUxexNJ5MgfYq
uaeXKyjzLmYhiDlc6HgM
=eJFH
-----END PGP MESSAGE-----
fp: 533A89DD49FBCDA2BF014A936C962DD77704154A
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DK0+AyNumsXsSAQdA7dQjf3wkUf3cJx2Oww7GlWPoXmclG3ib3CqDC1pQd3kw
N1T3A2+z0ClaNyhoEF9NJgUSle1Ru+qN6r7oKdg9/+d1DqHfNFKKETXMw+O0QPey
0l4BC/vV3/f90BmqGRHY5BPzPTcK9d7jDUqzKnZ7F49HqrytIZZqnMa8P+Ok6mxg
KEZheeG4v+woSkMQi+OR+MrPR4o/vHcKNf1d9oYK3D++cnZuSbyqR7iFuyBGex24
=Ztwu
-----END PGP MESSAGE-----
fp: EFBBBB131CF1D863005C18868C8C09CA950B1DFF
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA/3nDyRfgQqhARAAsULKhDya8Ep22iGBBV18Ly+0xrfC5T+Ag+sIgHgqF7xn
Rw7Y/hS1yHVNEYi6iknSWkUkKSXyOBmmgkTGyOoGuxI/RmW8rNNt/QEnVEzwVzNC
3nxOMJLY6q2+99lTK4tzlZI0/7sh4MtqkKelGSlDQiRs/IvcNSwgMxKuTYqiZ0EZ
OkWxBMRUZSxLuhkvncR9ccDylYpe7nVPtluoiIoU9Wf2PQQdyuYBHCCJcSlEvpP0
yH4ulzJn506WzdgydP0z5zFpBYVVjb15emUgr1JLIza/3UJhVDRLRZwExevfpXxs
dufVf+iLlr8O3n9tvT/8FKDMbuIzcYxicmNpL16JGP/RcHF22pVa26gVGmDSeRVa
RFkWrM73veNyIsFzRXlmBxrmMMEDU/N6lWZiLc76FcJuhO7rtJTbEWb+Rj/TmmKi
uTcN140bnl0Xa2EacVq5DehzNOhe6LwrZJglmEKP4MnloCwD7Oct0olFNutjpoi+
q6tQIdz7S0d/Db1aCXBUCrKBHjbBCu4rLApoy+IheCxAvtfuesPC8hkXEJkzGi4n
BBXRPkfcb0aUCRMbs05hF5RGzOCQR5xD98b+gK2NzzTcvDBRYUH2Bp7ncbzsLF6W
l4ucOSpomlmU2Y74jkcSBCy6Sj/POxdRkXoxSfWBaQlQKejo6Mirnh/t7w9AHynS
XgEXkQS3ovN2TybULoatxr5Yh2RyFPnIQNueCdgV5+mFIhodreCa3y+l5gDfaVO8
9u1U1hmQTK/Q1yP1SLgMA9klMpQ9mDnnc4+cIb0EUB8HrXIu4CnUyn+9iNnIYek=
=kqsb
-----END PGP MESSAGE-----
fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdASUWfZghdUhVz6pjyD4huRi4iv+MpYFuSUn4K9/yL5nQw
aanIMowajSu2BhCAtQ7TFeiajW9TM3mdJ52U/nC4th2hUB6m0RNuPaL1CNLlvgze
1GgBCQIQqAV4JepU0pPietTX924A4aa/R+XZBIDKTA++faoed72E9IA4yYl43Lwb
k2xtKnIuc8J/MCWmDKCHWl88M+KbAQ2LxzNntSSQP4oSMJOQ3aUPfeVjjmpPlnNk
AZ646fZ1WfvL2g==
=tzqf
-----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA3LBDEB9lMmaAQ/7BdJzPe7E5ANhMI7+s5JGzGYR/n1wvyC4j/5HE3eINiRD
MOIOOL2lhgBTkRXJd//dzJUACah78vl8v2PsivxuyR9P8lQ6geg+o63CRAIiisF6
Lg2BoB+yOh3GF7EGRwG8NGU6RSrk62IjNvV00ZL6pLJgRIguAqxjZ0HHlWenOfUa
IujQH04VpMFEtIGBIjBF+8fxHxLrBTlH6Fi55YrX8h+30rndIrxMwLULwa2k7Msq
5TIRGXLV2r6hMYgTYYNas8KN1T2nOJSe1pv64VKvkGhbRZehsQhTnK/l+L6iv1Lm
q7c0Wu+AvTOvrU05/4ExgVcJRMo6hXOE2ptfOL8Cl/6mN6RFmypwOE+XDYbTjfxa
YXnKK5Stsy8XUnmSjQzQb0UP+3NnzscZ5u14vSrHfKitY7XFHbAxV1RsDVPJO2XQ
g5fPyqMaNRatyg0qAnVjExYgLI9DLZt/VRlKl2v89a72Dcko9pWG4PUMsEBa/yLf
Xst+byg0LF8dQgu24Q98W3YYfS78ylCuepw9Wsj3mETwyDj48Pxodyn62Q4XxpXe
o4gGtZcAhO1cV9fQJGvxdTulLpynJsok7rh/O3UPZJEhI//7H4P1SAJz6OxFg1hE
U4bTIzSuP4iCcgOs42e9bMiimqc1n383VARx9v5ARKf2Y9YBw5PEqK63PyO+lRvU
aAEJAhCIen6woy1B3BPBVa/uIBj8h8st1OqHaaFez/ItqKDqzHEUVbDyuvEXLTfg
rcH7x8h2EiHPQKdhU+Hi7mmfCyp3zb8WpFx4WCIxuqMeAk4P0OiL4HKhx2DHqzdm
YUqZcbIW5lVN
=SK/Q
-----END PGP MESSAGE-----
fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DpyXAcYv7T/8SAQdArKHd+U3wsNACqQbYf/3eWJzhftHDnmhId0Zx1xPor0Qw
Rbu65nZ+7bArs6R6UTCniabVTYM87N5ncrFX87dWg5r560dlGxu3POuIunZKb0lR
0l4BfyMguY4mM6A1M00ZuExSnCpO1PQgConhA8HNKiPAwZc3jHeGc5zmjZNMdcaE
yStYH+rYCuZEh0K8PoHGIr534SvB2EYKFnGgNXY/myNiSMl4vbsfOaOZWx/b/L6J
=H348
-----END PGP MESSAGE-----
fp: 98235A419EA3586BFF4E3FC692D4A5202A0D9519
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA911WKxzIy2nAQ/+KHZRp2GPIFZP5EdMRhDS27lUP66HBI1egaM/rR7dlj0i
RXfN+ZpX7tLKWajY3fxqZ7bWGXpbKiw+ljhcmjAReXTRTg//jaSPje2euHdXcK5/
NG7524zdARjXWyAFB4luBrDXuRtunUvQqgx3l5MLjnvowiQxK+F5pVWpSUbkFc2Y
xuQraFWQnq7LaEnDIXYyswF/+IRyZ9v3jWeEeIAtlbJJM0yy6gTt1x+4gLb/p+C8
qkrXnMPoNWWosYP0CTgLo6p/k64dnZGFqHJqd1fy9J5MT+IQmXfJJls7LjPhTURz
RAPMN3vWMI8XPBJYZRhdPbCYTp/Kn3kIXtvAoLT0ZeXMJlek21JHajkX27gGRfvM
DDi5rQ4u59XPQWeYWYd0neAsv7evyBs/NDGrz5hSyNUZ+5dzUCYoLeAc03OsVii4
UuUuM1IvXziqpEk6Ad2htmKpI02iWPpui3cEQxAhQXdjBMGqc2ZwpbyxIN14YOfK
2A82EAFhmiWVd0avg5Sqp1QFDeUw3V84OjKWtSsRoGOd4P2rwCVHCsE/Th//VYp6
glxAKLKNVfuVc8VDGY1UFIArwAa2RCed+R3D5nyocmKNjcAjhSBFCtfUK5BASx8W
k5m3Tl7F0jFZgPn68TPQ0RjWhtZ1gcUNGe5Ib/1jltkMt9B43RyWhfv1fw6BfIDS
XgG3u9omw0dDOsjecfN+XK6JsfsfOKdrSD9uYTuXiXI7OI1M0MI1/I/Zakg8mi+H
8ACJVrNzNmONY6jdePLE5u7rrU/giNTCBMBRE8oshb8IjDxVGpSbGtRElhzNECw=
=fvSV
-----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA2Cr/drkb+8JAQ//XShKk9y0KGCL+9+Zfdtdp1/V3DUrMizLg98TCe8tONHE
iEorYjSqP/evswvr47uIEqC2rwK0hyxJT/40mEs54CgIR1LGHmu5PooJt6UTVjrj
fepRV44Yww/NmleD3oAhMw/7WmMGCh5TVSVgCZFi8TY9JPlE/i58KW56UJIpu6RD
2t6siWMvoUQfJexHlHRbmFTSFSqL1awoAnTB/wAM2DJN3tH02PpgPsJcGo7preP/
1q4PWhMR8RpmkYz9v+TSRMYjnJkMi1GE0tGMgeMIk4STp7j3HzsOMgwRXlTTIWR8
lZ9vuiTUVBT+3+DxC4p8Vry28+p/H6TFzIhjAgu4/jLe8WGwOoyIhLVja+pA4PaD
7Lev5qMC36S0JQhuGUEc7tWCEUdpAdyy+0yHfCjPYYPgbMWdhAbc5KbvfZ/OSmlt
faAr1rtaKQtklHWAZhMs0n0kABjol/2aJZdJgOwx0R6H6eWY4hGTxywwynprufDP
pFkx/gQBR/ntHwO1sTp6jxSQsyr3QcDVSlxYWaCjCEwt6yC1Fu6xTHLyWseKGbap
z0QB8oVDtQPZVPggFLzzH3MITGpNTBDDPCt/vljtM03maoUHbJnOxV3uz6fDbsbK
Rxw+7Vr3rASZu0VYqOYNOx3yfUvYP6BzMhKq47LSo1yUuNe3SI+MWLdXWzVrj5LS
XgERquJ0onXECxncWJ0r+6b29dol4CVGaP4pqxM8JuDUqC0mclkMeuvX/27hTcmY
J5AhCYGXT3b6fVFl8WixczMR4EhvcfOgrPukiTaq7wC/LWDHjDCdkmNkmGW7gn4=
=172Z
-----END PGP MESSAGE-----
fp: 890B2EB48F343D4C6DB9DA0916826F30002D3C1D
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA3Zl11RyMNviAQ//WBOCG/5YJwQnmOnNtBe0QqRHMpYyB9sEH76fimbTxWWW
TXpgvDpeu4bio6sLGBmeyj/fE68zJkqYMLmfm7q4Qr6M9HPknNodqC9Vao0vroE3
box2rwrc99IL/EM1jd4nt+54lOxfHxW3qqwH6UBx9uq5ym5iGqpccKu3RZLWVrTg
tf5djjP83tzu/Kell6Q45/Y/sT0qXOBAChrrcdwzx3uG73Ed7gXoPTemfZPorp8S
srUu2rJblQ6Xb7cRpFXDBt61aiegKSrlE8qDADidfJhIeXka161n6xURWfIrF9MQ
t9SWmb23f5zkXOV+C/ArmCan5yQJ1yQnaJ/CHNMfU05mHSC3jnGEznqRjBO5jjUz
OyfEfM3TgVNX87+K/BwGIha4uo5uBMa6npNwM8ssobajj3ECxmC+QXVXiuLXa+do
aE20Ls484NxtTQQuKdQi0/OuSl7oyHsGP5K5KNzDSXzYs/1oCtsNmJogW7l9dBPM
PAz9wJDtHiahnMzJT06DuccRK2ZxfpVG9EEQ4SpsAXAdY4l/fGic1OaHlAgjVXEg
BqJ3qSwtreSsaRcTZiB77OHHgSjsz0/ge215/ngKcgMtJxzSerj9HQX2GXuUNWDK
Vb3N+PcFBfMpac03M0ec9S16o4v/dBYovvBxwCXBnMGoZd3VU6QiZe7paZvFWUjU
aAEJAhDH56c2N2SxNmZP0r62pIJ5kZsA6/ux6X/IRciRDWAaDNzbWCKNP+5x4qvl
TRntrml7v0D0kaIC6KyYdPjmNV7YLbRmaY4LQB3ZANuNWlk5ebfBDqz3cQRycAf9
LxqUD6PqU4fl
=bHdq
-----END PGP MESSAGE-----
fp: 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4D0Z3mmZqL/KkSAQdAVrtB6jKS5gwEfg4d2xthyyeXUOb9uSDAKUbfiOQlg0kw
MHYDabE0zEy/o/rSQhvmV2IrBiT2/RZT/uWTtxGUUO8mIb4odMQMYd/YEx471XIG
1GgBCQIQ+xfblzdivXluHP/bE+0kIC1jeFfesV3BkknteSGnjKwgZq/66cPhZ3dQ
4LTU4rKsYSvjukjQWUfCKS++QIbLkX4JWhSQVXHqU+smoyQPh7b1nvIFHfov19Lh
do9NYHUVgFQlng==
=L8Cl
-----END PGP MESSAGE-----
fp: 42AA7F6BF795490C1A522C730ED842BE1216E0C1
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA5pTFdxsndstAQwA1YBo7WNntWToHsKDy1li3g3tE1cLdg4UzOYTj/yCWHlh
lJ/CAzDdR10i/4taMBa9aizlM5hhCoEJQF9rXkafI8Wj8qkx2oqDwA/vXe8uH2Kc
iJgA2qkr0eVHH/LJ+mP6o0O69gyRTl9XScIl71l9nSX2DqqWYKOEGOVosoZveZss
fwta1GtRM2wzZTXwItbcvHM4uaD3Vz8rGsrJ9h3hGaVdusDBmUDqN3HMSqCicAxT
GQZ5jmgXa6HU3yCA4gqCywCpxjgLBMRQBbt2/ahSW+6ST0CU6sSdMMtNrD8oqfNP
D6HQSud7z/VVgJJuWBG6oGa/Npo8O0ykh6Z2Csv08NiIjZCU5gK1UoZQ1HR4C1t9
UMhmBWoZHFCvS5xf4RAVYW8Pp9wlqrI2bBvPH3extrHgYITKWVa2r5nqcBekBIYO
dVCfD8lD0OA/AkNz+2GljNJxCtM4HEfTTcPEO6DwQqSHBmCXr6d3TSRKilCd10PI
wCwPUhrmRkQGqAcMIhbj0l4B7Y92w7ahVlKpbE3fw7jZM1FGBopfRtO+1ptcIoXP
m9LDZkuwqhBoJtS5+PfVUY5OrAEOspVLtyZ1CcmyIoC6L2ivyPDbN5JF8saLF5H0
25XrdTHJdKrdvuPOmPUj
=TVIM
-----END PGP MESSAGE-----
fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DwvSwby3S138SAQdA4fr1Lj11drzilXIozz13v60Mzv8/j3Ucw9pCCoXIal4w
bWMxvgtDjPXFL9Igr4KAV5Gpab7isXnW07zi1fFxbhh/L2Lqv0AZmn1OjO7pbph3
1GgBCQIQA2ABaA1vXaIyPPhvwhFj/oqUpYiuE1G3eQnpbbCT1yGVYklVfDphszNP
ixkJfv/kVEreit21+Y3ddYxFXZJJ3+Z9Fmda91gosaCqUrTYrYN00u8PhvG7iGA1
PArPg1dX67/Dqw==
=YLYb
-----END PGP MESSAGE-----
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA1j++ZN0cDPgAQv+KFbTuLBfylFZhHQ088zny5+63fQf+NyT9GgXJTTEldue
UvEqv3ki/vQSZBYPyX3F3Qbw2HFvco4t5fgPRJyFAIMoW8hG63ucm4u1exGiXQRU
lk8RFAf80Ac4AxtaYli/MUUEJPIXnD5DCOY97ioPw1xt18dNlIieUr1xGA6A9t05
gBOzB51jaNgHaopCzJaY5bWWVyf7fA6BrqxL74X3FWT2ppivza6DeN6zohWSiv5g
5p2IhnThlcHXWKjHUDRWgmZJxm56QqK+JXgWGrmbzBiXjMu7NCwoCDA9urMDHqqw
cSY+PkLW6Q1HVzjdKjbATOEeILnlUMp48bftFfK1LKXyUjWXRLpIhpMFtPdRbtAW
3P0JCOKDMeVZ4BAYXIMwTCn3xUWjzJewgW/fEo0PS4vqr3QlBtWImAzbT9wJLuQK
L0i9aK3kJCw93BsODeuIfqji2KtDl+pXu01bxDUG0mD2UpKLWeS+c56mLs1orZHh
31lWibxOhViheTsi9QJo0l4B3p3/Bh1ggzZNThpupKsg/8LEsVN4Sko4kA1L7Czl
XY5biCmVX6BWaIqMGbXAFHlyNUJqAbmbQoqZdjDMlzU6+igj8IyjyJCC4PJJgxnO
RRyeiS0FXoXtOE2ZcS60
=kLlr
-----END PGP MESSAGE-----
fp: 5623CCAD4242CC3E0225A62986AF09C173781578
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAx5drVN5V7yDAQwAtaZ7B6pze2vrl0kPTkNdvRCLWSXIyV0Vg3dSvfssEA0L
Q3oIOux4RwG00yxBSFzpLPKWB89gAp2Hin12vcH0XBEu58pdvFee1LDwTqh2hNZf
aw7n8WWkTqWkwXQc7dxBFLArrO//j6JYBCtrChvW6Up70AsrWrqSstxCHlS3bLqC
2tm1AslfdfNhK5ZSM5SQAy4vRv6mBXx1Ukaao00I6MI3P6s5u2+d3aEHkFJE5hIC
69Ywne6rzKDC8eboILRWu/KmaqWA9KZC6EWvaLJKKOvQEdWgSw0wyQD6ORQlcVTR
6Z24nA6mySgodP0hyZhZpJVl+aD5dDtjDyxc0wKwRuib9jxXLECdx9+f9Ff2Ol4g
vFfv5DLqYSeAHMPwrCsd9UjfBDkkS9L/Vzcws5j8ARg5eSptJkfbx0AhNHopAR+E
/hIu1EE2f1R/u6vjfPNaEh7hLIvDr52XBs6F1VfnFCb2EeTP+Fs3K55KNdhj/1VJ
CLR54Eo316xb/grcNXUc0l4BPosECphEEaue9BOfbo5nErS8tU4Oytgtdz6mbQm5
HcjzIJavXlLektAtLxOoL3yoiaPVVt+NiBE83sfkd8veb/5T3T8cVWeorVNH//ui
J3/V2pjt4POvdmFPJKL3
=M+dB
-----END PGP MESSAGE-----
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA1kDHheI9SLWARAAqaE4z5xBbUqv/3AV0P+LXS/N6pgjNzHkEMaWkD85QC3B
T4eO4cFmrDRLBONrN8HERTl7K7YA/mN6/TXQkaHIzN10NuOKjjQvd2TWmcZ/fPkB
j17urH1lCDpU299rh0aXhdXtX3/Jkv1G9HWSwFDg42Yi9gxTwn5dhqwk+tr7s2n2
bkZdFdFOssn22qmcwRH19Iqoc5lzAI4MYZLeL16foluZjmJSYFVb91FWbxEvOWpZ
GDfPB9v3NWE6t9aTIwJ6H5l2AFAhWPxGj3b1sWF2f2s1MdWKO5kYfgJ9IS3oq95I
9cVM//hMmi00Ste8HIsfuxxg9ZpWnLZJ7zs4QeaK/YX4oNT4K7N4svL3x+H06yWb
aM/xPhynZB2cYVmFVuUZiUM+ujvkBfLvmT1SEXj9joJTkkmaMQo6id13QCdorAGt
OGqIPHZLbAwlAlhyEfuD5iz+ucTVMuRDkBkT16RqUByOpabzshPGNa1gD544akFn
Re0Hpwd85qqbQE6YKFW6Ac35c4zeJegMQ1PLU51WriHDlj0/sy38QETgk4AMT8yO
t8ZIE8QNMP5kASLqsqU0TD/Pjr1jz/cieHj6Y/zwug+SPkcVdfCoNUcRORyxQ0wI
XkJykkuWCsr7jEkz0zxKMOukZil8SVYDgUIYhAXt3zBsXD6yuqYWMxGRqlvhcOvS
XgFNLJ4npgSHP3SHCp6euh5arvz+glfvVFlE8g0nB7/OOUKbaCm7NDWyxpTS9BSS
xUy33YQLWcgSrLbI+8zkNq8QP13ma9xPtVmo0Kp5fwUjMQuV9CLJ8JFDL4a0xvg=
=gqOA
-----END PGP MESSAGE-----
fp: 17B8FDF68AC123EB666934B17D0DF6EC048A5D77
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA195cwtvYnl1AQwAwA40c1uJx1Ejgea3u2M51NSyE9g+VFp+KwVxnphLoA9W
FarETibzOlAcITiOheH3RGov/FSlqg0T74IbsAIIYdtPdkrsnl8eBdIU53UF/naQ
sNU1lt8E7jMqxifzytZcxqzXS7oRZECXkceqss2jXajCjdPbgnrm+eDpFD0swREf
Aj7a/Hd8wDQgD7ROErfW6pgxdcaB5boFHRtnuSfC3FIk2LOn6TxxS7Jd7eyDsoVo
7LdIhpPdepsbEfkfQlbn4nkt+KQCw11wB/UJ0CvADqplpnRO8n5ZuubzMUeFUI85
oWgI0wk80ubWu1MVAo8nrEkBj9WH5bgIs6R0loLSy/21z7IG+2rvU3KWGj1Ruvac
LQnd4+ywjbd/M8mbT7Om/dmqHS8VEa7J1ijmraaUnlpaWPNh4vo1ZlPKQ0qCOhMo
RA566A46aCP2MpQp8wkOb9q1MVRRGGcxMsWYOZSdycZOiFT+LLFAA59LjGVs4ZrT
f0G9EkbxQo+UakSfVtUJ0l4BTaLwOpEliPJHF2cdWZnT0miYp+mCEO5+u1yvfl1X
Dg0897lqE4McyqvpZV+S5k5EYY2mhgPls1GCGQw6iWMvsTL0py5D6cnU8PktLm7W
0w6WP+Yx5W0G9VTx7YbU
=BqoT
-----END PGP MESSAGE-----
fp: 03ADBCD31737EB474A4BD235CE615FAF927A2054
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA/IHQvF5YsEcAQwAyhize2RZb9oJ3zplSjXMjn7UFhRAolrc7aShkF9EETXm
Po8LDRcP8Y4AdCNubzApRjEEd9PdwOBEzLBoFTGIT+nA0RUT8POmwmdUas3L0zwJ
5wmcaESgTUO9s6mcP5boyJFkKom3xpHi88sw0rOUH3lfcIpqvUHz14ZO+XdYwG5r
Dlhu0YSP4VygpSb7y7UqOC+MRcGrXQL2Ql3cFFx+GUEiAgM5M5OcN2JDG4R2wxs2
Zl7wdCjounrvfhOslQPvOXgSXi8cEevsCfLYOIIi4WsukC8TUldneyznyyjFVU6H
Ldms56cBH9kz/I+/b/LMObpcgBUSMAVKnAk1HGXoji7oV1thAB+GEDVcT17hEiPU
ZVdd6i0TsQ7RhX1pl87aqIldHEz/wx0tP+yUrr/YHbff8dBmWcdEQpKotnEwifXn
OQwFbD+zV3WRHWlOQYoeQWlm5ZywO03gId/pOxxg5RbaORS6dycUXpG3GMOajBEW
zlexwC1x+nCHQJ7vgg7F0l4Bf2eqQ7yGzP7tdXKYiRdUhTV79CriNxHxcTOHavBt
a+RZdB4P9TNvbGVlSsN3WiZ5Sb1BfXfJ7IpaYaSZIeV8gNfrreny1zt0gfL/Tvdk
eRDSXXw+tR/xCoHqRrN2
=C65g
-----END PGP MESSAGE-----
fp: 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA/fyan/DNa3uARAAzAmh8AWLBhSqa8rE+gm3O9m9nt9aKjqobUVtXHFKC35F
wifFnO58B4cl92u7Dx+Gz+2dP7TgGe6HISpTA0bxP9muZ6gkPcjrpczibOc6Cjj8
UgvYfwABXDc1BExN7GIPYXDGbeDKmnVq7/3krq61ntilk5ESbHqaOWwkJTmI7Cqq
XoCBWwBNSALfqsu+8nVLCSjpapxnYVcAACtCvEtb5RZr2c/MM8QxV1rhnp6yxWrW
5S/7waDfebYP49aTflWY0bPPfXOnGPNcHC7R1qHMpBOHEj8/CwaUs5SJRN5llZPo
iX+GzstchLlW+Rz42EW992aWLk5NpDWit3lDTr0Otc5Hs+LynIrCFRYLZdJNxaJP
RqJPlMFt9qX47adsLE7Gl6zrwtZXSOCatJldJ9lRjyFCv4YxdkXuZzgBPQMYOFed
1GGrdgP325ljySWcEz34WvQWHiPgdkbGmOZO+NcKRwAmbOue0VcR6p3wj3L/uIad
/g/Xbso4vAtTDGhaZ94Qov6JWPbTdMefZTFWsrBhxE8ashta+8qBqFKABiqk8JD6
8HlIdHwkqgi1P9+ZLdMM3PkLsmja7jHy3y6ZRevG3KAoS5uwcD7+FTKJghRjVcCj
yeKZC9vH7DCmewe41S8Fl1m+/IvVrK3VQzA+ZqACv6nWnTgwD8Fshc2j1feMwuLS
XgHDrSD57UnCBN2ozycSynSxEUv5b5+304noOB2RnKSxnGUDOX7b35nOmCH1VO75
X0zeJEMLK9MwXGS1npWnPD/3yQfH1qmbB93EwGgyoo73NmSM2e09mu7OnyJ9YvI=
=LH0z
-----END PGP MESSAGE-----
fp: 9E561083EACDE14694C73A323A2F6C1D153D753F
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA+cOSmNXMUmKAQv/TuSEPsx9bl5tx/TqT1EONvTQPJov+tZs+CB3sluZ93Ci
RSgGBOKe0TXrve+rwCe6KdT+TZNp7mguVCUTBNNYq0wcUanTFzxUrVmRt+bfQhZ5
V/loQbrW7elShDHD4l8yBQg0A1OgFzHAQU5bNV6Ztgb5c1nknO/mIljrJIIehwMQ
MARcoDJLbp5Vy1o/PNyZ0ffZ2I9haF0ajymixUv2gNVlOl0q31dz5CLiRbQt3kZl
bmUxYrL7ezPYlNrQM03ojE765iuHo02EnCHqcCKLtjNVrRzlgP0X3sJnkdXjHTeM
9a0zjOYZn0CnbdCCMDKFOFHaT6feUSqLHi0BCsaanAFNoM2pBHNVXVyKaQnNaMOk
egCJzDqccZG/yiP+7+1mSVjUgi5x+TqQhBZc3Q4VATKrrLYac3gpbbpAtdoBtEzu
n2+uOsKT1swdYD4wWMOMlHmKVjgdrFNZKQarmPCabzTwkoq1hDLUg35tpOiW1inX
3b7lGImT3shXvLQQrCw10l4Bvz/rkbM+be6CLUMGGDzbCWxg2312j0ZhwPu5sJBu
HM5+ADYUqjikJ8IKU8lnREQ8e6XW+31olKjg92+fQ17cIbou9ugXCnlpyQP0FCJj
dtY9LAiVGkZ/ygTCHGJ5
=Cu8X
-----END PGP MESSAGE-----
fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA5bUWViEqX+EAQwAq2VrMHg7Pxk3TsQuAm019OKGKyFQVy8dK5waOmDqNOzN
T7r8g+inWDh7/xmKS+HPIjvJEWDjtZSNqEC4ecgzu7jOPVKpJBQpkU1tDlYCVZd3
zipqDr7Llba8SA6lCMrgCREl3dUhUCecm7jfHnKTz+1FACazhc23C7ycjsdBoRiG
WB4nCf4p9+glSh9KzFO9FhvK+ijMHloKQ2ovaXocjMGN676JLAFtCqaj0lkMnjG2
o4nuX8zC6yn3GX8sLuLC9w7NtsvVt6k/46oc1Xl+G+Mc7LpQhmC3ujVQd68pOoFV
wVQViTPBhhXWqQalCDXNNYWIoxZacKjZwX4NoibL5xzH43WPPYilZPPKbf/nObqb
ORK/6kzHd2rNk+xGHjxOb59tJilK4T4NyvreMKycWAVl2NwZgvIDGVLwpP8aZxt0
XVopegWdd5WnVHBT0idQ5nUoBgLUxSbEPsi0Sz2MO3+h9ra/J5ccYuWHQFaPysbh
XjydWJ73dUHxNpDK9GzP1GgBCQIQIppmJEb0UYTa4CGzpg61JMarIz5+lmZyuIxw
B9LEqmsBa7ZjX2aPz5LOkDLy9cqXURK3kWJQwPWCJyW5t/OxTp9bV+CBxbbJonmB
ES/lvz0m7sH8yLeHHQO7C35ChIh1IrVYhw==
=2Unw
-----END PGP MESSAGE-----
fp: BA6328948D50175F196AAB5111F324603D12DD56
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA8YZutSkx0fiARAA7hdaI2pt2QCqwLXm2QuCxCi0hqt7oph61QoL5z4VmonM
5Zz+nL1b5D9xvkoe1ActiTrv82vEs+WVq90yR2HGlIbtjProLf8R9xzADqfhL1gp
d0vI3Hu7UXfLkoHXPbkhXS3/wITNTRgjRhazu9DTRKASqvkOObqexZNs6AhO6L5b
vPLR6nj84tlxiZW1OUgztk5u9m+A2j81IKraye8hMiY84GvnOt/jKR7S3zes8C18
NqtdfLkkhU6HgqpjGkm1OoXpyjXbSoTQYqH2nUEV87683M1NDb6co8JtbPLtJ8r5
2IOfoZY364ghtD+gvh9RS+Rem4M4HzExRnG+nwNRt62cOVwDrui3FQVwBj9QzPgs
tcFZO6zQ6mgmGUsD1OXJit3amifY7SY28YyYKqw5iCnFQQeECJT+8r0L9izLOdxL
Nl3iGgv5iA1ts5hShKnATq5wamlbdVlt1eZvYtZwNQb7uzwt1PicKn+XG4BmdZm7
Y1ybzL16Rrcq8IfnLEjHFopUIrY3FU0IqtIHRjKFx5L//GIS1U/Zg4gnB+Sm76Up
W86hcUENN9oP8NNDDKp9ZUHKipyrsHl/wSvIWK+O/4/GTQWUbobbmb1vjK3cjpvB
vWgUtgtzoTfnGuD9HcGpC315/LHIvIYjJPmH9+GAsrjVm+APLY7Dm7lwI6qgbDPS
XgHVMVNUJOuf+Lf19maadhN+P4vOw8qI5Elr3qdTo56+EJDo2l7lil6PSTjtSWXm
qj+Ffb9WgKJD5Rs866InalEfUTW50dEh4eVz+1TaSIbPo5CG/nmfSWbhf04GzaA=
=Ymfp
-----END PGP MESSAGE-----
fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA9vEXLVODHp3AQwAqeHOzvDh/7a4WicDLY487hPkkI7Kw5bzsiRA22CBuSnl
6DQM5inFwR28Ugcwcv8mn4qecXF9HMLsUZnUZORiwgDbNvytbSmY9nSy4CyFtDbV
VqbCQmQqmdcPOZ62ikoHIZ0KMfBXYpmgHSupIJWFsLrQHE7l0qxN/eYBUO8FFOUr
GfKjiyxdZxdVT5ylzFysPILRmpjdz4HMUTjkoyFwUqZjo3S+MzSgcYpzGVWe1bpE
fBaOhgDiaBdq7oY4IR45fulbhEtnRih1vnti2ofI//fHTpY0NhAQzeyeNuiEcfsp
MwezjL20Y0yVMqrXxdkuaZnFQVpszM2g9eDwt6x1TssMdAqRdpmxSO28WBvkmOUU
U4VJ4pFZYeykOkfaJf6wnZVKFr5idrxphp/WI3JAITcsfMbDmS1WZt3HUjqj991i
oxOmLA+k6x380xxRJQxZEuUmeV+M5PyIEBaK72JZUhC/wu60+DWcGfjM/N2eyMD8
Ed7uiSsqDDCc3vLNwXrX0l4BqxW8dThOcxXg2llQS2TJN/mD6BGDsWqGH3fxCGur
y6JTSst87JjtvEu1AgUxoLZF04sQ/W6Ix+GE61VVxnafja/dKGzR7ymmLAuizlAk
aB9iJEVVvLk3XrGKaYXU
=0V07
-----END PGP MESSAGE-----
fp: C19A7D807525CE24443CA9A49372E896B41FE700
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMAztV5cc72nziAQ/+LqW/QWxLAM3Ro09xpNoSvB4rIncZ3O6pswCDwsC2iHTA
fOOTaxajxP96GRfPAnmyFxcnA3/aDTuBb0Te7QVslXf2sBFcgU5756CyU/7hN0hZ
cqlIFVhsXiOgTjc85FyVi+5jibGajZEVOIUjF4xDRok02v53RY3hbDe5l4b8LFw0
bi4IE7qBsN/taKXx90Jj82OvKWJzQ9Ixk+/ywqykZkDpZMqUvwkt2mzSEOcDAF2q
yaPyTl41cZQgcac+WSSEsXvWy/tfjsUZ8UAUtjHy8BSh4e0C8SOMqIZbpql6b6Zj
CuZ7F4wLIb53+LIXbMkztinAiVkv1U0mmGXilh4dSXMoyH1DTmtaAhSCYsR6bMBL
yE/ZUmOePYffVaOk2UqiC+IoWz8FegiM3fs6YhMuwJuos4Ce9SQPLFvJHsgcvt/8
1+mnVCv7o1RErwmzR2LdBVwbY8o5OiQcekW7pRK03Geb9VRN6GTDbaEN4zRLEfxQ
93b/LWP2xxiRTUJdVcKVbOZo9Y822TYB1UKpPNA4YtwQb1yxF31dwc7ZQbPOFhx7
NbqEjXHl0HIkhMs5yQCN6WFb77a3XumwJeQgwppAQ6m3nW9/ZW0WGLJJpFMe79pl
/lpPcS8NPjQafZiz/gTsPtBxtuwlZA1x3ip1AvDZGk7hOvKXsZdBoM05ye9PWmPS
XgEVUooe7BHYZM4a2gb41uCK/q/pqmk16RAtz5deuAmE8lQSp107tyk3welt4//O
1EITotcb2vFTCqtd/bl3VCIEKkZNVxAN3PffcL0U9+3lmbL9x7fWZxJhIBBeOjI=
=hItc
-----END PGP MESSAGE-----
fp: 0DB51A7E90AC6418B7DB83724D38970874850C33
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DxQtfVaqAjfQSAQdAnruUnvSRQbTNsFizw778b22EkgFqtlDovwthZ4hMoxUw
lEf2luZeTB5vzeBvpTNO9brw7t/9kBM5qiKR8NiBJFaAxjQI+UyD/HoOPNLTNyiB
1GgBCQIQ/wDt6S7xpHGS1IO2YC0reDK6HcWR3HqQwtC9EP0wShYO0dZerTtu/Cev
qqAjii2h08p98vJc48T7XHmWoIbnebzY9lMBFaxpd4jdXAGnqhw31/Vml7kBue47
rcIm4zdwTngV1A==
=6TY7
-----END PGP MESSAGE-----
fp: BF3D5CEA36DB58AAE1063D0BB341078652D87924
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA0tm3uFynLVYAQ/8CAvrCqlnyco1x7Qtfa2pS6IclbZ0N/D7K6EthmNmcBgw
mL2uNNqM6kizmBj2Xws+4thRFnGs1K5+2yaiCleuXySXDCgOUNPH6Ilfsasyd96+
Zzq4NeTM308Mjz6f1imBkNivrLSCTGswKu0mGc0mnW7Ufg9LhCa4FGlsy61P9wGO
R9XT27MDgD4B8BelhJ+dsFr1YFoxTfHJVxkUR7TmbvZ3ueHyArDwd3VteHzdChbb
8RDqOzbgo9j6dgD/vAk3wFZguo8xBn6ARgqzoNzirvpwqFq6ipveycNcIlQajpaS
f4vb7MaZpIkAVP4bhPyXksQU5Kiq3rH7/1alzwruaha/q99aVfQL0txEF2vwsGWP
zcwFxt0ov5FWEPwhMYxYHXLyXfjeCMxaovSFmCF23B9BGRk5wTsCofZnZPRHjbH6
ZxvX4wexskjfsIX6PAgrBntUFg6hk4nbwxPBNUSiGGbfJF208LoQPjIzm9x5PYtj
aiFDKl+78jEqVk1ozuQhQVqqxu1FXMlLvvzJBI15z6wy2wSZ9KNzOYmbLZTUkCa7
KZB8OJW/QS0PeDj0U1CkzctaNaDY/z3UiL9nvPZbPQOhI6AzX64RiF0XC/zCFfqG
5rUuzvSvB6GyvAuLNOcEHYm16IZcshQEwYo7PX/bbPh1tDpCXfyLrG/Sx+/j5RzS
XgHlWCU6DXilC2IEUbjBUP+TnW08l1+LJnk7t/KIA00l5DKbpXnQQmN4Lf5GcH9l
3eruj/JsXRdX1s/4zpmHlvbzXHWfL4uFl9FEREtel8Ec3bpHl69U70luYAsS1bU=
=r1yS
-----END PGP MESSAGE-----
fp: 1FBAEBCDF9336AD5E7CAD9369158CA503C2CEA15
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DZmNQj/lmIGsSAQdAiEk5rocmiHv7+S5pDrFpe7enuKzkcU0Do5FBJ+/1byQw
1BB2IhBAQQOSpV/NPJqcU0bVivaoHbPheYevc84a70OYYeuNa2xyvpO1iiuqlE9q
1GgBCQIQoU31ncI7zFI4Iu4zroObIghRGf5GW4Ig0wFZDnz5xg4AMCUtWlMbkjGJ
CYIITslWOqbFgGxsUYsjTg1Kt6mkRthIP561g7JlDZgW7S/LcjZLXSEGzEO0ESD2
hZ4XdplbcCh2QA==
=FRKb
-----END PGP MESSAGE-----
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAxSu/PO9GEkJAQv/d7qdtWezsS5FZosyrlDdRA3HAybuZFAtYUGkrakSOqvh
OMr4ogJeXfx2aNXb0iKpqm4CqwTECKh1FPArAvjQOOIfV/QSo8MCBhxN3t5c9K/4
Jw8JpyYpDd21DFnrsxOuzrZ6rKN3xTU5HM2ZcaCUSdQw9YeljLWNIIBfiapVwgYl
EOWPq1B1zDqg2FbnS8/+gTgTYnuv+i5l7rv4OS0dLira+8nr0U/Ed9a05LRWYxFH
4eVwquK5V3S/ikUgyS+U9YDpThmfwhVLZd1WwNzArggeIiNSMsEf7cvzPrXRn+2z
T9d9t72/YQBPdloR76rIfYUe2iDaXyLBp53mcFzsLHpxxjjhbL2VId2rlJV7gA6x
KCTauGDSN7iqpBszfrU2vLkMMsZZtNE74IMnf+QoDnOs+YRAZV+ErkE1qYYDSjzj
Si5jMOY67KKhxyt3NT9qcY4SjOKrzKz/nxiFatx1KP95fBrQ7WoTExgWcptCwEFN
gNP3HCjRKeR1k5IO3YCc0l4BQ+Hk/L71/fiJuRynk2hdvgzRTi2g/cEWtycE3ebu
djkIBuJ/N5gRVfAIi5jSIE/N9bN3p70aGcM/RgS56drvCU+T7ab7lTyKCjQcSkgq
FHOAO95abldxypWhGAeU
=tYn+
-----END PGP MESSAGE-----
fp: 13E169CF5C35EF164628764AAA2EECBDE0B38CF7
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA8b/EJ6Mi55zAQv9Hvg1N7DvdTBZ9YBR387bA/2llpryjPeiCfreCi2LtC6d
ImQdHxwIquh02cLJhknu0okwwq1Kc/VCM1ND5UBt80UqTZHfPIi5ESEgbbAUj11Y
OsdZzChHqxuUivJKCHsyRMhTkbj6cPFWiBGydQ2/rvLBm2wm1vOtw/gnmpOi+Wc9
5BlKMMNwqUVmNpIWEAAmfUbMk6lC4v8t5srhx8vAkVGXq+Gx8pyKYNtyEdVFW+Me
b/Sd+krlQfKwg/acbINAjpMWJXR9bn4B5pQQgj0z+a6lhIIYEXSlZN9k3mh25ywx
MqQjhdvYg4Z4jfLcV/FxZ9Ya/2v0b50TJrzWvhF2TDOstShDrxbxnvMH1Ap0xSZG
2gVxxZ9+2s0qx4Rzn4erDtETWpVcrACd5FqLGDTQX0iKummbPJMgZR9m2BTJ/DwS
o6UA77bghG6Aa+GSLhUNYR6RNdi9sDQnahFKSww0oZv0KOZ6C7Pz9uJqveJ4fMk8
3aXPWo4fWnHJX/uorNVa1GgBCQIQgAYS9/EisclXV6bZWvRBjYeWaQlPyebG2XsO
K6fZMdp4ZeBe7lFJWwqcb1Q9HaCKSn7sXvw7LwKHJMg2lAzygvtsliNa4gGfQH5p
xc9Kd5E/aeXy9YOTcpl1T+OKnKi2Z+s9tw==
=ZXMv
-----END PGP MESSAGE-----
fp: 13D7771BDE5241293F3EDA442AB3335ECC93DDDC
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA+5f33GLJ89bARAAzMXwZTaV30kpPDOtno3jpVigh7X90c+LB60YP5VXoZkY
ptwPIZaft6xM/lNUYnrZzerVqUSzfKk3fqrmS7AMQpLZ01xQyDiH9fRo0wRi8GRD
HoEIdd5+K9zR7bj7hdStMqFzrD/9UN3FdHMtSBHSObaAFezx9Ui+aTYEsv7D2Eey
WzT+dxHUAZUcO5fBBl+zUtJV92KttVGGrkJ5d0Acs8Fv7Dj9t08o4ynjy4zQpV5I
YaPkfOcjCzbbspXIR8171XO3f8Pph9PVm+uyBEOXQW4WZTMwOA/sd6pn9xde80Cs
FHGG9MoAbScSCrXeSsMrw0TFgPvq17GdVo0nzLDFvzxkoAf+EUcdix9Ogx996aGx
C8XBasW2ki0/M/m/VadjH4Ff236k7Ac+ED+iRIHbwn4iv7nrn/fRbBPZLozFJCSm
hYBlDSwUfVWJtVmxM7QurBKLlHF2zBIb2paIS+ZzOc4OdKXfRKMqoZDdQOqR1cH8
/oYUxH3V+biwSVVOyAMEXQjgQfzGzjz4BgoFuMfVdEVJcBZfe32N4koZhPxiZTBD
o8m2d19qOrPz1E4u4VhgshusVUNblIzbK+G4Z/1UfCG/XP9daPowHZyi9rT4nfRL
RBp1aoxMIrn860BauisEXemVsannoYSro93CdTlicX45N1KTXFeN0WQ6GID6eCjS
XgGcdxz95oaX33vXfzi8pV+1Q9ilkMJKRFw0v2Nd5JfR33PbcFV3Uh2WfQLFCTLt
eUii0vwMnfu+f2VLzg3Dhzy3RWqyO3f51eDE2bFNZIkUIqgiMWO9pscItQpIyjs=
=YE6f
-----END PGP MESSAGE-----
fp: BE3FB94982C2DE95B1EDD388A96613A6B1DB15B5
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DAQRCY74qADkSAQdAetwc6o2pJ2NyicPySIlTBmL6lMwy7p4tDQiaqqdVhjIw
BoNkqXmExeSpiK1pTSg4QzSASfEhGKW5fyFSpXTMEjg6vjQ5DKdBOXvaNJxMv6GB
1GgBCQIQo/qxbgOtSmGfssHhZb/LKn5XEOOddvVbsiGASX4/551/wQlzLQ/j8W+z
XDMNyJWCknFW9Tt5/SWgZBpPtVr0Vt98HT8kt3f0n09uHFX1BLy0BN31WaZbl33P
jsKnMQmJhQrMfw==
=49O7
-----END PGP MESSAGE-----
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2025-02-04T09:36:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA5KoiSc3R+FfARAAoSGcFzEkdkpc56bxIsqWjA9Z+fiN8rNYUrlionGUM2r3
qC3vWSRoQG2ImJb5W2a/CKGurWF+/hJFl+qJWcOsxg52ABM1i1D4HZTfdMC+sp9U
Ixlqda2bTSKIgR8j8j5UFKMKGpnfA0AuMHb3BuoQwCI4NvQCgdNcB8MD6wyPgv53
Wh7ZUzQfDHExl+kI0ztLNIARyew6t5gI/ByqI2DDyDtFambconbdvoSLUs+SDO15
lk7cHf/8RLI2pSV1IKm4m39LtxeEufNUZ4NrOX4r0ic4Q0F3fpWdUwXGCjoQ54tO
ZyGqnbTG/TSn7CxgHTBtg707W9QGNm1KTnfx9t/fmMpLK7QvLmzr1ObrnvCRtlgS
c3FKjqlgMETO7M2eeFXxGoL4KTJ8r1HiO3l5nO7VSzK4PefLV98bbKvO5HgPEEGK
QqHTMpRBODTlJ8cz3lrF5MUkjjTSiEZ4fWWDTjgCEexytzgI/iZzGKRsKKFqbwLi
VsVRmVN5wL9htR6z3XmWDieDKF9eL2Iw9hIJD4AC4+KbNVkC5kuD4fJiQ0IRoIhL
9gc2gQKo6h4sk57V+rqccKh+X/18wWvP/I3RBEw6XmXwzkn0a5CkzwmpM0T3puy6
Ow7YKP/AoZSf6BFf3qc+kv254LxnyK8tXI7Vqh76bpmWcOnyOpip/YDSRy9d6nvS
XgHAj1RUN+xYTQMqiD/TaBim7IqVPM6eMWIiLeQcNNsmkHIxQRDLD+D/CzXLOwzQ
AqInuY6PbZHAFMv4/lEhn+pULmrXRp7JzwFbPFgs1S0UqaLKX/vtMweEIqUM5Uw=
=2XYp
-----END PGP MESSAGE-----
fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
unencrypted_suffix: _unencrypted
version: 3.9.3
Loading…
Cancel
Save