From 71170bc1e8f53e5ad30e9d11869d84468a923f4e Mon Sep 17 00:00:00 2001 From: Torben Nehmer Date: Wed, 14 Oct 2026 15:05:12 +0200 Subject: [PATCH] converters: Testkorpus und Harness ziehen nach torben/chemenu-testfiles, Workflow Converters mit Pfad-Trigger, Release-Gate (#232); 10.1.0-beta.2 Files changed: - .gitattributes - .gitea/workflows/converters.yml - .gitea/workflows/release.yml - .gitignore - CHANGES.md - VERSION - docs/dev/development.md - instructions/dev/dev-setup.md - instructions/dev/publish-and-ci.md - instructions/dev/testing-conventions.md - testfiles/README.md - testfiles/mail/github-outlook.msg - testfiles/mail/github-roundcube.eml - testfiles/mail/gog-outlook.msg - testfiles/mail/gog-roundcube.eml - testfiles/mail/gog-roundcube.eml.expect - testfiles/mail/tldr-outlook.msg - testfiles/mail/tldr-roundcube.eml - testfiles/office/excel-artificial.xlsx - testfiles/office/excel-business.xlsx - testfiles/office/excel-business.xlsx.expect - testfiles/office/excel-science.xlsx - testfiles/office/pptx-baseline.pptx - testfiles/office/pptx-master.pptx - testfiles/office/pptx-objects.pptx - testfiles/office/word-complex.docx - testfiles/office/word-simple.docx - testfiles/pdf/einstein-dissertation.pdf - testfiles/pdf/ifg.pdf - testfiles/pdf/nist-ai-rmf.pdf - testfiles/pdf/nist-ssdf-genai.pdf - testfiles/zip/archive.zip - tools/chemenu/tests/test_raw_derive_testfiles.py Co-Authored-By: Claude Code Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2 --- .gitattributes | 4 - .gitea/workflows/converters.yml | 87 + .gitea/workflows/release.yml | 65 + .gitignore | 6 + CHANGES.md | 7 +- VERSION | 2 +- docs/dev/development.md | 28 +- instructions/dev/dev-setup.md | 18 + instructions/dev/publish-and-ci.md | 14 +- instructions/dev/testing-conventions.md | 10 +- testfiles/README.md | 66 - testfiles/mail/github-outlook.msg | Bin 124928 -> 0 bytes testfiles/mail/github-roundcube.eml | 279 ---- testfiles/mail/gog-outlook.msg | Bin 128512 -> 0 bytes testfiles/mail/gog-roundcube.eml | 637 -------- testfiles/mail/gog-roundcube.eml.expect | 3 - testfiles/mail/tldr-outlook.msg | Bin 159232 -> 0 bytes testfiles/mail/tldr-roundcube.eml | 1400 ----------------- testfiles/office/excel-artificial.xlsx | Bin 28742 -> 0 bytes testfiles/office/excel-business.xlsx | Bin 36820 -> 0 bytes testfiles/office/excel-business.xlsx.expect | 2 - testfiles/office/excel-science.xlsx | Bin 670267 -> 0 bytes testfiles/office/pptx-baseline.pptx | Bin 27646 -> 0 bytes testfiles/office/pptx-master.pptx | Bin 49815 -> 0 bytes testfiles/office/pptx-objects.pptx | Bin 30822 -> 0 bytes testfiles/office/word-complex.docx | Bin 518339 -> 0 bytes testfiles/office/word-simple.docx | Bin 22344 -> 0 bytes testfiles/pdf/einstein-dissertation.pdf | Bin 593056 -> 0 bytes testfiles/pdf/ifg.pdf | Bin 56516 -> 0 bytes testfiles/pdf/nist-ai-rmf.pdf | Bin 1174643 -> 0 bytes testfiles/pdf/nist-ssdf-genai.pdf | Bin 650661 -> 0 bytes testfiles/zip/archive.zip | Bin 180915 -> 0 bytes .../tests/test_raw_derive_testfiles.py | 120 -- 33 files changed, 231 insertions(+), 2517 deletions(-) create mode 100644 .gitea/workflows/converters.yml delete mode 100644 testfiles/README.md delete mode 100644 testfiles/mail/github-outlook.msg delete mode 100644 testfiles/mail/github-roundcube.eml delete mode 100644 testfiles/mail/gog-outlook.msg delete mode 100644 testfiles/mail/gog-roundcube.eml delete mode 100644 testfiles/mail/gog-roundcube.eml.expect delete mode 100644 testfiles/mail/tldr-outlook.msg delete mode 100644 testfiles/mail/tldr-roundcube.eml delete mode 100644 testfiles/office/excel-artificial.xlsx delete mode 100644 testfiles/office/excel-business.xlsx delete mode 100644 testfiles/office/excel-business.xlsx.expect delete mode 100644 testfiles/office/excel-science.xlsx delete mode 100644 testfiles/office/pptx-baseline.pptx delete mode 100644 testfiles/office/pptx-master.pptx delete mode 100644 testfiles/office/pptx-objects.pptx delete mode 100644 testfiles/office/word-complex.docx delete mode 100644 testfiles/office/word-simple.docx delete mode 100644 testfiles/pdf/einstein-dissertation.pdf delete mode 100644 testfiles/pdf/ifg.pdf delete mode 100644 testfiles/pdf/nist-ai-rmf.pdf delete mode 100644 testfiles/pdf/nist-ssdf-genai.pdf delete mode 100644 testfiles/zip/archive.zip delete mode 100644 tools/chemenu/tests/test_raw_derive_testfiles.py diff --git a/.gitattributes b/.gitattributes index d9df1e0..a1ea335 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,7 +11,3 @@ # and normalizing a CRLF source on `git add` would change it. /raw/** -text /incoming/** -text - -# Real documents for the `raw derive` tests are compared byte for byte (an .eml with CRLF -# included), so nothing under testfiles/ is ever normalized. -/testfiles/** -text diff --git a/.gitea/workflows/converters.yml b/.gitea/workflows/converters.yml new file mode 100644 index 0000000..73e16cb --- /dev/null +++ b/.gitea/workflows/converters.yml @@ -0,0 +1,87 @@ +# The converters against real documents. +# +# `ci.yml` proves the filters on documents built to be easy (`test_raw_derive.py`, +# `test_raw_derive_binary.py`). This workflow derives the real ones: the test corpus and its +# harness live in the private repository `torben/chemenu-testfiles`, cloned into `testfiles/` +# (gitignored in this repository) and run with this checkout's `tools/.venv`. The corpus is large +# (some 76 MB, one book needs 48 s per derivation) and holds material that may not sit in a public +# repository, which is why none of it runs in the standard CI. +# +# When it runs: +# - on a push to `main` that touches the converter surface (the `paths:` list below). Gitea +# evaluates `paths:` the way GitHub does - observed for `paths-ignore` in `ci.yml` and in use for +# `paths:` in `release.yml`; do not re-derive it; +# - by hand (`workflow_dispatch`), which is the way to run it after a change in the private +# repository alone: a push there starts nothing here, and a commit that reaches the converters +# only indirectly is not in the list; +# - before a release without suffix: `release.yml` carries the same steps as its job `converters` +# and the release job waits for it. A candidate (`-beta.N`) does not run it. +# +# It always tests `main` of the private repository. A converter change that alters an expected +# output (`.expect`) is therefore two commits, one per repository, the private one first. +# +# Runner shape: identical to ci.yml, and for the same reason - see its header for `nodejs`. +# +# Access to the private repository: the per-job token (`${{ gitea.token }}`), as `release.yml` +# uses it for this repository. If this instance does not let it read a second, private repository +# of the same owner, the clone step fails with an authentication error; the way out is a read token +# in 1Password, loaded with `1password/load-secrets-action` the way `ci.yml` loads its secret +# reference (the service account sees only the CI-CD vault). + +name: Converters + +on: + push: + branches: [main] + paths: + - 'tools/chemenu/filters/**' + - 'tools/chemenu/commands/raw/derive.py' + - 'tools/chemenu/commands/raw/accept.py' + - 'tools/chemenu/tests/test_raw_derive*.py' + - 'tools/chemenu/tests/binary_formats.py' + - 'tools/requirements.txt' + - '.gitea/workflows/converters.yml' + workflow_dispatch: + +jobs: + converters: + runs-on: linux-docker + timeout-minutes: 30 + container: + image: debian:trixie-slim + env: + WIKITOOL_SESSION_ID: converters-${{ github.run_id }} + WIKI_TRACE_DIR: /tmp/wikitool-trace + + steps: + - name: System dependencies + run: | + set -eu + apt-get update -qq + apt-get install -y --no-install-recommends \ + python3 python3-venv git nodejs ripgrep ca-certificates + rm -rf /var/lib/apt/lists/* + + - uses: actions/checkout@v7 + + - name: The private test corpus + uses: actions/checkout@v7 + with: + repository: torben/chemenu-testfiles + token: ${{ gitea.token }} + path: testfiles + + - name: Tool environment + run: | + set -eu + git config --global --add safe.directory "$GITHUB_WORKSPACE" + tools/preflight.sh + tools/.venv/bin/python -m pip install --quiet pytest + + - name: Real documents + # `-c pytest.ini` applies the suite's own configuration to a harness that lives outside + # `tools/`; the harness conftest pulls in the suite's conftest (testfiles/README.md). + run: | + set -eu + cd tools + .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness -q --durations=5 diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 9613f43..0984183 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -24,6 +24,13 @@ # tag). It is a separate job so that a failing mirror leaves the release and its # tag standing: the release is the product, the wiki a view of it. It does not # run for a `-beta.N` candidate, for which `release` sets `skip`. +# +# `converters` is the first job: the converter tests against the real documents of the private +# repository `torben/chemenu-testfiles` (converters.yml has the reasoning and is the reference for +# the steps; the two are kept in step by hand, because this instance's support for calling one +# workflow from another is not something this repository relies on). `release` waits for it with +# `needs:`, so a red harness stops the run before a release or a tag exists. For a candidate it +# decides `skip` the way `release` does and ends after its first steps. name: Release @@ -39,7 +46,65 @@ on: workflow_dispatch: jobs: + converters: + runs-on: linux-docker + timeout-minutes: 30 + container: + image: debian:trixie-slim + env: + WIKITOOL_SESSION_ID: release-converters-${{ github.run_id }} + WIKI_TRACE_DIR: /tmp/wikitool-trace + + steps: + - name: System dependencies + run: | + set -eu + apt-get update -qq + apt-get install -y --no-install-recommends \ + python3 python3-venv git nodejs ripgrep ca-certificates + rm -rf /var/lib/apt/lists/* + + - uses: actions/checkout@v7 + + - name: A candidate needs no converter run + id: version + run: | + set -eu + case "$(tr -d '[:space:]' < VERSION)" in + *-beta.*) + echo "VERSION is a running candidate - the converter tests run for a release only." + echo "skip=true" >> "$GITHUB_OUTPUT" + ;; + *) + echo "skip=false" >> "$GITHUB_OUTPUT" + ;; + esac + + - name: The private test corpus + if: steps.version.outputs.skip != 'true' + uses: actions/checkout@v7 + with: + repository: torben/chemenu-testfiles + token: ${{ gitea.token }} + path: testfiles + + - name: Tool environment + if: steps.version.outputs.skip != 'true' + run: | + set -eu + git config --global --add safe.directory "$GITHUB_WORKSPACE" + tools/preflight.sh + tools/.venv/bin/python -m pip install --quiet pytest + + - name: Real documents + if: steps.version.outputs.skip != 'true' + run: | + set -eu + cd tools + .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness -q --durations=5 + release: + needs: converters runs-on: linux-docker container: image: debian:trixie-slim diff --git a/.gitignore b/.gitignore index e790f5e..6f7b0ad 100644 --- a/.gitignore +++ b/.gitignore @@ -192,6 +192,12 @@ npm-debug.log* # anchored back open by the content backstop below, same as `incoming/`. /quarantine/ +# The private test corpus and converter harness (Gitea #232): a clone of +# torben/chemenu-testfiles, made by hand (instructions/dev/dev-setup.md) and run by +# .gitea/workflows/converters.yml. It is its own repository, so this one never tracks it; a clone +# without access simply has no such directory, and nothing in the stack's suite needs it. +/testfiles/ + # Content backstop - keep this block last. Nothing under raw/, kb/, work/ or sites/ may # be excluded by a pattern above; see the header note for why directory patterns # still have to be anchored rather than relying on these negations. diff --git a/CHANGES.md b/CHANGES.md index bad6d2c..8b60262 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -14,14 +14,19 @@ place only: `instructions/dev/version-parts.md` § The candidate model. --- -## 10.1.0-beta.1 - 2026-10-13 - raw derive PDF: Gliederung mit Seite und Zeile im Kopf, Hinterlegungen, Durchstreichungen und abweichende Textfarben als Auszeichnung im Text, Bildseiten als CHECK +## 10.1.0-beta.2 - 2026-10-14 - Konverter-Testkorpus und Harness ziehen in das private Repository chemenu-testfiles; neuer Workflow Converters, Freigabe-Gate im Release **Author:** Torben Nehmer - raw derive PDF: Gliederung mit Seite und Zeile im Kopf, Hinterlegungen, Durchstreichungen und abweichende Textfarben als Auszeichnung im Text, Bildseiten als CHECK +- Konverter-Testkorpus und Harness ziehen in das private Repository chemenu-testfiles; neuer Workflow Converters, Freigabe-Gate im Release +### Konverter-Tests gegen echte Dokumente im privaten Repository + +Der Testkorpus mit echten Dokumenten (PDF, Mail, Office, ZIP) und sein Test liegen nicht mehr in diesem Repository, sondern in dem privaten `torben/chemenu-testfiles`, das ein Entwickler als ignoriertes `testfiles/` neben den Stack klont (kein Submodul; ohne Zugriff fehlt nur dieser Lauf). Der neue Workflow `Converters` führt den Harness bei einem Push auf `main` aus, der die Konverter berührt, und auf Zuruf; `release.yml` führt ihn vor jedem Release ohne Suffix aus und bricht bei Rot vor dem Tag ab. Die gewöhnliche CI enthält den Test nicht mehr, die Abdeckungsgrenze hält. Eine Instanz merkt davon nichts. + ### Große PDFs: Gliederung und Auszeichnungen Bei einem PDF schreibt `raw derive` die Gliederung als Feld `outline` in den Kopf, je Eintrag mit Ebene, Seite und der Zeile der Seitenmarke in `derived.md`; so findet ein Leser einen Abschnitt, ohne das ganze Dokument zu lesen. Im Text stehen drei Auszeichnungen für das, was die Seite nur durch ihre Form sagt: `…` für eine Hinterlegung, `~~…~~` für eine Durchstreichung und `*…*` für eine vom Fließtext abweichende Textfarbe ohne Link. Sie geben das Aussehen wieder, nicht die Bedeutung; ohne sie ist der Text derselbe wie zuvor. Das Feld `markings` im Kopf ist die Legende mit Anzahl und Seiten, kein Tag überschreitet eine Zeile oder Seitenmarke, und Bildseiten melden einen CHECK. Das Layout liest `pdfminer.six`, das neu in `requirements.txt` steht; ein PDF ohne Gliederung und Auszeichnungen wird wie bisher abgeleitet, vorhandene `derived.md` bleiben unberührt. diff --git a/VERSION b/VERSION index 73295a5..2386dcd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.1.0-beta.1 +10.1.0-beta.2 diff --git a/docs/dev/development.md b/docs/dev/development.md index 11d2041..a16ba2f 100644 --- a/docs/dev/development.md +++ b/docs/dev/development.md @@ -40,8 +40,20 @@ Then have the agent run `instructions/bootstrap.md`: the preflight, then and how `dist export` runs as a test tool - is [instructions/dev/dev-setup.md](../../instructions/dev/dev-setup.md). -Real documents for `raw derive` live in [testfiles/](../../testfiles/README.md) and are -committed, so CI derives them too. The repository is public: that README says what may go in. +Real documents for `raw derive` do not live in this repository. The corpus and its test harness +are the private repository `torben/chemenu-testfiles`, cloned by hand into `testfiles/` (gitignored +here, deliberately not a submodule, so a clone without access works unchanged): + +```bash +git clone ssh://git@gitea.nehmer.net:10101/torben/chemenu-testfiles.git testfiles +cd tools && .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness +``` + +It is private because the corpus is large (some 76 MB; one book takes 48 s per derivation) and +holds material that may not sit in a public repository, such as publishers' books and vendors' +documents. Without the clone, `pytest` runs unchanged and the real-document tests are simply not +there; the README of the private repository says what is in it, what each file's origin is and +whether it could be public. The tests run in their own workflow, see [The CI half](#the-ci-half). What a clone has and an instance does not: @@ -181,6 +193,18 @@ the download. `.gitea/workflows/nightly.yml` is the drift check against time rat a commit. `.gitea/workflows/release.yml` is step 6 above, and `.gitea/workflows/wiki-mirror.yml` refills the Gitea wiki by hand (see below). +`.gitea/workflows/converters.yml` runs the converters against the real documents of the private +repository (the clone above, run with the checkout's `tools/.venv`). It starts by itself on a push +to `main` that touches the converter surface - `tools/chemenu/filters/`, `raw/derive.py`, +`raw/accept.py`, `tests/test_raw_derive*.py`, `tests/binary_formats.py`, `tools/requirements.txt` +and the workflow itself - and by hand (`workflow_dispatch`), which is how to run it after a change +in the private repository alone: a push there starts nothing here. It always tests `main` of the +private repository, so a converter change that alters an expected output is two commits, the +private one first. Before a release without suffix, `release.yml` runs the same steps as a job its +release job waits for; a red harness ends the run before a release or a tag exists, and a +`-beta.N` candidate skips it. The job reads the private repository with the per-job token; if +that instance ever stops allowing this, the workflow's header names the 1Password fallback. + Three more workflows carry the live tests of the tracker adapters (Super Productivity, CalDAV): `ci.yml` runs the CalDAV half in a step of its own against Radicale as a process, `tracker-live.yml` runs nightly and covers both providers, and `sp-live-image.yml` builds the diff --git a/instructions/dev/dev-setup.md b/instructions/dev/dev-setup.md index 7869e8a..ed896d4 100644 --- a/instructions/dev/dev-setup.md +++ b/instructions/dev/dev-setup.md @@ -40,6 +40,7 @@ development material under `instructions/dev/` and `commonplace/`, and no | `USER.md`/`SOUL.md` describe a demo operator and persona | Written by the operator during setup | | `tools/wikitool dist upgrade` refuses: there is no stamp to compare against. The checkout follows `main` with `tools/wikitool sync` | Updated with `dist upgrade --latest` | | `instructions/dev/`, `docs/dev/`, `commonplace/` and `.gitea/` are present | Never shipped | + | `testfiles/` may hold the private test corpus (step 6) | Never present | 5. **Use `dist export` as a build and test tool.** It writes exactly the tree a release ships, so it is how a change to the shipped surface is looked at before it is released: @@ -56,6 +57,23 @@ development material under `instructions/dev/` and `commonplace/`, and no `.gitea/workflows/ci.yml` is that replay and the reference for it. Keep scratch trees outside this checkout. +6. **Clone the private test corpus, if you have access.** The real documents the converters are + tested against, and the harness that runs them, are a repository of their own and not part of + this one: + + ```bash + git clone ssh://git@gitea.nehmer.net:10101/torben/chemenu-testfiles.git testfiles + cd tools && .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness + ``` + + The clone sits in `testfiles/`, which `.gitignore` excludes; it is deliberately not a + submodule. Without access nothing breaks: `pytest` in `tools/` needs none of it, and a + session that changes a converter leaves the real-document run to the `converters` workflow + ([publish-and-ci.md](publish-and-ci.md) step 3). What is missing without the clone is the + local run of that harness, nothing else. The corpus holds files that may not be public, so + nothing from it is copied into this repository, an issue or a bug report without its README + saying the file could be public. + ## Decision points - **Asked to set up an instance from this checkout** (`dist export` into the user's folder, or a diff --git a/instructions/dev/publish-and-ci.md b/instructions/dev/publish-and-ci.md index 05234f7..ca36980 100644 --- a/instructions/dev/publish-and-ci.md +++ b/instructions/dev/publish-and-ci.md @@ -7,7 +7,8 @@ description: How a stack change is published and how its CI run is waited for - The local checks cover what they cover on this machine; CI covers the same checks plus a full `setup-instance.md` replay against a fresh `dist export` (`.gitea/workflows/ci.yml`). A green run -on the published commit is therefore the end of the checked stretch of a work package, not a +on the published commit - and, for a converter change, a green `Converters` run (step 3) - is +therefore the end of the checked stretch of a work package, not a formality after it - which is why waiting for it belongs to the phase that wrote the code (`stack-build`), and a red run sends the work back there rather than into the closing phase. @@ -54,6 +55,17 @@ formality after it - which is why waiting for it belongs to the phase that wrote - Keep the polling out of the main context where the harness allows it - a background command or a fork - so a long wait does not fill the session with run listings. + **Converter changes have a second run.** When the published commit touches the converter + surface - `tools/chemenu/filters/`, `tools/chemenu/commands/raw/derive.py` or `accept.py`, + `tools/chemenu/tests/test_raw_derive*.py`, `tools/chemenu/tests/binary_formats.py`, + `tools/requirements.txt` or `.gitea/workflows/converters.yml` - the `Converters` workflow + (`converters.yml`) starts by itself beside CI and derives the real documents of the private + test corpus. It takes longer than CI (allow **10 minutes**); wait for it the same way, with + the same give-up time, and count a red run like a red CI run (step 4). Start it by hand + (`actions_run_write`, `dispatch_workflow` on `main`) when only the private repository changed + or when the commit reaches the converters only indirectly. A release without suffix runs the + same steps as the first job of `release.yml`, which the release waits for. + 4. **A red run is not waited past.** Read the failing job's log, fix the cause, and go back to step 1: this is still build work, whichever skill published. The phase that published ends only on a green run, and the issue stays open until there is one. diff --git a/instructions/dev/testing-conventions.md b/instructions/dev/testing-conventions.md index b7b0866..5189e9f 100644 --- a/instructions/dev/testing-conventions.md +++ b/instructions/dev/testing-conventions.md @@ -187,7 +187,15 @@ Whenever you add or change a test under `tools/chemenu/tests/`. ## Scope -Applies to `tools/chemenu/tests/` only. It says nothing about what to test - the test/review +Applies to `tools/chemenu/tests/` only. Tests against **real documents** are not among them: +they live in the private repository `chemenu-testfiles` (`harness/`, with the corpus beside it), +cloned into the gitignored `testfiles/` ([dev-setup.md](dev-setup.md) step 6) and run with this +checkout's `tools/.venv` by the `converters` workflow. A new file for the corpus is a case for +that harness, not a fixture here; the synthetic filter tests (`test_raw_derive.py`, +`test_raw_derive_binary.py`) stay and are what the suite relies on. The harness borrows this +suite's `conftest.py`, so a change to a fixture there reaches it too. + +This file says nothing about what to test - the test/review expectations for a stack change are the local checks in [publish-and-ci.md](publish-and-ci.md) (`docs verify`, `instructions verify`, pytest), run from `stack-build`. CI runs the suite once, unhardened, because the fixture makes a second hardened run redundant; see the note on the Tests diff --git a/testfiles/README.md b/testfiles/README.md deleted file mode 100644 index 10d73c0..0000000 --- a/testfiles/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# testfiles - -Real documents (PDF, mail, Office, ZIP) that CI feeds to `raw derive`, beyond the synthetic -fixtures in `tools/chemenu/tests/binary_formats.py`. `tools/chemenu/tests/test_raw_derive_testfiles.py` -picks up every file under this directory, so adding a file is adding a test case - no code change. -The directory exists only in a development clone: `dist export` does not ship it. - -## What goes in - -**Everything here is committed to a public repository.** A file belongs here only when it can be -public: - -- a document you wrote for the purpose, or one whose licence allows redistribution; -- no real people, customers, employers, addresses or internal URLs - in the text *and* in the - metadata (PDF author and producer, Office author and company, mail headers, ZIP entry names); -- nothing that was received in confidence. - -The author names of a published work (a NIST publication, a statute) are part of the work, not a -real person in the sense of the second item. Links that address an account - unsubscribe, -settings, tracking - count as personal data even when no name is in them: they let anyone holding -the file reach the recipient's account at the sender. Replace such text with filler of the same -length, so a mail keeps its structure. - -Removing a file later does not remove it from the history. - -## Where the files come from - -| Files | Origin and basis for publishing them | -|-------|--------------------------------------| -| `pdf/nist-ai-rmf.pdf`, `pdf/nist-ssdf-genai.pdf` | NIST AI 600-1 and NIST SP 800-218A: works of the US federal government, public domain. The author in the PDF metadata is the author of the published work. | -| `pdf/ifg.pdf` | Informationsfreiheitsgesetz as published on gesetze-im-internet.de: an official work (§ 5 UrhG), free of copyright. | -| `pdf/einstein-dissertation.pdf` | Einstein's dissertation (1905), a public-domain work. The file is a scan from a web download; the digitizer's terms of use were not checked. Kept deliberately by the maintainer for the scanned pages (OCR coverage). | -| `mail/*` (GitHub, GOG and TLDR newsletters, each as `.eml` and `.msg`) | Mails received by the maintainer; promotional and informational content of the senders, released by the maintainer as test fixtures. Recipient address, names, host names and recipient-bound tokens are replaced by filler of the same length. | -| `office/*`, `zip/archive.zip` | Written by the maintainer for this purpose, with fictitious data; release confirmed by the maintainer. Author fields in the Office metadata are empty. The archive holds copies of six files of this directory (among them two mails) and is rebuilt from the sanitized copies. | - -## Layout - -| Folder | For | -|--------|-----| -| `pdf/` | PDFs, including scanned ones without a text layer | -| `mail/` | `.eml` and `.msg`, with and without attachments, with attached mails | -| `office/` | `.docx`, `.pptx`, `.xlsx` (tracked changes, comments, hidden sheets) | -| `zip/` | archives, including mail-in-ZIP cases | - -The folders are a convention; the test reads every file below this directory. Keep file names -short and free of spaces - a name that is too long for the `raw/` path budget fails the test for -the right reason, but it is a nuisance to find. - -## What the test checks - -For each file, in a throwaway instance: `raw derive` succeeds; the original comes back byte for -byte (a ZIP is unpacked and gets a `.md` beside its documents instead); a second run over the same -bytes gives the same text apart from `derived:`; and `raw accept` takes the folder. The text -compared is every `.md` of the result plus the sheet files of a workbook (`.sheets/*.tsv`, -cells and formula lists). - -A file may carry a sidecar `.expect` (`offer.pdf.expect` for `offer.pdf`): one line per -piece of text that must appear in the derived text - in any `.md` or sheet TSV of the result - -empty lines and lines starting with `#` ignored. A formula is named by its bare text, such as -`SUM(Sales!L6:L29)`, not by a tab-separated line. Without one the file only has to derive, be stable and be accepted. A document that is -meant to be refused (encrypted, damaged) does not belong here; the synthetic tests cover refusals. - -## Trying a file by hand - -`raw derive` moves what it is given, so work on a copy in a throwaway instance, never on -`incoming/` of this clone. diff --git a/testfiles/mail/github-outlook.msg b/testfiles/mail/github-outlook.msg deleted file mode 100644 index f4c9c49b9ce787581345244c5a0d6fb135dc9eac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124928 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

T6yJYx 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%0AaOu8x)mI$4JHFkJ({^TCmg`>6 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 OZD(};QKtTfzy1s71hS9- diff --git a/testfiles/mail/github-roundcube.eml b/testfiles/mail/github-roundcube.eml deleted file mode 100644 index a24abd2..0000000 --- a/testfiles/mail/github-roundcube.eml +++ /dev/null @@ -1,279 +0,0 @@ -Return-Path: -Delivered-To: tester@mail.local -Received: from localhost (localhost [127.0.0.1]) - by relay1.mail.local (Postfix) with ESMTP id 1FBDF3C79 - for ; Fri, 9 Oct 2026 11:33:17 +0200 (CEST) -Authentication-Results: relay1.mail.local (amavis); dkim=pass (2048-bit key) - header.d=github.com -Received: from relay1.mail.local ([127.0.0.1]) - by localhost (relay1.mail.local [127.0.0.1]) (amavis, port 10026) with LMTP - id qUuEj-q26P2w for ; - Fri, 9 Oct 2026 11:33:15 +0200 (CEST) -Received: from gw1.mail.local (gw1.mail.local [192.0.2.12]) - by relay1.mail.local (Postfix) with ESMTPS id EDEF21322 - for ; Fri, 9 Oct 2026 11:33:15 +0200 (CEST) -Received: from gw1.mail.local (localhost [127.0.0.1]) - by gw1.mail.local (Proxmox) with ESMTP id D3AC64175D - for ; Fri, 09 Oct 2026 09:33:15 +0000 (UTC) -Received-SPF: pass (github.com: 192.30.252.200 is authorized to use 'noreply@github.com' in 'mfrom' identity (mechanism 'ip4:192.30.252.0/22' matched)) receiver=gw1.mail.local; identity=mailfrom; envelope-from="noreply@github.com"; helo=out-17.smtp.github.com; client-ip=192.30.252.200 -Received: from out-17.smtp.github.com (out-17.smtp.github.com [192.30.252.200]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) - (No client certificate requested) - by gw1.mail.local (Proxmox) with ESMTPS - for ; Fri, 09 Oct 2026 09:33:12 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; - s=pf2026; t=1791538385; - bh=PUBUAPrF+j4smoQFdA2YzmimF06eina+b1lMnXVkNSk=; - h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: - From; - b=Glbp4FV+ONO7KVD75/XQI32S6nNkgMDQFHE88AhWhiFTBqjvc7Nw0brNmPpI7QiBH - 1XUObBokb3bzlcyCfF6GjccclB4rMdaJQN5sPHlhI5XgNdf1y/u1E+3TMBbegldNVi - fcyAbLCfs5YBofGXvZZRIka2l4OPLhmKTIHhhfnCFBmwfWJQ8DrxdXprVpsWTlss2A - e2D10Cntxq5yeMZM6/ogKBUBlkRcWM3tyqmBxoNYZxYwlQhCrGb851oM8mg5VWGOuW - SzD44XgjIoNFbYIGD1FalbbNNaPM9DD02b4sEiKf7KTxIgfIqCiUdCFmE/rmJbp8V7 - Z4W0FfTcgnejg== -Received: from github.com (hubbernetes-node-b6fc28b.va3-iad.github.net [10.48.68.62]) - by smtp.github.com (Postfix) with ESMTPA id 6DC44501B32 - for ; Fri, 9 Oct 2026 02:33:05 -0700 (PDT) -Date: Fri, 09 Oct 2026 02:33:05 -0700 -From: Boliang Zhang -Reply-To: microsoft/PowerToys -To: microsoft/PowerToys -Cc: Subscribed -Message-ID: -Subject: [microsoft/PowerToys] Pre-release v0.102.2814.0 - Preview - v0.102.2814.0 -Mime-Version: 1.0 -Content-Type: multipart/alternative; - boundary="--==_mimepart_6ac8b4d169f87_11712283000d9"; - charset=UTF-8 -Content-Transfer-Encoding: 7bit -Precedence: list -X-GitHub-Sender: LegendaryBlair -X-GitHub-Recipient: testermuster -X-GitHub-Reason: subscribed -List-ID: microsoft/PowerToys -List-Archive: https://github.com/microsoft/PowerToys -List-Post: -X-GitHub-Notify-Platform: newsies -X-Auto-Response-Suppress: All -destinations: tester@mail.local -X-GitHub-Recipient-Address: tester@mail.local - - -----==_mimepart_6ac8b4d169f87_11712283000d9 -Content-Type: text/plain; - charset=UTF-8 -Content-Transfer-Encoding: 7bit - - -# PowerToys Preview v0.102.2814.0 - -This is a preview-channel build for the **PowerToys 0.102 release train**, produced from the `stable` branch. It follows [v0.102.2803.0](https://github.com/microsoft/PowerToys/releases/tag/v0.102.2803.0); the notes below describe changes since that preview, not the complete 0.102 versus 0.101 changelog. This is not the final stable release. - -## Installer Hashes - -| Description | Filename | sha256 hash | -| --- | --- | --- | -| Per user - x64 | [PowerToysUserSetup-0.102.2814.0-x64.exe][ptUserX64] | 0E0BC3040FAFA85373410BB9221F869DCD6B355B1D95E1B56A11E94FC757D170 | -| Per user - ARM64 | [PowerToysUserSetup-0.102.2814.0-arm64.exe][ptUserArm64] | ECA42FE6646ACD8BE81E8BD3C03B46D6AD8CA8F8D04A080280A01209CD4E07A8 | -| Machine wide - x64 | [PowerToysSetup-0.102.2814.0-x64.exe][ptMachineX64] | 1AB750116360130C7A5B9B7DF1BD6795FD4BB3BF9538DADD64892F40D9DCDAD4 | -| Machine wide - ARM64 | [PowerToysSetup-0.102.2814.0-arm64.exe][ptMachineArm64] | DD37E0895EE43F306883F08B9ADB5367AFF5087C2A90E67C84D24FF345B72C2E | - -[ptUserX64]: https://github.com/microsoft/PowerToys/releases/download/v0.102.2814.0/PowerToysUserSetup-0.102.2814.0-x64.exe -[ptUserArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.102.2814.0/PowerToysUserSetup-0.102.2814.0-arm64.exe -[ptMachineX64]: https://github.com/microsoft/PowerToys/releases/download/v0.102.2814.0/PowerToysSetup-0.102.2814.0-x64.exe -[ptMachineArm64]: https://github.com/microsoft/PowerToys/releases/download/v0.102.2814.0/PowerToysSetup-0.102.2814.0-arm64.exe - -## Highlights - -- **Mouse Button Lock**: Added opt-in left, right, and middle button locking so dragging and selection can continue without holding a button down. -- **Light Switch**: Added a CLI for status, theme switching, and schedule control, with JSON output for automation. -- **Settings**: Added a CLI to inspect module states and save enable/disable changes while PowerToys is closed. -- **Command Palette**: Fixed dragging packaged apps onto the dock and displaying their loaded icons. -- **Quick Accent**: Restored the horizontal scrollbar for overflowing character lists. -- **Shortcut Guide**: Improved startup and indexing, including fixes for rapid-reopen crashes and first-activation flicker. -- **Settings**: Replaced animated welcome-page GIFs with muted, looping H.264 videos and a fallback image. -- **ZoomIt**: Fixed DSC configuration to use actual registry-backed settings and notify the running utility of changes. - -## Command Palette - -- Fixed dragging packaged apps onto the dock so pinned entries launch correctly and their icons appear when loaded in [#51018](https://github.com/microsoft/PowerToys/pull/51018) by [@jiripolasek](https://github.com/jiripolasek) - -## Light Switch - -- Added a CLI to query status, set or toggle configured theme targets, and enable or disable schedules on the running Light Switch service, with JSON output for automation in [#50459](https://github.com/microsoft/PowerToys/pull/50459) - -## Mouse Button Lock - -- Added opt-in Mouse Button Lock for left, right, and middle buttons so dragging and selection can continue after a long press without continuously holding a button in [#49279](https://github.com/microsoft/PowerToys/pull/49279) by [@MuyuanMS](https://github.com/MuyuanMS) and [@owenpkent](https://github.com/owenpkent) - -## Quick Accent - -- Restored the horizontal scrollbar for overflowing character lists so Quick Accent shows the current position without clipping the scrollbar in [#50924](https://github.com/microsoft/PowerToys/pull/50924) by [@daverayment](https://github.com/daverayment) - -## Settings - -- Added a Settings CLI to inspect module states in text or JSON and save enable/disable changes while PowerToys is closed in [#50507](https://github.com/microsoft/PowerToys/pull/50507) by [@Copilot](https://github.com/Copilot) and [@MuyuanMS](https://github.com/MuyuanMS) -- Replaced animated welcome-page GIFs with muted, looping H.264 videos, with a PowerToys logo fallback when playback is unavailable in [#51057](https://github.com/microsoft/PowerToys/pull/51057) by [@Copilot](https://github.com/Copilot) - -## Shortcut Guide - -- Improved startup and shortcut indexing, preventing rapid-reopen crashes and initial overlay flicker while picking up PowerToys shortcut changes on the next launch in [#50609](https://github.com/microsoft/PowerToys/pull/50609) by [@daverayment](https://github.com/daverayment) - -## ZoomIt - -- Fixed the ZoomIt DSC resource to read and update actual registry-backed settings, detect configuration drift, and notify a running ZoomIt instance to reload changes in [#50551](https://github.com/microsoft/PowerToys/pull/50551) by [@Gijsreyn](https://github.com/Gijsreyn) - -## Development - -- Removed unused central package entries and documented retained dependency pins without changing the versions resolved by existing projects in [#50880](https://github.com/microsoft/PowerToys/pull/50880) by [@Copilot](https://github.com/Copilot) -- Moved local build logs into artifacts\logs so context-menu packaging no longer fails when trying to include open MSBuild log files in [#51056](https://github.com/microsoft/PowerToys/pull/51056) by [@Copilot](https://github.com/Copilot) -- Removed obsolete analyzer suppressions for retired template code to keep shared build diagnostics easier to maintain in [#51061](https://github.com/microsoft/PowerToys/pull/51061) by [@Copilot](https://github.com/Copilot) -- Promoted IL2081 trimming diagnostics to build errors in the shared AOT configuration while retaining explicit project-level exceptions in [#51073](https://github.com/microsoft/PowerToys/pull/51073) by [@Copilot](https://github.com/Copilot) -- Aligned main's checked-in release train with stable's existing 0.102 setting; the previous preview already used this release train in [#51111](https://github.com/microsoft/PowerToys/pull/51111) by [@Copilot](https://github.com/Copilot) and [@LegendaryBlair](https://github.com/LegendaryBlair) -- Enabled nullable reference checking across File Explorer preview and thumbnail projects and their unit tests, with annotations and guards that preserve existing preview behavior in [#51099](https://github.com/microsoft/PowerToys/pull/51099) by [@Copilot](https://github.com/Copilot) -- Updated PowerToys Run architecture documentation to point contributors to the current plugin-management and query-processing code in [#50519](https://github.com/microsoft/PowerToys/pull/50519) by [@ElenaGe216](https://github.com/ElenaGe216) and [@Gavin-Yau](https://github.com/Gavin-Yau) -- Enabled warnings-as-errors for the shared UI-test framework after resolving its analyzer warnings and documenting narrowly scoped exceptions in [#51085](https://github.com/microsoft/PowerToys/pull/51085) by [@Copilot](https://github.com/Copilot) -- Corrected developer documentation links so readers can reach the referenced Settings, PowerToys Run, and Group Policy files in [#51108](https://github.com/microsoft/PowerToys/pull/51108) by [@xThreeh](https://github.com/xThreeh) -- Updated Image Resizer observable models for WinRT and AOT compatibility and made the corresponding MVVM generator diagnostic fail the build while preserving settings serialization in [#51067](https://github.com/microsoft/PowerToys/pull/51067) by [@Copilot](https://github.com/Copilot) -- Corrected native build configuration warnings, removed an unused COM reference, and separated intermediate output folders without changing shipped filenames or output locations in [#51090](https://github.com/microsoft/PowerToys/pull/51090) by [@Copilot](https://github.com/Copilot) - -## Changes needing final review - -Two direct integration commits merged the reviewed main changes into stable without separate PRs: [2646ff0204b8](https://github.com/microsoft/PowerToys/commit/2646ff0204b82fb0ddcaf9810f1ef2841ec5009c) and [1fca166ef506](https://github.com/microsoft/PowerToys/commit/1fca166ef506f0f7391615879c13fa3769bdaafa). Both preserve the existing stable-only PowerDisplay diagnostics omission; no new branch-transition removals were identified. - - - - --- -View it on GitHub: -https://github.com/microsoft/PowerToys/releases/tag/v0.102.2814.0 -You are receiving this because you are subscribed to this thread. - -Message ID: -----==_mimepart_6ac8b4d169f87_11712283000d9 -Content-Type: text/html; - charset=UTF-8 -Content-Transfer-Encoding: 7bit - -

-

Preview v0.102.2814.0

Repository: microsoft/PowerToys · Tag: v0.102.2814.0 · Commit: 1fca166 · Released by: LegendaryBlair

- - -

PowerToys Preview v0.102.2814.0

-

This is a preview-channel build for the PowerToys 0.102 release train, produced from the stable branch. It follows v0.102.2803.0; the notes below describe changes since that preview, not the complete 0.102 versus 0.101 changelog. This is not the final stable release.

-

Installer Hashes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DescriptionFilenamesha256 hash
Per user - x64PowerToysUserSetup-0.102.2814.0-x64.exe0E0BC3040FAFA85373410BB9221F869DCD6B355B1D95E1B56A11E94FC757D170
Per user - ARM64PowerToysUserSetup-0.102.2814.0-arm64.exeECA42FE6646ACD8BE81E8BD3C03B46D6AD8CA8F8D04A080280A01209CD4E07A8
Machine wide - x64PowerToysSetup-0.102.2814.0-x64.exe1AB750116360130C7A5B9B7DF1BD6795FD4BB3BF9538DADD64892F40D9DCDAD4
Machine wide - ARM64PowerToysSetup-0.102.2814.0-arm64.exeDD37E0895EE43F306883F08B9ADB5367AFF5087C2A90E67C84D24FF345B72C2E
-

Highlights

-
    -
  • Mouse Button Lock: Added opt-in left, right, and middle button locking so dragging and selection can continue without holding a button down.
  • -
  • Light Switch: Added a CLI for status, theme switching, and schedule control, with JSON output for automation.
  • -
  • Settings: Added a CLI to inspect module states and save enable/disable changes while PowerToys is closed.
  • -
  • Command Palette: Fixed dragging packaged apps onto the dock and displaying their loaded icons.
  • -
  • Quick Accent: Restored the horizontal scrollbar for overflowing character lists.
  • -
  • Shortcut Guide: Improved startup and indexing, including fixes for rapid-reopen crashes and first-activation flicker.
  • -
  • Settings: Replaced animated welcome-page GIFs with muted, looping H.264 videos and a fallback image.
  • -
  • ZoomIt: Fixed DSC configuration to use actual registry-backed settings and notify the running utility of changes.
  • -
-

Command Palette

-
    -
  • Fixed dragging packaged apps onto the dock so pinned entries launch correctly and their icons appear when loaded in #51018 by @jiripolasek
  • -
-

Light Switch

-
    -
  • Added a CLI to query status, set or toggle configured theme targets, and enable or disable schedules on the running Light Switch service, with JSON output for automation in #50459
  • -
-

Mouse Button Lock

-
    -
  • Added opt-in Mouse Button Lock for left, right, and middle buttons so dragging and selection can continue after a long press without continuously holding a button in #49279 by @MuyuanMS and @owenpkent
  • -
-

Quick Accent

-
    -
  • Restored the horizontal scrollbar for overflowing character lists so Quick Accent shows the current position without clipping the scrollbar in #50924 by @daverayment
  • -
-

Settings

-
    -
  • Added a Settings CLI to inspect module states in text or JSON and save enable/disable changes while PowerToys is closed in #50507 by @Copilot and @MuyuanMS
  • -
  • Replaced animated welcome-page GIFs with muted, looping H.264 videos, with a PowerToys logo fallback when playback is unavailable in #51057 by @Copilot
  • -
-

Shortcut Guide

-
    -
  • Improved startup and shortcut indexing, preventing rapid-reopen crashes and initial overlay flicker while picking up PowerToys shortcut changes on the next launch in #50609 by @daverayment
  • -
-

ZoomIt

-
    -
  • Fixed the ZoomIt DSC resource to read and update actual registry-backed settings, detect configuration drift, and notify a running ZoomIt instance to reload changes in #50551 by @Gijsreyn
  • -
-

Development

-
    -
  • Removed unused central package entries and documented retained dependency pins without changing the versions resolved by existing projects in #50880 by @Copilot
  • -
  • Moved local build logs into artifacts\logs so context-menu packaging no longer fails when trying to include open MSBuild log files in #51056 by @Copilot
  • -
  • Removed obsolete analyzer suppressions for retired template code to keep shared build diagnostics easier to maintain in #51061 by @Copilot
  • -
  • Promoted IL2081 trimming diagnostics to build errors in the shared AOT configuration while retaining explicit project-level exceptions in #51073 by @Copilot
  • -
  • Aligned main's checked-in release train with stable's existing 0.102 setting; the previous preview already used this release train in #51111 by @Copilot and @LegendaryBlair
  • -
  • Enabled nullable reference checking across File Explorer preview and thumbnail projects and their unit tests, with annotations and guards that preserve existing preview behavior in #51099 by @Copilot
  • -
  • Updated PowerToys Run architecture documentation to point contributors to the current plugin-management and query-processing code in #50519 by @ElenaGe216 and @Gavin-Yau
  • -
  • Enabled warnings-as-errors for the shared UI-test framework after resolving its analyzer warnings and documenting narrowly scoped exceptions in #51085 by @Copilot
  • -
  • Corrected developer documentation links so readers can reach the referenced Settings, PowerToys Run, and Group Policy files in #51108 by @xThreeh
  • -
  • Updated Image Resizer observable models for WinRT and AOT compatibility and made the corresponding MVVM generator diagnostic fail the build while preserving settings serialization in #51067 by @Copilot
  • -
  • Corrected native build configuration warnings, removed an unused COM reference, and separated intermediate output folders without changing shipped filenames or output locations in #51090 by @Copilot
  • -
-

Changes needing final review

-

Two direct integration commits merged the reviewed main changes into stable without separate PRs: 2646ff0204b8 and 1fca166ef506. Both preserve the existing stable-only PowerDisplay diagnostics omission; no new branch-transition removals were identified.

- - -—

This release has 9 assets:

  • GroupPolicyObjectFiles-0.102.2814.0.zip
  • PowerToysSetup-0.102.2814.0-arm64.exe
  • PowerToysSetup-0.102.2814.0-x64.exe
  • PowerToysUserSetup-0.102.2814.0-arm64.exe
  • PowerToysUserSetup-0.102.2814.0-x64.exe
  • symbols-arm64.zip
  • symbols-x64.zip
  • Source code (zip)
  • Source code (tar.gz)

Visit the release page to download them.

- -

—
You are receiving this because you are watching this repository.
View it on GitHub or unsubscribe from all notifications for this repository.

- -----==_mimepart_6ac8b4d169f87_11712283000d9-- - diff --git a/testfiles/mail/gog-outlook.msg b/testfiles/mail/gog-outlook.msg deleted file mode 100644 index 29db105a56a8d6f5d883f6a9541a47c4be9341c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128512 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

)bFhY7i{6rYcG#POj#pM4*2bWe=L^lq z`t5n~L43X-KC5?BCM(l7AXvxi)UD77)AK2Ri$J=`x8!>CnZ?D$CB>DTDt}9EK#GjI+*h#(C2Uy1nx-Z>5)#nV=1Fh z)+D&y6YCtt5Nd1V^%t;R=#P-Qw8+`S)9QuT)``QSINyq|aYk{d%-MkTjmB^X!lP*` z4w+tsFQ0}YTIef@@rT+2K70^1qP`3paYG?4jP``) zc2*XLq9vUrTU*<@4@Z5Ru>UD)lq0WDKLIlSu$0TAqGKKJ1!3-|<=v%bL+#N#pf>Vi znBwxoInAyWi&FKBvQnDrx~prfOEX8Vn1y|Tnyg?bge!`%LK(yt46sreRveJCe2dQyX&iPocpznc0Uq7uDl(4yI~)1IkvivcoXzjV$wFMbjxG5< zUI5*Log_>W5N{||ca=_f-)q3vW_`~Zi5ca-Mecri$JDFxBd=FgWuDTO%Hvb7)a{EC zuN-QX{xELo(9KMzIC*`y%e8Tj*NiFLlC>lCIuZPorg*C5F>KaGqINn@?a;nI;#7es8=ovwlTZ8 zTT5+l?BSVCeC-5ZO5;6o=u{vNBF=hrQrNg$;9LVMc*re|n&xwM9{Nm>7f7i-5B(YZ z4eBatzTH=P;_EH%jbh1r zBix{+_lqC)*zQ>Bh5YK^qSY&{Exj0lCFy^TWfW!yTO!@_OuI>UKlldIXs3%fN*_(H z_(#pgv>;VVv#8BV=Y^!vkFrrl8K1o zalAxvy}CO~UHFCTH*j^I(r=(bHTrR-R}}YO__5O~?7YFpxdYOmF!4r>BmbJ)+kJ;f zvNLeUJx$}DrPDFQ9rt?u1C!JVr{UP|VBR?~C8K=?1oLRrAZoI(BT)NdJB4ZgVxc~5 zsCVJBJB?+!)OL7Hk$3(kt-+CTF>CsZHX$x_xN4=3W0f!=NE1-Tf&izC(N zjW^$X)4)k^WZvzVzS+(8_j6%)p0>XL_(B`+C3v4|GaGl)K$|{{J`?6yfNa2Qz#Kph zAQxcV9S*L7`)a^EzRauo-YYzyoLjv;w>UAD|7;4(I^*0XG0T0Rcc4AP5Knx&d1NVL${B1@r*6 z0(t>4z&5~WY1;|AC63jA0>>g?rfs565HapW=mFp;{(Okd0{nI%Wqwdg;deV?+Ya0c z%=p`%^$4}evBplC@cS+K)BC=#`<$r{2OTeGoZXb^aAfQpo-Qk#BaLxl^p4cG;qgrL zeSFiAhQAp#F@jptg5M}gsTk!{1X>aPDja1B7dsY@8j(ClW(KN#{27(eW`P277zs62 z_+^Mqk%AJN>%>=t?}!JEmqgp-rb!^Pjqw>R{BlPF!Y)ZA{f>P2L;1pZ(9iLnlfh7? znMMo02raT0(uw7eO8#E~|56SA6!4ytQuvEg4xchT)$mURZ))jpOeuWUr!yuH{%PPH zzy2}*t5oi@9*p*|{+$m?rYY6*pAO#C>L2U>_~p;oF>F3~9ru|64wL_uTpZWgs0?ps z`O8FIaqFaW2iwkl;lbw}gO0*4U45n_r{VEa`|oU9aQkV0{fX<**S_j-e7|wa1<5jC z1ZT!Aw=H=+8E10ZGW2~bA#+!uZ)EQ|(I@yXy-n|V*CP#gpEc(b-`h7MI#Ktd%OAGA zg{jp44C;JNK&thRZM6WvXSDDu9OaHiC4bol#%zBXtjpB%QVsu1@LmMqGg|o4?oyM# z)bkiNALZ#dKWD-IJk2v&_?1Yt>3_-`m81H2IQ{S0@NIngUj*H4u8PHY{f|jcs_AFg zw~mwkB9wly>VwCZe=6hk&!`z?v!J{lKYXU2I>7khUk3l!r>B~J);;!Fd`2sOhAX*0 ze)tTR!YS48F9xqke}mH4ozOG_&;g^+-aXI;yU?CnVABpAK8U|4#!ybjddD)y3Y5z# zXzWhMQe|49Y?>gwdcoHQ*8%)F;g0&G6Jr;S3%09wjtx2-KZbo2;Kz8N!!d)Ia0JiW zJ^n|KbmjEzp8kxCmp6XrpN}*b4&OcdT-H?9%`Vh@^PZ}Y^U-@RL+`W3u?{V^9Hxb6 zx5a=eNbO>@mc_vJ=)o4^ZxNsh&;b3b5%Psnt^szH_$!A^3H}z0<6{Bh+Jo431H3BC z0`(q(sQ~S;N42gH-a28HF?a2#$r)Sz9GmgirHIY={V(+o=Fs@^kNQ0QOI7|+UXL$- z8Gh>H-{}(w|8np$5BQ9h|IGPP)QMEm&veg%U#X^_W5q!Rj%T#+OHpqZr#Sv(dN@y) zYWPm@(hZ-{!Y@MTQvT!Xe>33^!{(zr9p{IA&UpF{)8Bv=nQH!XzB1MDvlu^J0Y^_i zQ=gLl9Z!3z;pZWE)>l4FHu>j-DB&-?-A`6|{mXxj?;?@oNW)L`ZQ`ai=%=M_ zvp%+?zVSEp=h7V;CePe?`r@Iv^FF!L_44znyA;mRE@^6IpwJ4SHpYZxaQHtT0Ln}|E{>^}YQzwxAV(^Zy|1_!*K`P-h z-^~NB$9*`PX2L&G`H{hi4@`e>4$%JmjEgKOJV)#vVPvEb&M{+|eER8A&b%;x?S_q; z&bx5Z$)}!w@zl$%m|k33KDTOK&5~uy*I##OX2zT>j8UFn=y2?;%RBw-bF*{Zb@huH z7iJb-bENuLqgrJ?{M3!s{);gZO>zEr!t$pS(d8NlpV7i+|5L2Sf8)yk3AcaF7mp`@ zO0oJm7k{a=zijx&@f_PA(6~=II2LHG(bLcIm&^hm?f$0%VVm|pTKF9KayBB>@y|r$ z&s>DhHAp^Vho9Q`KL`GBOp|KuSe_B=#JiHK=*2Rha!+k5S}0P@3?5 z6E5k2isP8GKxgFcza$mBP&$&{n`rE<#y^aBJYE5pP@(TZT8zGBXBZ z$9mYTfp2`b{|UuVhntEV?zmfV)eH)`kMucG`J2xFBP)R;-9K}r?vJ$pK2rDj>*~D= zqf4&ZShYIh-_m_US$@fyP3<)lF)2M`$v=_4>;V^#>eu0{KQ4lA+D833Qr>c51~7>uibs&E-LAMthU-{r7=Mzf3_KIcAC z+kYS-%kS7Bi|s0)_>PLqNmQRqd{{N`>{P#Z=0|_Opzhhu7mAiVd;4F0{qxta&g9e$ zo}KFVnr|N1=MeW9&nSu!6k<>J<+tyA@u6QXc;w!`N5A~8Na4qY&9eWmHBVo1|E48R z@BG+(KmKXq)Y-%Bzxj|EU+gFx*~;|F(_4UH%s&%)c+dyr2hj z(A{dz+pOeC`mNt1bw76fD|Es}k>fc!57pwKJqu>74ApG(6-*EqD zF;bO6`_JHbj$@is)4w)_@MZtgv5`OP5dK8~KADkg54`xB%=ryZ-tpRH?_2+)p$Sf= z9I5*e`{xj+3~mrh@wsS(2i$=7LW-`j5A?&QOx}6QZ8=+J%{uTI_qzx0%D;Kk~AKd#DmuKMfm%nlOrrc20{@jM4FUhxyM9-0Et-^i$4z z2hQ04kvX@!XXH%D-kVpD_nUjK$Qv3s`@p2!75iSEwP5B=x$XV0I9<7WKJ?P;pY`AB z{@VmpB*X~ zyy?QJ1@4?!UU$wPTq|-vID6xRrB9X=&2{DE_;Y5>KL5g9`*zOhx#D}XzccXMqxbBe zoIP6mllmvKFyrmNn`r;D9;L%I13sgL&zTqQiAbgWaXeoQNVWYnfp?*vfEqjeV>AD} z9pR6s|1kYksm(uSa6cpF7E@0Djo@_x`26WW;IhtxxsN@&D>Cy^*NT0+_I+)}`w#AP ze|hjzIj=nQ(9r)3l+ElNI(gQcS6tWcci*`Ccll4u{!-S;fu8(R3cT4%T!rpa9^9MT zGrP-OK2VqUYVP;u%-J<<_Vf3?XJE?y=Li2|{|B=_zUOM!WA4KJAK3He;KvJ=Diwc`0K2DW}G&(E$_;Gm-M&iePiz_?!WJTxc|95r#<%Cp4sm0IUDwTvcJN8QQly- zvv2C)7w`YqS<8n$oBOjq-+}dy9LV)NxPDf2=;K4DIKMO0Fyo&7PY?Wc=C9{`Hvif? z`aZrPXJ28l>*qsfPs0h2*B|@W{^dDW=MT;LW_Hc~XLG*u zP<8I++1KowcOWq9T-Wo?r-m*XT%G&e(8B%e1|NNF>E191$-SXrI53b95 zv+pN4vs}gdUd{DnH_x6m_@mr=vX{)6bs*qexxXN1?!HNR>jv)K^M7W2BKM5JTU?oW zTOQ5HyE!Lw`l~}ToLBC?Y5F&x_~F3R+^2V6k$29%uMa$a@VqI`47dND7Z-#xof(tw zp-8;IIqSf;bI+gop_z~NHC*!dT?Nx!drx-0@c4y$muJt<4;MW5aOU8&na}OY*%KJ} z#lW{8o|*S}-+=4a`@gsA+Wckvznh(t{l!7o6Soia?l0NB`O-IBS$lT5HfLYc|8({X zbAEQkOS#LlAIUi|4?y7+Y zb02j5Z}xdZ^$0O`;M-3;J?NU859d5^Np9i0b8Z{lzo%y47lXI$4L;(^xjyF; z{j(o>Z_XQg9&xYSbHo0#p7>_pD}$Z=p@(jsbz07gkFUxNW&i2&zM0F1K9n=>iQhin zd;cegn(|i;Jdk^RVZqS-dt38=v1i7m>mT2dd(hRAyZb|*n04i>OxM~yUp(hGGyHu| zxgUG{q}{*UleK?S-zj~q2cMpE&lMj#@P(XL_MTm|+kNk}v+h6TzekuFF(2o6|c3<;}AN0R=@Riv=+qbaru>(&HeLm;i z)0a?+!G+3e2yUb_7IGivjGpYw|YKf0?cXV*g&LpQk|-SxXUtMh++=^Jyd8vKcC z`s}j4KkxsN`-#2}=KNvcKl-l8dC$f3oY-xv%A94Ba^MvPZ5QYMyq@MPDDP%(?jT|Czcp_kuk?D){f5iw5qS{(8ytUT6?;z0`(@!b_TDt(T{+)!-!|~l{%;PxBT(DTpxY()x7*^uU&d*_s{pi_=9W(~bKm^V17z`Osd zoImHSd7$@Td+z`A|Lwy|AN|o4o%h$}?eG8P;8O>l&)K}EHt)atXYZZjdU)yw_WWr7 z^qhwuSui-QsBUIY{*Hl<^nYlmb?vCS3kw5UseLXpM zp7+(uu6EbYxqaZr+1vWg8Tv?W(XQ~|=kjjZb5B8@YvJIzd!8OVHD_h^LxX#F-8U;T z>*>97&%1En2d@bAPb=y^_oRKBXWg8AWx;uM+|K1IK zgS$8NO}pS-`~LJu{=tKJ(;ryodf?!1`fi@Kwtq{m@8IHx8na%{{=EB**-vIII%luz zL+-YFD)N6fbLotO*=t>0LthwrdHORS{b2r#2ftcySKg%uU)+0e|JQT;4?Zya-u&wQ zI}hCI`c|(0w36IedFKs2vA?tb&x6g*PY#~HrvUl;>;qq#GdcUbJ>`!-GwYTa({@EK zUh=^$Im_?&PWzXkCx_m&?ASKY86_ zlMDYc?PK{aKiGWf%>AEt|L-H6d-GkN-S>=Ze&OPS zi)OYyR#db-+uJ`l_>ufe_S`#gZQjHA5AS(-|5x&UuxDG|UHun6S?hkrHG8Ne|CGV= z+`oT3+jW2cJx*sq-}Hg~ucC?vW@YCtfB5noU*D~JKEC(grv7wRz!mKK%JggZzdZY? z{({`S*;TpDCnrC?&vn`5|C06beT@fR8948}b3S|SB^hWJk>_7pP~u?A5Iy2>e~)zj z@|$-~D!lK@|8~d5{SV)=de>(?*A?F5dFU^v|KV$QxqjQ){3?ffV?Nvgb|gfAZ#zQ@8@czZh0NXh(35s()81Uilqw{*&iPIN_YC z{(Td8Ptl1UP5+jVQ{R7S#vt0;G0_g#j(7e~!cT4fZ9e>407y0cH-k5|^rtreV$z;! z`0qye3w67_1@G?xyccjQz?>Do1MhbN-UoO;;4Z)i03QT=2yi#x!+?(f?g1Eg#GK^2 z4{$%=0l+5!4+0(nJPddQ@F?Ihz~g{jfZc#Tz#hO}z&=1fU;r=(*bf*28~_{yJOOwT z@JYZw0X_xbF@jG6J_GnH;3>evx`#C(T%|ZNw}zB@0L54frd^sI&oN^M%--Ww>~Izy`HqTLZ4^KySiS z@H)6^!tUBIWUL2LaxwNghH)xEb~-M@{AL5*Im^lYx;}8s!}>Az;&MlA2skBkjd%XA z4k@k&q$+=I1MfLHm&OX;S^-+DxksYIS%178-prpQevKV|O8Y+?weX5DOf~)Yf_It( zKW6^R{P+0t?+n*G+S@Tv47L}n5*9Doc@XU{gj&M&2c9D0zWWGFOYz3qC};Ut_egC3 zkJQz5uxG8@hSal#M>Y3$n8LUfAsJ^AxVvE=LA_m{Q1^M0#XQvG#c1==N=wnsxmSe1 zIml}0E5)!Y!VM~X<9R90lgY`cieVhAJ!OyxTt((;9_JJ7J`}@DD$iMRw;Sggt5utj za{*z5Q3ks**tNipzEFoMM-G)LJGw2wTMNu>ipG;%KF}Cy1^7JRu0*~`oVlN^9JV|g zCh?k!5ZT&Wk;mNto+pT^Q0O;xH2%r%6`?Q&q)>}9JVu`rZrU0f$w#K`T`IpNXDK5K zkRGO9Bqqy(J8*cGZ4)G;b(W2BX6{gau2dys=49ug^eA)aOCeHJ2rlMF1!OO2)#|+( zVV8kY57+b1OEjQ-YixCnJ;-9fB2ece^^|D=w5WNgeGTxReF){XnCSK@_)b6Nv1;rp zQZPS*BQwEYv=0dJN5cL-s93Ggg{@%ne*=K-ncf8!zw-;@;7j8@_;+x^%DLkHM?Lt3EjfU}TMI7i)11QO2M7I@j zS3E_=(_%c$C9bTysS-J9sGrPv!g**i%a`XVNVlW0#np$Il6p&45{)w~;QI1Nsu$CUpJU+7}C(kmg* z&a$`rKz_T~@L4HIv=>vNf6egSN;f$YO|-ZEVzzgSYQjwn%}}lMh&}y~Ff4xYH->iS zinqf;)WIO?Ob2Rw7&VGDD5_g$BA>Kd!?9k~-k{=StF~@%ppM5rk>ONBBcUErsX}Cn z=83Z?LZe-gV~3(IKnYup5}~EqLR7T^yN-MnuiY z4So-3tmmz&*DeLF0Jo%rH^nh+Jbl@!LgT2f38AvxZUCiKhilp)^*+&us=zl~&nQrF zp=LuZWv;D_$xI5CV{Nspj2aa@qe9=`j_f7-A!I zF*9@%6VeUv&2Tg;Ux%B?AvTtKLm^#UlOj|xTd5Te<5o;`XZ?vg%WU3+Zv0E6TImsc z@=6#Z`4i>gv6Y(~wed~}O6rNq%__8Fj#pdNNU;r)(F+;ngNzcn*{b9w=etYL=G_R% z3kmI2va$$#+zZUnIf>iP)2;S#cT;nn+DFlOi^jdqXk&!Xs4U+Hlj3 zu@OJSWZngfyF?mILZ@rHoiUm8h&`zihQ%+Osq33pLJw@h4aU6jYdOX=8=zV6Y*wP& zJv=>B^t3X_wqz2Oy5!ipC}*##AWvH$MMW3oTouQAB2%lBO!Yu+dO)RC>OokQN{Ul! zt%NJzTOd<8Gg+RNsnAr@V|de2*^;gIX4SG2&7_e_!2FVC+O*gkDPpj(w_MN<%fxrf z9MdL?GLlpHhtp#^ZfTin$|F%G9$Q_MXA>wP4{sFT1{qlfU9=q1(+8h8s^(e=$L?j2 zl9X6(;4;{9v`y`la+4G*6D927YMqskZqz-KX`SQE ze{%Mc<8sPKN>R>#a&A-RKPf>eFFBjZRR}laC+)fF%dx!=_APK#e9Xu3jAdzBa;9}o z-SVWhjcloGmBar?6T1A;-n3l4Te8BE8RpHn5Nu3z#Xm92ubpCSgl7M>^OB2ZhA(t6 zGj{gyg{N6@8V;K1GSN(m*jVlj#qbM{P>pNDO*<<$#3cTiUvXzl78bhk&(MWxrAO>Z zl@LerCrZR)t8>a44DU5Q9LdQwr&2Zk=Da6&(6lHS#ktTjymO39$;o?{sC~-5pDLwi zdhuHcyEgnvijUpOk(@kC>zrwwlkM4RnbtdL!&{>8kw^ICmsHbo`EJPyOM;j;<3g}8 z(G~y1EWdV&u@Rd6*Un2Wni;;(#mv~*!xx@r#c4QbqRT`xDPm)}Hx$D!JVG_D4L9wq z+z^xaXMV++Bs+AtGCsjhU_>KEiCFil60p9u+zfvgrQZQ5$F$<2n^tR<1OYf?>%=X*?>4ArtX?hLlvlP4L~a2PCn)^8#` zrsBo$g)U~s!^l9=4e-ryH0$sa&Eyap%e|qHF5ILDRm}EulVaSG%kEly;P1%4n4%5m z7pj#Wu_x8!zs1oEYU-o>CbiDQ`v`fLAa51qS2P;27ubp4Wk+fCiQ{vw8_gX>_Rbw= z^~nbrS`3Yp(zFHsP>W?tr|w#Yzc$EM%3fK$r(~uy=8Dx^@Nw;mGpWaZMW11&Wp7&c za!x9}ztqS-$|eJR;~%Az{0%pgLu@SfhC;fyCPk=XHj>bA7`KL>bn_RBzZr^Pp&S2< zolsMey~dYRwcSL%!<%81ouQ*i*70UoDMR_?*%Dw`ePYd>t7Z&%#!q%iwSa?XXt*{- z-IwcFoK@ibYa6&cZ-GwBIf=KQPMh8vYS&LpOB&fGhqpP?lE}$-%cb#8sHT-0Y)Jv* zLa;H>75~I6zjlhT5t{wi&Py(uW2pZ^7qcZJXlDW6_}3i&8*V0t*qW4#{Gq#4C zc8rY)!Ppx!?X7qFo6v{z8*ZaNi#@3lhQ)8(C(5#8J2%SNO0J=oC)Fm$lX-MaIaURo zkiTw77VbNg^?1=6MVI8hB{})WZ!J>CB;6kCaXeSf-kMb<>y%ER+5sO?r+xTs zr>ih>=1D*6oDt6q1>@gm;yF}vdYpBI?Lk_FoEwmLb9z!}!ozcvVoS_7(g~K7uRvah z)R{!FH~yP@HsoBUxRNmVZfp&=@x3U)XP&I$8E>!hKh@g12B#-Ns0G}S%(DXW+~Qt8Ic?sF_ZCojCX9ab)B*Vm zbX^k-p%8xZ1ldGSqHsN6F6wUb9e~_zJ@yVjuEugci>s>Kk-||H&*z$bEV8$S>kKX6 zWDBB>!0{UW<~d%rS>IdGZn*c`szt|cS9QAGq}py+8eGxhS56Y$9By6aPS(-ta`8Ad znX?2uDaDm8IZeeL!OSKU!Hzpvsn>FcE6-I?|K;2RPjYbtT=5&MA;dG3p2tO=m^@@& znf&6L_0BvTZYGUX0rN|m@lWir zsn6ybje+0NY*88t@9W_i$D<>4xwndvFWH_1u6B*BK~Q^WQ!@s0ArmSgS-tR!(p6@0 zE0GJ_l|Tyh3!Z0{Gpuc}X#+3kCf*9U%NV>B8pP3+yXn~mdn;nAlE0X0Va7DFRT?g7 ziRPD7;~(E++GMDfz2zdNLX=@qxc1|6+YolmCXJS-U4rT`DGi zcj#!1rnq;B8euY7SUHX)@A$j;E!PNkM|GgV?PEN;m0B;>4$oJd>ihdxk8CM zww6k{%-H~*IiQ|OEtPtx>@}dw=iV>QYE|NoS}Ny`Da$F-DV=?Ad92sOWH#mK$Y#nl z>y9bTOBNy(ydl$?_ciy%q*t{~YiFx8AT6IJ^T(EJHw!OqE%$bN;U-0># zCi-Umi95?|-h^)aOQhN*P2vdg*skE1yFQce2O6)17NeEPZcer{jv2W(h&P6C9LaN& z+}+NTL!?u;;;56SkhnvLvufOpRCbKDC$ocp^l{{MxGygKymNA3?E7!IN;3Zavx|^j zjR0OSm`ct)4yHdW6V9>2=b1V7V3ePyZ!AxoDd^!?zLG&1c`TA|Sf4NmKaMm||NW+;M({|eto z`6hfu-xYiEn*0}cA|v^GG~{9WzQy$2-|25ANXuiJGHuLIh)EN={E}wcB;Pq^B{o$1 zTTI&sHYRfLPt5Xbrx+Wd*?;Z4=a`oH2bfems~W*5F4S3nW3AQh&_3l6{q2# ziPS_hDPm)}Hx$D!JVG_D4L9u=8}UO-=3TJ3OQg{xbh@_N8Iwtm*pn(@jO0H$5|Mkl z()S~#$IWSpIJ|{P>tqX*wkf})nik1-O9oi7z`Pk3f{lr;_$OxhwNs3Z(CoieyqahK^u8H)$hbQWn0@Eui>6Mk?GD6HoLZl_4$j+lPlbF7@@E?CBF@0}g z`rE9Op+={A=jo6}r#w13Wcs$jfAsIJrX^-tV!pE_rqQ{Nj>P1Rsp(q;Pt1A9^tpbc z9dKMlFm>O0C&g$_#@=ulHx{??Ph5$~%xjTmD8_|gVsO-Y|}q1I)zExyx4b6U5Q+%UgKOT$dx zgLiaw%=A5YX_;o)s2#_YEHjj}OdFmb%$cJl)6)0Zow$3m(=&kf86&F|h(s{*fo;LE zvr}n9vt?`i6RMf>GT6*eSuTdVr#oXSc6N%f5t{wi&Py(u(^{H6hnOEnXJk9p9S!Mw z;JR@NqZ;#Bg}BQv1SnAVTc+=Ud#AV1qtW)#_q%a?H2i)yx&LVqW-YSN^2D?PGaKub zIm>Y+zK*d~osHUrZ^GE`jSFJFqXPCD9Gh@A=N7D=bl__UQTP;eY{PuWdd!8iI#xn* zMsQPY2{;;NiaCD17HP7fk+JRq zC*v+LU#7l75kcB{{;UUgjz*QQ*QxtJnHQs%%xd`LM~+63!wc12pmXtUq(;ZpDrIw# z-`h|^&EVPUSPQ;3aBe|JUW5`uJl3J4cHFA|D(uH=_q1sm^a(M+Pl>4Q~X-e$1Ff}EV%vC6X8{nF4trBluU@u%&!NrMP zGR5d|Onainaw7FOCFrA;A+P76)m(`(@IX#2LC!8l=>(C>Yfx@cP`e=qSHZjl^^2w1 zihiXLa;*)&{C@X3l*D$VtQB@|kMbx-E#nuqxQF+|>2cN|5Bc?)#faC{$kkHhz8Cqt z3}xeo$qT8s1u@=+Qt+ZgR^lG?MwC<;N@{6Bd$|F&g=i_ADAyJ6#V+MGg8%K%W|$Xq zQAQ_H9~46!UxxBojFRX<-fuw7uRsZKZD9*aZ#&+$Ajd24){S!Vp^Ubn&sqo_aVyGn z8Dw51QgtQd8+)J_xZVyerWh^12<5@{Qhoxpm@p*Ma`bi^&}w|h*;UBRji~hj#z zT72L?@ud~Vl9d2{$>u~Vk7DF!1@e0#`iCl%##QJ!Dp2b=PU(hSGsdeNv#wQ|z}tgCN)^*Z zD4SKt^J3)vMwHG5lvF1;)*;UqLNa-f@Af`?uHxPV7mLxBg7CE$sa^XvXerzY#;^Fv z9L$NMdwHQ_m7`Z~Mo;ZUYiUC6x1;V{jh3+x?O-W-etQYTP&NzEUaHV8!m5OBK*`xT zwxFfazqKfv)hMCuNcS@MdE!emk!9Sq$GfynoHDu!dEJISdL3Fr0Ob*Zc`YPbGfJ#S zjXqlNdu2i?@axvg(C_$9+{ws97dE$GB4 zmoR#YZsaIoJNkzXKsoyF5|qzMymOY4y?PUJxe~Ew%UPLFN9wH_~=iR)Lx1ACkONDmMf|Q^-P|X8n04#XWeRTUZe3^jn`?sUgIW> zH)wp7#v2vBzOGrDH)(ve#@A?kt;VJ_-=)o)HNIYBkH#$;w*o&pI9Th|W}n7w8n5sjl7_h`IT<6ezp8gJ8hyT&(ae3QmIG`?Bm zcWb;;<6AU-kH+uS_*RW?)A)9c@6h;8jo+v7`!&8x;}2;3L5)A8@!cAKSmTdqe2>QW zYRvD?@Zon@_vN zYFhS!?`ZRPfiF1t@3r3pru**$zwouM)%-x)zpU{OHGW0o9|2E(Y4`kB#a#CqaLwe6 zb*}@z@U;~+KNh;Q`q77Uyc8t!arO1ci>mIUr_gk zroRb%?cJ}{IWmNh0gUpf%>-t8CTaRf8lSB3DH@-u@oB*1KOOk)FZR?-R_2+tQv}zX z0nF!2jnC5fY>m$Wru%cX`8;KwS#!Ra>n_mr3pKt7_^D|p*Io?F`f!P+Pu2KRjW5&q za*eM5M!l?=2K=X-YwM;1qaM~cff?@^zz3Ij>au|O%+z?6#@QOrR`}6Ha};(i$Wi#k zg}J~7mt-u+14cOW^A#Qa5is-Bt<41*7Xq_A6ah0G#hPBCaVhXiyMJ3-rp@IVR{$fw zYUgTmrN&hnS8F^^ zJiVIkQ+Q`xn>M#=ycM{uZFXHRF!He`28{fx*{19l)NKcb9I3kz_*ZLVbvFUC{_Oy! zyt)~f`T1^Owu7C(d~N~0_U?tX?*T@8uYIqwpILjWGGAPGo3_6l_^D~P)!qS2d3q-> z;!*oPv9EhS@Sk#iP*S(|eUX4EreCUrIbsq!XQZu>kmyvu?uq1a-dC)yMC zt@lMYmlqWmb;fz0XR}aGrpA*rK1t!7bth|lipHmE`_nW&UE|5xeu_4qq4Aj-pQZ8H z8lR)_xf-9R@dX-BRrvVm-(!D&Zjl;0j`#h&C5Zo(fK;+e{SsX8xa2Z-ydYS z=22NW&JX+Pi!{&J;Wwrdz8WW73;!60ae`LX)LR-*Z~2TJKKFr)n|>AUMAA?FMCveO zu(K|Y2smHi^!Te;=fftAuh#e)jak-wt`p>Vm&ThlzFuRG#w{AR0;k7c4o7G9XwW&Fh*^0NDtdr4(SsaAJVLQPo7>A?!y;Xd5m zAHiz45B_w)C-a`Fe|Gl^-~&$)1dyfx*7x{D=)gE0t;fn#6V{=QyK@SZAsk8%DeS$!X@3LlJ6#LzMIhbZo=ogi2>hDI{9wOlP%2(*WT{zEsy&EOnmIE zkNY((x)m;W3|e$6T<#|{bgNA=B$La0x6;d#Iu^f`Ue+y(ZiQ>LY5HS@Yqe{p#7Zys z2pNB@)=eHOT&snXZiQ>La?-8zS}mP)E4|X%MM80Rg$Y+$yrEm+TCJWrZiUPBf6J{E zE_c&dbSqp-7O=FeaJe%|+8F5!*PLu)ZR8G+8pK}S89H~di^&SV+?H;h;xXY{Ercab zpD5AzPM_@INNbUBcxP)3Vj_8AwHeukDt^Y@fyl$z$>uib*MbFgeXSEHPu~l`1ULo}{%iKGLeVn^sK2V`sH4 z@=9(oWaFR7d)k_Kv6hK%5-)rB5<61J!T6edqz~4+X>;T;bx^+6AoSw zC{N2Yhlv++S9q-avRWd;v0`JjMA9WTEHeq!YLB$F%Fnb%lRm3Wl278n7+7tR?^cOf zZIU}{t^BasB>HRZ#)Cj6$}nEWocJ00!^={=+ z1$<4cGZiX6Y?W+X4AE#7%nL&?v0}d_JXWo#u*JvHKq&34_;4R?Vz@>dp>LKRV*F>G z3%`_xrH7E)sym{Kh)fX)VssKqrdYZOdmSrImVQFIl}DD2Lb{2EiJ8$>SeqnwEUks| zhUqa{i+c;<2&Oo zwSsXZH~o|_*uM+KikT&^$!Tho)G<=5T(cxL>5P-qEfb1Wa+cht?^YeMM|5d&QbReim4N98A362LV6;)GPTxlm>R)WPd7&987W1I zsk5SykYZ|vsryC>8ks>JtL9p=kZnXlF>y8JVaY=2JLrRnD|13znb;bCj4WiiQl>J7 zCbpv2kz!)YG8Z1HL+nY7DAOq>o;2* z%bM>drpC_1lhRcCY~%Op_rJmW(mcLsf2FHQK=hj zktW96t4vp-_fif?-5|xp+2XO{%sNIM6KBaMQcRqsmm_6(oGppV`X~OFII|6rVo6-e zGohF`QQ-j_LK}&xxRW@_yX5GR%={gHx7>da#_VY; z<~_UdzE#bnMquJCC6sAJpw7f^;-86mwId_G|6sKt4#Un1YdT)p_;N(e^*E zr(%1N-^F$(3GaE1%nY;lA=UjC+?RQ&_GRqwO)SO_e*^qWHGJ*|ot0Aftf9<>vBO^n zzt&D5eC|Uv`#(lYe>uWjj5a1^P@-cy5;6bRgS-)tYWlhV^?CrG(ZZ*6S&XwFsic1u z{NW6Is^N3L?RfcLq|(p*H>`tWr@smQt(-vk+~<2efY0dZuScj%{kY{HZ-1$#pZkhU z{XZIO2*-2%!XE#`brO}m$NXpg%BD5dO^xfD8rLmYS-)&W!HUqL`V|uk_IT#sX!TF( zKj#d_um7xfS0Tx%)<5oNmpzwb)qmFfg{g!;;rh>g^cU+Q8aw^eHpfl>gv00l{p)Sv zccTXmq4(t)W)wXyS2UCN#M+S!6*)2|96q{i$0d3*YzA;9U=rXYz#AyUQ-DteoCe^Y zl*xc8fHMF*1Hk?N-22ac|J?J>{r=qR&wc*f<9`w0VgSRK3b+(-8Q^lj6@Y1g=>R8y z;bj5O1k3_tYuX%*bAj^!`2ZJyd+@pco_p`P@1A?^x!<09?YYmMd+aL!a{-lrDnK=0 z9$-G822cyA11td41Gq7G5ugFk2v`hQ0^q**WdQESU_Ad3A5)bkAv@*K6~1#~W2N8-8eQXD8Y_t7$g= z!wmnGG-q~|BI(T)$mV7*k9BYdF=410gjvg35P!$;de{& zQSRNS2j+fEX`jnbW7eQfNN>bFFudo+szE-~llgF;ybjaH0BRF!m*qxk-Fi^P-^#;s z&)ciK4kz3;=nz^}I9^rHS+9HGKieSX2yapHBIaxZcDo4dW&@-RcvRbE{b#F5##;ei zxpCBtj_vK!v@7mpqFt})WK5#dE3qqq}_JF8gk zwczKi2$WtdQ`U}=@f|D0ESF?y9Lr7eyse(FKlXc8(Z9p}5|x%Vm5;o)b9l~=6)U@M zhZh&-FZ%|O)vVpD7g5w%)*hA^Ym})gyqz+P{FYf6=rM3NzMDq0@fKBftTox^ z^7cMF<#a1&<)!V(PB~JCbK2`S>vadhW&2`WJ%|gX1N~zEG?rUaZ`o_{E+Y1W>~Ghr z{*JA~i+Km;SBGjLg$cPKvW8NKZHhI>kI>nEmIC<2Jn2K(9$CwMu#GCZ4y)oO^y0an`@Uo6=C6JIq`xo!z{VezuUqkfmv1lmdC4cfJH79h zrTyCr7JlKzZLbb|sOeLk&(2_nK6B=E9VJU1+OXndUtRT~ z(u|)}pZ=KVBMaaA`vqS*@4Rn6D8X32)IW}J{F$*F-f_w!RsAOiW&4adRB1)!u-_Q2 zc@Eo?BXDTKCO!gh4%_L`2p>hF9)nF}COOV5V-4MQ78(kk%#8ETq4}jp&A4wNS~KPX z032schwP!5azM;pWwyqJ^~&59x6iyTk^fRP?zH@yuFRHy)0ElrZ>lm|{$(WiHw9}K z^xr&F9JvW*#BnF>otj|^_FmihCpk`)apOr4GEEpY(xyAEQ2ds;M%gnpw4dT=Oo-0~jyKwM{4#F2ZOID@9H%JvYX?8^&)>ls&H~4& zYFvHoPr8+PI;4j^yeW>0l)Xt`X2up}Z{^P<<(~XrvPYMw z{Ljpor{XtV^Dn?U2jgeu?`bOkUb*1+UEhWOsBg+_{F{W4i#b{nQ?_O z8~>*}GKb~&$;wO}L()4_nLo2o+)r{8D)VF7oSCs)nN9ea87qdFo0Zv0|E2`<6vqq7 zEWR^8GgbbW^iFd8L77c?PICNNnN9g2{i^(U_MY*D{27)X*Oc1xW0K=t%1mB93morL zW>a3199OIQF1GZuRhi#CM<|mV9m;IZ@@HoBD)RzZ)6Xf6zbUhc-vY;TH7fiM%=5i-g5iGooCy!bJZqSJ_AvV*Wj5t8-BCQuT&c{a zJf=IU63mkvo0J(rs|Wcp%sh7u<7U#Aneh!}HuWVlwU75|i-XzDNHpa)u&;Q@fy`vxu z1YrOk4T7>ND)BAZ93*H+8b$C39>6MKV`*b&?~Oc=cmQYq%@{VNwJ8E0$%cR5kYbyS zTOrPPz_@&OxXS;4<1&w-)>Youi`P52IJx=F>m8iz^K!noVJYM4(}8tA;`-K}8#pWb zH>ECoId1U1E%jjS&w%={=HdUAo&y?qwlstj4kLL28tHS4KwkemTMFUmn|}<42d&Qp ze(#(OO|?8C8JfY>_?W}h`o4f)+(EAWm$01o;Jot8`%|ra1k3pd^1dYtYx|}Y!_V~@ M`wv3>Z$G!d2cGy9BLDyZ diff --git a/testfiles/mail/gog-roundcube.eml b/testfiles/mail/gog-roundcube.eml deleted file mode 100644 index 141f87a..0000000 --- a/testfiles/mail/gog-roundcube.eml +++ /dev/null @@ -1,637 +0,0 @@ -Return-Path: -Delivered-To: tester@mail.local -Received: from localhost (localhost [127.0.0.1]) - by relay1.mail.local (Postfix) with ESMTP id E7A713D1B - for ; Fri, 9 Oct 2026 12:10:57 +0200 (CEST) -Authentication-Results: relay1.mail.local (amavis); dkim=pass (2048-bit key) - header.d=smgrid.eu header.b="GW2zRKwt"; dkim=pass (2048-bit key) - header.d=email3.gog.com header.b="eFv0TUK7" -Received: from relay1.mail.local ([127.0.0.1]) - by localhost (relay1.mail.local [127.0.0.1]) (amavis, port 10026) with LMTP - id WujfPgrqimYD for ; - Fri, 9 Oct 2026 12:10:57 +0200 (CEST) -Received: from gw1.mail.local (gw1.mail.local [192.0.2.12]) - by relay1.mail.local (Postfix) with ESMTPS id 719511322 - for ; Fri, 9 Oct 2026 12:10:57 +0200 (CEST) -Received: from gw1.mail.local (localhost [127.0.0.1]) - by gw1.mail.local (Proxmox) with ESMTP id 5876C41760 - for ; Fri, 09 Oct 2026 10:10:57 +0000 (UTC) -Received-SPF: pass (emsgrid.com: Sender is authorized to use 'sm.#.3f5ada29ba85a3ae55-newsletter=email3.gog.com@emsgrid.com' in 'mfrom' identity (mechanism 'include:_spf.jupiter.salesmanago.pl' matched)) receiver=gw1.mail.local; identity=mailfrom; envelope-from="sm.#.3f5ada29ba85a3ae55-newsletter=email3.gog.com@emsgrid.com"; helo=amalthea.emgrid.pl; client-ip=89.25.191.77 -Received: from amalthea.emgrid.pl (amalthea.emgrid.pl [89.25.191.77]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) - (No client certificate requested) - by gw1.mail.local (Proxmox) with ESMTPS - for ; Fri, 09 Oct 2026 10:10:56 +0000 (UTC) -Received: from s12 (_local_) - by smgrid.pl (mta04) with ESMTP id 4j1N0n4lGxzJtb5T - for ; Fri, 09 Oct 2026 10:10:49 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smgrid.eu; - s=sm-trackid; t=1791540649; x=1791585649; - bh=gpu7ZaQ1XIQKWRN0rsfuWvDWyeFeTBF+wOJbmRwqrPE=; - h=Date:From:To:Subject:List-Unsubscribe:List-Unsubscribe-Post:Date: - From:To:Subject:List-Id:List-Unsubscribe:List-Unsubscribe-Post:CC; - b=GW2zRKwtIA4UQOhiuIUky5HB0uL1Psi4DZ2ftjurUdK8bOACUxDwYj8819gVPKbHi - SzVltCunE1hRyUfXil3qqFVuzO8SaKigpIfXECPuxzFSJJAQ+RGQeMwPVRNB43MCqd - oA7C094/1Q0sX5a+KAYAEtoaRXJ7HUK1plKyQrl2gAYlIdhC5/Hqb338nLePYf79iZ - DXw1XciZns9ZEjQXQhhTYSFNUxu1Gp2C9frzs1vDe6a8pyW61WfsMOw0TVuhLFGOpx - kovUlNK7QCg283mQ+ZpNCLpAM1vb8SadJs0SwbC7vzIOGPVmaqyusBefaSDqbIK9R7 - EFY0488QZRhDg== -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=email3.gog.com; - s=salesmanago; t=1791540649; x=1791585649; - bh=gpu7ZaQ1XIQKWRN0rsfuWvDWyeFeTBF+wOJbmRwqrPE=; - h=Date:From:To:Subject:List-Unsubscribe:List-Unsubscribe-Post:Date: - From:To:Subject:List-Id:List-Unsubscribe:List-Unsubscribe-Post:CC; - b=eFv0TUK7rrzF5OMLnsbYs0/Llxja3xiP57DsvZfbbh0e+fDY14eLLGaf6021fm+cP - wc5w//FRTjPV5Q4912AWJjNlLK1WdXibM6aLKQc6o13HipWX+DP5MsWPsmoxcDtxQc - ro5P+sPVEvkn06+xKj+NF03DCqPrH1ae5QZ0cWm3McLyb4L9YVsJZe+/LzoJXJicFY - GrXyk7GdIcGSr9t37r8f6N9vZf7qt/60Y7Wtth/EU0yDiUfWn3eI/aYGE96Ac/CURC - V8CHnicop8uUHBGj9GMuDo+FDk9FGy87+dSx4+0O1ms+Xs+mvT2b9+zr6Csfr96Vwd - l/nxTSL6BvW7w== -Date: Fri, 9 Oct 2026 12:10:49 +0200 (CEST) -From: "GOG.COM" -To: testermuster -Message-Id: <5404404998.40649541@emsgrid.com5404404998> -Subject: =?UTF-8?Q?Der_Albtraum_beginnt:_SILENT_HIL?= - =?UTF-8?Q?L:_Townfall_ist_jetzt_erh=C3=A4ltlich!?= -X-Abuse: Please report abuse here: abuse@manago.ai -X-Campaign: 000xx0x0-0x0x-0000-00xx-xx0xxxx00x0x -Feedback-ID: 000xx0x0-0x0x-0000-00xx-xx0xxxx00x0x:3f5ada29ba85a3ae:ManagoAI -List-Unsubscribe: , - -List-Unsubscribe-Post: List-Unsubscribe=One-Click -Precedence: bulk -X-Entity-Ref-ID: none -MIME-Version: 1.0 -Content-Type: multipart/alternative; - boundary="----=_Part_4135371_1142483364.1791540649541" - -------=_Part_4135371_1142483364.1791540649541 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 7bit - -Plain text version not available -------=_Part_4135371_1142483364.1791540649541 -Content-Type: text/html; charset=UTF-8 -Content-Transfer-Encoding: quoted-printable - -Der Albtraum beginnt: SILENT HILL: = -Townfall ist jetzt erh=C3=A4ltlich!= -

= -
Betritt St. Amelia,&n= -bsp;stelle dich dem, was geblieben ist, und&n= -bsp;finde heraus, warum alle verschwunden sind. &n= -bsp;‌ ‌ ‌ ‌ ‌ ‌ = -;‌ ‌ ‌ ‌ ‌ ‌  &= -nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs= -p;‌ ‌ ‌ ‌ ‌ ‌ &= -zwnj;   ‌ ‌ ‌ ‌ ‌&nb= -sp;‌ ‌ ‌ ‌ ‌ ‌ = -‌ ‌   ‌ ‌ ‌ ‌&n= -bsp;‌ ‌ ‌ ‌ ‌ ‌ = -;‌ ‌ ‌   ‌ ‌ ‌&= -nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs= -p;‌ ‌ ‌ ‌   ‌ ‌= - ‌ ‌ ‌ ‌ ‌ ‌&nb= -sp;‌ ‌ ‌ ‌ ‌   &zwnj= -; ‌ ‌ ‌ ‌ ‌ ‌&n= -bsp;‌ ‌ ‌ ‌ ‌ ‌ = -;  ‌ ‌ ‌ ‌ ‌ ‌&= -nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs= -p;‌   ‌ ‌ ‌ ‌ ‌= - ‌ ‌ ‌ ‌ ‌ ‌&nb= -sp;‌ ‌   ‌ ‌ ‌ &zwnj= -; ‌ ‌ ‌ ‌ ‌ ‌&n= -bsp;‌ ‌ ‌   ‌ ‌ &zwn= -j; ‌ ‌ ‌ ‌ ‌ ‌&= -nbsp;‌ ‌ ‌ ‌   ‌ &zw= -nj; ‌ ‌ ‌ ‌ ‌ ‌= - ‌ ‌ ‌ ‌ ‌   &z= -wnj; ‌ ‌ ‌ ‌ ‌ &zwnj= -; ‌ ‌ ‌ ‌ ‌ ‌&n= -bsp;  ‌ ‌ ‌ ‌ ‌ &zwn= -j; ‌ ‌ ‌ ‌ ‌ ‌&= -nbsp;‌   ‌ ‌ ‌ ‌ &zw= -nj; ‌ ‌ ‌ ‌ ‌ ‌= - ‌ ‌   ‌ ‌ ‌ &z= -wnj; ‌ ‌ ‌ ‌ ‌ &zwnj= -; ‌ ‌ ‌ 
<= -tbody>
= -
3D"GOG.com
= -
3D"Silent

ist jetzt = -erh=C3=A4ltlich. Und es ruft nach dir.

= -

WILLKOMMEN au= -f ST.  AMELIA, 1996

<= -table role=3Dpresentation border=3D0 cellpadding=3D0 cellspacing=3D0 width= -=3D"100%" style=3D"width:100%;">
3D"Tiled

=E2=80=8BEs ist 1996, du kommst in der abgelege= -nen, vom Nebel verschlungenen Inselstadt vor der K=C3=BCste Schottlands an.= - Erkunde die leeren Stra=C3=9Fen, verlassenen H=C3=A4user und verfallenden = -Wahrzeichen, w=C3=A4hrend Simon Ordell an einen Ort zur=C3=BCckkehrt, der u= -nheimlich vertraut wirkt.

<= -a target=3D_blank style=3D"display:block;width:100%;max-width:566px;" id=3D= -smlid_309 href=3D"https://gog.salesmanago.com/smrd.htm?url=3Dhttps%3A%2F%2F= -www.gog.com%2Fen%2Fgame%2Fsilent_hill_townfall%3Futm_source%3Dsalesmanago%2= -6utm_medium%3Demail%26utm_campaign%3D20261009_nl_SILENT_HILL_TOWNFALL_exclu= -sive_DE&track=3DXxxXXX00XXxxXxXXXXxxXXXXXXxxXXXXXXXXXxXxXXxXXXX0XXxXXx0= -XXX0XXXX0XXXxXXXxXXxXXXXXXXxXXxXXXXXxXXXxXXXXXXXXXXXxXXXXXXxxXx0xXXxxXX00XX= -XxXxXxXXxxxXXXXXxxxXXXXXXxXXX0XXXxxXXXXXxxXxXxXXxxXX0XXXXxx0XXXXxxXXXXXXXxX= -XXXXXXXXXXxXXxxXXXXXXxXXX00XXxxXxX0XXxxXXXXXXx">3D"Collage

D= -ie Stadt mag verlassen wirken, aber du bist alles andere als allein. Mit be= -grenzten Waffen und Werkzeugen bedeutet =C3=9Cberleben zu wissen, wann du d= -ich versteckst, wann du rennst und wann du k=C3=A4mpfst, wenn Schrecken aus= - der Stille auftauchen.

-=3D"Repeated
<= -tr>

Das gr=C3=B6=C3=9Fte R= -=C3=A4tsel der Stadt ist, was mit den Menschen passiert ist, die einst dort= - lebten. Folge den Spuren, die sie hinterlassen haben, l=C3=B6se storygetri= -ebene R=C3=A4tsel und finde heraus, warum du zur=C3=BCckgerufen wurdest.

= -

=E2= -=80=8BHole dir die De= -luxe Edition=E2=80=8B mit dem digitalen Artbook= -, dem Soundtrack und einem alternativen Outfit f=C3=BCr Simon und tauche no= -ch tiefer in die Welt des Spiels ein.

3D"Silent
= -
= -
<= -tr>
3D"Was

P= -robleme bei der Darstellung dieser Email? Klick bitte hier.<= -/p>

=E2=80=8B

Du erh=C3=A4ltst diese Email= -, weil sich deine Email-Adresse auf unserer Empf=C3=A4ngerliste befindet.&n= -bsp;Wenn du keine Emails mehr von uns erhalten m=C3=B6chtest, kannst du dic= -h = -hier abmelden.&nbs= -p;

=E2=80=8B

Diese Email dient ledi= -glich der Information und unterbreitet nicht das Angebot. Preise und Angebo= -te k=C3=B6nnen sich =C3=A4ndern. Weitere Informationen zu den einzelne= -n Angeboten finden sich auf GOG.COM. 

 = -

GOG.COM = -=C2=A9 GOG sp. z o.o., ul. Jagiello=C5=84ska 74, 03-301 Warschau, Polen. Alle anderen Marken si= -nd Eigentum ihrer jeweiligen Inhaber.

= - -------=_Part_4135371_1142483364.1791540649541-- - diff --git a/testfiles/mail/gog-roundcube.eml.expect b/testfiles/mail/gog-roundcube.eml.expect deleted file mode 100644 index 257a77e..0000000 --- a/testfiles/mail/gog-roundcube.eml.expect +++ /dev/null @@ -1,3 +0,0 @@ -# the text is in the HTML part only; the plain-text part is a one-line placeholder -Silent Hill: Townfall -JETZT KAUFEN diff --git a/testfiles/mail/tldr-outlook.msg b/testfiles/mail/tldr-outlook.msg deleted file mode 100644 index d6334d79280cc6c03b71f88e4e9c1c3c1d55a6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159232 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%0AK;g%GtBp3_&zk-_j($mpwM z4iP7dNCC>e6@70f9hpc;Ir90C^uT}KfB$_0jz*h}|=XZ(5m@hP}=s($@+{GJh) z_bePwjXO8)n~AhpebQ&+JROh$$OL2oOaL>$xbK7f&cXe20rLR!z_ozu0G|YG18huLow6)teTtT{4&`{! zhDNl7B_;Q9rZ`eO=*a+D=R^q}JV6s$Q-|LG{#;12p+s*=eZm4aphq{N?vZ@1&zaT! z^|r}VcX?8NIpO4u6H`(qY#aEwVl|Gm?QHW%%NV$w$@R!c>#s?kA?r}!DD{vu$7JtaSx=TFH&IixRa2g@Ala||-r^h^WQZ%IiF4%M*SZ{-l69o`+pAV=Nue-{+)*M z_)N(@|MAG1-27wRY{B68$JViKesDPC=S1W%`aebuhrDgT3?F9t%ZHlrsiRH_SD*5O zd!I-Nr{q3%@uU>fvc1OzKU=-%#*e-Cnq|++Po<>%V)>O6ZTfxs<(zQ+r&s=_U$y}g zR)P1e!DyTh4oPk~+)t$I)kjUg`pY>Fe!cRlyKeeAQF~aQf$0x%Z;6_HL(KmP>=+G@ z?EE9H8uM?U`ioPFQkE0b@QVN9pdZb zxPGdhXQ28^73K^7DNHFHu*46-e@{kflZU9E&tH&IqFON&{V|>=+2?27UmCLh<)C}y z!9&wO)$#h5UhJShq}M~&&*x9B{%I(WJU!Xx=iDRD;%A`o=W|Q%C-?lPqpW1>pMt!` z^KXWRQHMVba(oTwj|Wu9kF#2wZ^gN$B>DhkdM_mTEjV{UKdHtywFH04LZr-pe)6v@ z_-#R+M&!~U>w9s307q_BniKgQkd>MDEtR(kHLx}fGR`V|_paTKtKO6bq*tqYHI&O% zl|BEH7ujpE&xgJJu_yUpM<4d*pD^KxQjfOnh*8VMVPk^g%37hgcmd1 zf#1PD^TEAWf%~k34s8d|S_7V00?Ji_v{L*QgNrSJ{6GqvhBvi47e52_KYP9ab0V4N=X0~XWS^h9VwjcV zGf@2nYIY_k|L}Qer%See4S9JFKLgcI?2z#vTK=Q$kahE;3LWAr71xK7fB5{%fRV}e zKkb#t)}O}q=@W3^=jYQWC4WbsJ=yxRQN7Xs8{_Do2FgP|E7XvU9Q)5^aC%B0lr*Xo zUGw3XQb=OSz@g+0$_tbS*jCyfX$2$AqxDfk8mV6$u2L$gRuqvGlh=C78Km%(K`5V4 z+F==#I#|xYG7oF0MR}yPH8^6aRj|Z1Drv`!t8QFlxzaYuOdjNvy6e>$pHHZC1KMfB z*-6@=fkRWvN!ldXSO^=?8#SsoHmSb71`?lB^|lYwYr~q2>*g+7eEuT(c+X$HdBf`E z8#gXrZ(F*SmiD1P|8L!&-+cDzN0;2Z@U`>*`HurMgAeO7()x#0S%S>#FjEBM-1;2h zOiBK8_O+W%n7!@z6_Jv8_ieNM@`>c{l$-<6AK|=7(Vq#_Co%!a(jVGOhoZk?|D^sk zB>f*Y{j;EcgZ>Tl{C3D`$=ZMU+{On*5BaeoM{@E&!309$;>}$1j*EI z%)Mmmr@h#yf28zd0u3K9fAlquzD_4g5}y&@k2)qKQO}rVIpO%@Pn>i{&IOw`Uv%mj zM;&wAX;Y?7n=va7QM_~Jm91QL-iFK0o;V>Z4LZsbOW<-{n0@@or(~F|3l}e4zGPzV zB_ox;mZ#AA_`yE|;eVdeSd*gv!=^t4XfAyq{0vk-`A?qG|AwUh!^ZzY)H@XYDS&2P zqBQm)>sK)g)M=B&zar#a1mI`j=cjc*tiVIqUx(fQ#i-Z7|AFeK=1XftvigrfgVaL} z@l}HBhNEKe`jgZDO(>5#O|tz@Yx+c;XbfI|^7{X9p1&;V=TD0NParQRPfhmuX$>-- zKR0D3&1k zPkoL$O|tbbOS=A2MPo+$`In>qWcY7ElJ-aHlhi4aeSVJSQ1z4ZEXBAdp??fp{#uFp zhtfZb@I;inlBu6moG~rQKL0t$`%M5p1I>S_pDh?#{$styM@k+1`#fC!rk-Ws`f2+} z&i-!H&ELUmmaFIEhdQA8OgxI>lhGbd4Scq#?@#`E`)i99erL-M>?^->7S$Lay`vq8qn8z4P~rcHhyy=gG_cxpzvo*!5S}eeJBf zFIxGvZC||WH^0rDn%VdIlh2=-{)YpLj_Z8s&BecX;0IstdtI;pL)-p%`fuxHe_sT< zpaUMs2H1&RQBR&cf9!jt_YXe*sQ(R3f2q$=r$~1GtwmmA{tZ@tp7MW z8NB}DWbl6i^*QP^$v*!D$U9X168|(d^k+Tlr@xe+iT+D_p8nIs`O6M|=H+QOZFng% zOk>JO@9!5shc-=MfLM~BGy4_50KET~LUG$Z0r@uQf>zWCF zJMQfFUJBW7nmGTuN$Ec}%p3!@hn}I4eDV-^Jd!d7n*TEY#0oQ1{2%AN@k!=cHXsvy z2K)?EKVu~r6Ojb}oj`qlE`V)dnL~X(feiQP2sn8CV`G2bi28?;fB5`!lCwWeU_2vi zi%CEKCgjxs{G9OlV^7$2?Cu#acG@kKk(+W(Xur^M(6lOacl+^XN5`$%zYm?bdr{9N z`?t-S7d}R7IP_DG#{59&TftwnUvIiFtET;y?nyb1W`94p%k-xC;jVd>y_p+w zjtfn(ykI#eV@ao@WoKR2 z6P!_UPf5?GEx+4&zGZFpdEpgZd%8X!`d;v=;%QD@;H*YtapR!(&@ksElnfazI2Vd;`Sop#NXKQ(;%d&qw>(}WI z&n^wk4ZSmCt$CSw=5+J+)9eprz1+FM^68FmTBlfl+j(j0X44IwH|#sld{x_*r#9KP zrS95)a>hfMC#HSO^r-pg=Em?P`}cSL$o$Djad^(12TuQmB{TARWNpy&#nzm6gNuS0 zv*(4YZEL4}E9go8dd|Y&?CdLNTwp5V8V>AegsvnX<`<=a^&^gNY*Yw)4;_Ta(bffwaFTc z_@*7vM?Z+|SkbKkf3Kc9JND5L#77>m-oAKL$E+k%{HBA%SP z(vI#~yJub3NnJnhdh6^-nOE(Z7(Th@>p7P6$8(+uPRqSJ^!eFE9k%YR;mh~iO~07F zD#MrCy7TwiCqf&wh3Ut3Jz>k4a$WcDcfZ@cCs&((bMS=B8_xPhXO($>_KhCa z|B-6X@$ak6*%SWX+{=Q$>|C4uyPV?v4_NnfZtA`!@@m9tyQ@1br_8)Mt10&s^KXLJ z&OCX4p=nR+%#Qq=b7z0Iz1p<2qqgf$wzpCGZ3iCho zHT}SJL+EVlbC$|eP75BF5$@hM`BEb9c@$LvQ<|5fHmk&e#4nm-l% za@PCd?_|A{R+4#M_T+YJ`2MV)WGuTl=jtKQ}^%9db{=N%(Eh`;U}|9yWcb2 zkUgR2xzv|--IFoRvas!k8AtW}YO2+8Y341Fw4I+lYlgWd=h}V#j0-cLu$;T+>CUCC z1(~x=H)mD{A8mW1^^U#BD)l#+|JVA(o~EwS$hAE^=I`$NLgZuZDVY4fKIqyt zD{H@Ydi!O&?U8FkuF$6@Z#2CfS!z2q>l>!WA_ZwDFH0Ke;S??dA9o@>zvF@882o2VsC|M(^*fLzuLOg($$?2`fckQ z+ZUKmHNDaP+wPY_%dMwQIt#d9o%YPE#R@6zB2v6yK6TFlOGD^CmahcO*(>udn!LVy zyJg3e3e&zbe$W=!KQE%Cw{%_K)v))0&MoHrh(CQ>+dt3v>CStC_N?PNF72x6{CU=c z;m-wM%GsBCOUAX9C&Q<9O$(io`ac;bTb7u@Jx`hLyX%=*Md6z)+k=gki#nb%Wm~?m zf7ZQE>^Z0XtL9^}irOvR+j5S#%&@+{^Tqa8)3@(zY|Y!>ZK;hslKo_NWlx6bpO*Vt zp9~*mS#wGxP7vr$kPlI(5IL{ruqT`%IaCv-r(7 zhgL_Xc7!A6W_;T8LdJK@OKpE{y*~7m<+6~g%2EQGQwB4Hhou2RY zOr7=T_BE!f(kD&-Tvyuk&ssjw{%A*<=|<}pBLB2}_3no(Pak}}byxd0Q;*I3VQWU` zr}jM=EIu$Ja(h==#`K^g@<-D#!Oy2RM{MT%(?8WZY35(s4rXe>S31Ahb$|D!oMpl9 zn*JINX7BCk>YhF0$Jw7vdo1-Y-G83CDfFKC6Sjvle%bxENKJNjPpb8nj-{R7P2Xa> zZRT|cE5kdx{uuhE<#Owj2d-f+cK^hDM~^q>4?QmPS2NEGzLR=q@R*)!XTID~H2dmF z*X3kJy!ZVg=c`&l_lveqg#w{dGTXvW1n2Gu&ivNhrL*r0Ki2bf)@5mr?Rjj*{(7dEGE7a0?T=z1J)WY!3L)O_Z+_NF4r01KOST+Y4bH?j-E&!nG_{j1c%on?`AGZyq{nLhxL>uH-1oP120>5R;4yQha&h8_ss z)%t_Ze`lX#%I!SZo&80Z_Jwep`TksQfA<;LYr2av??^k!^y7|4I-U;A zwXP1ok#k?i_AHO7ZbnSf+*yZ65s{7L7eNc9)HdVYHS52xG`e5w0KJIiyv5Pqqx zv}3zDKV!lE1)0;s4~OpB`()2gtmoy{XWwX9)_!~1XZ9_zU1oXG@?yvqI)3lVp`|%* z%s$t&HaNjPf6BWDKbJE*{PS61>kF2fLuXo#-S<$s-}JZ4V=}MWf9syIz0Y^7Kl84A zFCP4Q`%F`Dct_T()c3otKlnoCP1AqcdYt)BU7^%xXV2?6#`M?7BaxcDi*qX5p6hu# z{kYVNJ8zqPzvZ^btC@}aEZy$~kL}u%dry`#I4N(zjM+snh&b^Z&D6*ZEvzM#vHT!Ra@hy=r@~@GbNGt&MxD59FDw)*ofe$(gkK%HZ7HYa+JLU&8vucPH9c>6XYU1FXPQ2leMiT!!7F+e247GA#~JHvx!F~1 zsWx|LY5F~pCE6X4xAy;S#^2H|Zhz(MyLP7Azm>Ub*3O)xbAE5Wa`*GQA8majvU$&S zIj7maZ~Bq>|MqHOM|g4ft8HcG>vAK($>yJTRRv!UH}3mP?j85MIqk2uV>?a{t;u{e zyydK|S?jWQ=FBp`v*$nUe`|X=a_`_Ses*S>^||)Ceg6p-TJG;&Xsro;CN(GYNay|GAMLE(n`Zs4 z`IzokJ5D`Ndf>A?LCaHnADe!(`F2Zt_SXBJ>iM>L=HAP4e{24ASC;w7?&pFJ+pE@V`>O)fw*onR$PxEiyIupMBoSBhv zduvICz1=?Z+K*QT&+fi(Z)e(NStiT(KX+osdz0S@e!S<)Z9nMv?!MnnJ=#)Z`J%17 zd$QSKD@}Vg^h#uT=!fn94*j|P`SA5!U1pob+5XAwf86uxUB}yR-&5HA`MnpmPwDs+ zk>iP3lOMM!4;3sSdP&Nf}Y>w=uuOkWDW8nU!q70e4i zZ2C)QUg+`AtjHfN6Ea#dre~+-tgxJvos#{3q01u|SZ13xO}#(8wd3O3LVGgoU&>zh z#S3%7Jx86j?H-e@4VuwkY&XxowdbmwFNd~ge4^*t)W>H(5_+b+HS(Bs#?F^IJ`*{y zr`odq?q6GGTc&hgHszMn7Id8!y3abftuFgF<}dI2QdWCT;~h`7f7^0uXL`q(9m}#` z3~APFp+?J0^VhQW9C$f&dUt7X!k*5KkoD?}2dy`Ce=ldUQE#<$pBXCcp40JW z=-Z(?(tj2#>RHm3oAa5Rb8dem>+Rq#re8hnwopb+iFJPZKRUK&JZY+pWSBE@e;9r{ z_ilT{{Fm-U+Ou6(O*`u2r`q1Q`x~kESRUVfo;f(>^?SdZ`P*rGdR7I~T4!0Nr?#hm z*|fR+U;C!D-qro~^w&Etw6>-1Za<^-n_+usN9LOuPi6l!>@%Hcy1!>#`g{A|n|*WE z&WLyC4M4ZkEPw7^Ybs8^zGqE)tL2@@zf3zK+dFRU>Q)gckl0QdxDic&&~d~_NDITEX%Hk zLz{b+wwFiBa`tq-m*vU)bLI{EZoB>Y_7}{q?9XO@tm{O}w<5N1*NkVoK4JZX`I+{m z=AFUi88=7PhyIhcF|wn*p!3|>Yl4kEYjg6pKVf=kcH_>KmUF_lMZR~Ixx>}^QLd z4SlRm+;<^mYbd=4zSw;HGO}%nTJyu5k2FN9&w&?|yXTnIx}yzP2P7+g z%J3A0D0>qk+t@xkj+g1jBk6nId(-omeW~f%-z~r8%o%>)+Os*d!}<)4f3p64sQm{P zqQ=F5WanQ6@(vY$TZ&$aMS!dr@R>fy{s*5xY4i2?^ueA#FS+%fDU7FN3zL2RdgPr6 z;AimqlZ*cxF8(*5-X%Ax>M?_tV(f@FvIEHm%xJEZTZUg3(!DBuF`^I{hu~Igq6J&l zBL}gDbNPJW8p~Lta&TpwA5aYpumMY(aToU!;L0XOG7t~B*3XYKCotFp{PQ9g;~%(+ znd|VlChi;@u{GR7fNSciRO&M1k+!bKb+)PnB@)8}dhV-m=EJT`iE?g4?gm`N zJv-O@&BJr70L}}R768u~t4g2`bS|h_9yUYmY8S-D-@CkJP5At(Z)*ceSj ze`b6Mc{pb(*M&3Mo?|^1?V>lAec(eK++~6EjwQ@NNmhUZ=T00I;<#EJRU)MlIjlHm zO(p6Yb8?@Cd|Z<@GoHRkwV9NP?J7Zy9PKLfZUcaI2T%@MB@~*p+@Ru2iKpT`mo(!@ zC_ht~V%PhT&vv=$Z|PamNE>SB(+kDqSTF*ZYv~I>8DnedrDr$>^Kg~-8$RKA7(Jo) zc0>u!0WexUA0?7XvoAS1b5ULiQWoRxdEgSuFurARbB-Kj1z;&s=i}))r|W>x^Dz6C zp?vZX(rY>6y%(bNBJ{9)Vl(!9^j;I5BQ}0|mO+1J-HeqX{G4#}t;eL8A6`9aqMRrB zefw!CDbrSX@osdNbCsvk+q}Z%z`NpI8(e{kB72^F%LJpKCzcq8Mhzr^*8^?<{14z$ zfKLNR8a@N~EZ`=<{{n6X+yeL<;8wtGfX@TI0Jt4+2Vgtki-0=;cLDAO+ymGFxEHV! zunVvoum{iz*bCSPXalqZIsl!3E$UjXj{{tEaT;O~I<0RI5|6Ywv< zzXAUNybs{QsY|dkWSXLzb@-hNs09TGfExI5mW#gtCDrVWtXqltoMEeMc_vGZ!_- z{)86A&PktQbd2dj#f%(6|9IB_NXm*YF_wpS^6`l8kUZC`Bt+KlwhnIoHASz7p&!%JfCx_T(U31K)!Co$6{Do|u%L zf27Izs$U%_qZmhpNU6qCSV6GQaXzFY{?1k3Y3dmd7q)QsB<@h) zQ@u+mA%=&2F=+TWLyRnrVi|kUiQa5Pf0ki9`|s%5J3n_(V4N!V&f!Y`G92}7E%#(- zz%}kFb@(yVkWYwVJSN`ph@;JKrpOUzjgdos<(jNPl6#mkd<>24g1{Nf5gi>YC4Lno z#L_uKU}>qsyDDJg9AFUfuo&OPI471Cf-;oih;k_7VkwJ~ZaeTx+T_3=zYE43OGy>x zj8iO)VPzt`G4^8;4%meLt3*EvUK=(C!Cq=M)ItQ)>d?<(Tj31l%;YQ;9>!zgL6XLA z<}lJEuaU}YQYOnc=6I|`=IdLcQKN7yBL`FEO02{H%Ir%Gq&8lWU9m)Zrq)BvMy~pC z)hJh5YP78PnNg?F-dGD_M^cWF(>RNjBPr4=%w-&n2dX4gB{pI_;$OUMP>wd2Bh3KG zA>T}kU1i#E<%SDEi%9P^=t>^&dCCE!Lz!eZ=aPh!iMrt65`@SNlocoqlwfw3g3eVc z{GnvPk+kBs6fg%zOye3d&N*t{mB?KRN;cLK1SN@*aY>tKDItgEE^)FSJ8^G?8evM{ z)O*Rl4I4nUx*`&$3wS!P9B!FO3RnP~z$030TXd>pw2i$%sa2j_tONafM0(2TkJYH}a8nGS0sI!c z7n;xG-ZVm}2iH6E8mWoo;juw2cukInOEE@6Y9S{eekRf_>_bon+TlnQ@)gcgqo~3; zt!rWq5WD4% zxGm=*Rq?8v^E(DcnjuT^nn*};Ww?|fo?^Ozf81rb5tLS}+p)d-#2?4~|43b97*Yb7 ztN}B*Z=cwBsAZBelZR=rFYr1&3)~Bk8m5uE67_IbL0&h(CflGWJgrAQc;`lgVv)?Kq>RMQNf?rBVMXMV++m)B0S9`^MfL zLR~K}ZbZh9J>&?@8hx5oa9C*;X$&P0`4w5DS)~ab5=uqs#jv;<5({$~d02*#vm9j& zmu9U4)et#yG^hlzmH3>9N)!!2BWP{0gC^W?_!$972z`PzvB3qH$ z@Lfm=+^d*Z4IR@qDv}EAB(%9Dra=WmP$BA85~n~PAY%+@T_!~$6)HrFdBm04w71aD z!pH(A&MB*~UXhf>+U`PGsc>9UA&w^Bj7OUUy_~c%*f39wcdm(VwYN>CLD7;GxI^B~ zK{{_(X8h=7CKvE3v0Q$QGx4|z z*2k_7R|*)7w`!O$`xzxzuW*{SCQ=H{16m?RM+>1RlYawY_fWPI+C?cbFm9+AM^?0q z9v|9QiQRcW5*0vMF{~OZ`$B!P;1RQNrzF3K2Ag%AK z<1%(4F@76w%&}sY$QyI4m@UL`>d2fY#C#7dma?}!ZCgCIs(EB+xz0hYv*Q=fiM_;M z;=5QUc~q`rv~X>n$8en2n3I^zZvo?I_?-MAHClXQ5#zYzjYW(L))4z8{ZBi?;A7J;xeg1 zIsW9^NaGa)coe(NJ4iudIfu{hIX=X6L&~zIZ0&oH&px(4T8Dzt&;j@ct_nHusM}Gm|Do#r z1ROYGJez1nl)&ljrBA^D9On_&D#Wz;D{xNTow^mN0{OQczhjHLjIQKgBHSg<9UOPb znH^{+EsperT5&`y6>DK7`idA!ZC)a~s*tA;$N36li-5=E^+tT@SXm3nzbQA2N8B|e zdHPkja?6QXz_&YH*++Kg{E3f4_Uk;pFQ=|Y8MNh)qxjJG##^ZvM=iEOMnVr9Rbj~O zoP|v~Hi)#~Q#FoeyrvVa6bU322hq31wEW2Wir!D!_c3K6?{!V=yEU#-hmsXtTs=8fURT-^DP0ew<&+LVCAl7pJ`~Q;V)O(x8frGwcSsFM z1u6BAT2k|oIFfvvS7UZkwqm6E*xNg}>S=sRI7g_YP#jwGNGtyvsN~^}RUuWggAT^a zndL|$#WU)y^o*WiUL_YK9iuOXo*UYD8L2Pwd`c2wKn+xOI7vnW?Oo2{)~d+u zi6z9g82-r_zvT*lV}Fv)J4JSg$5G}QzUOEi#v!&!S>7Psw{NKhl|q&nTe}hCGq^T4 z5oVI#4=z;@8|hPV0=sA*qg26I3b7k8j*NaE?j*ru$`@S8OMROwbh#G;JxBI2$4pX) z@fl^twXZGc4URHb9*f>w2b@eU#-lfO5vyZ%BVxE{8RAW%M$UD##_k}^`myZX!C1i$ zBR&)V3^||2g0}|F_C6QMpLi^H@i%ra(NPSp?E z!Bw~XBL)dhu@p%o9tkcH$KLoI#_?qU1|ZQ5F|`K=)jV=*KL zK z;f(*FW=?FDRkqX%j9q=G>r=lchZ1{bm8wrT7xR<59U9$Xyso^Z#3_3%(L2X@FrHI_ z2!O_O)gtxuYEbyz@uQ@eq?RH(un*;k_jCP$p_xi~);?v?XCbl&*CB{qfxc7GL>N0k zk1X5J|4!aPudNZeO7Hj3KJ4B)&f&Kp5L3$)4ikT4`hy$^rt>;6**KH@Jd+gT+sHRu zj9-;-tQglK>s5`Br!S)aXfZBTq!1Y|Y9h1&_P&==f{a+qPb=Qpv5rL}7pGjB*xSLi zA%oKv+7_r=P!{G|S^8pSM=(kcA{|hApsYaIg7`xlg&kKVMwEKVSnu~iU4$_$<57Ar zyd7N6NU9=xu#zJ5rX_}DQ7A~Qj^BRdYXLVRtuSJtjA(SLqEnQ#SR|!TC9g`QoJaYUHfn0njEvzLBF6ZI!M#(5x8vVAYUD@(WaKD4#72(vf%1clMQr4>J|o9`#>g4Dxvrjej=m$uxRUsh zI}~;f>i>+yNW2drSE>y~S7=A1?SgA-sb|X(brHt6vV6{7T0SHeg!`IRAvY-tZ7htA z9s3wp(!cTPiJ%5*>_=+IEu4$ITl^ZNN=9U!P!y4(xoSQ>-lJ@OqMg&7YiNd8d6$=%V4GCE}TM1jXjXq%dz(Me%=C< zNlMPVq}7!CWFLIlQ=#wfNNizjH^}7)cUKxO5}iS9NkK_h<=l|iNOcW)PNY7exRR4s zj2v?Ja4GO|)uW`chIGtzMN41{k{zijr8CwzhCdRSM@~p7kE2MdGb2$*b2ngg$QPNq z33s_wT(i8Lfa6AbEAk#^?&$4pLVFbLHi^Bxv`Y?7V=0Hx&r8jZRE+pc4-=zOxMG-b zDPs8{ha-L9+F??4YKn}5re(Qw%q>6M8GL-kBFE2>BQ#d_ls!UY53ij}sH51>g^Du8 z(1J;8`A1qRe=*w1YjRzVj4RAPd>TuiCv6sng-ocXa7s!UM=1V;iwd z@XUyhH84$b@r+kQ_G!j1fp-yj#%sgHNJDO+Wty_Cu`Y|}l!avED4$SD(I6WeYb{sd zjBgzwHq+ioX^1j)o$_vR^(43a&<=cZ~aMSK&`IQ+n4)Ll}R<$T><<%ujzX{qEeslKVr= zIRx~Am=ha?@v|30HD->)#_|0^5+_4{Jdf*j%`;}*pe2ekiar;v_Z!ZdtloOr;nscx z=ZV9D!Gh1_3agoBq%(!M&);&S8vNU!5=?7W*SL$yaOnUeXv7B1Us7mduYvJ`$%Yr) zurTo|V4Xa1r$QaI3@7sC?@6lY;Ve}>2B5%$b9ch`n zmQrF)giAxmp^|seW}>%zG^Av~8JT0o4q2QBG8-hldE8)@feV5`(%y1~9Zcb0jE6Pj zj874N4^t$aM*_pgtc~bHQfx+K#O!%7{Nh#Gm}Bu8qqAQhXT3xLCc-32nS*mBz8{b} z4>5%Lk9ac}K`0)MV$2ezQ6plStn8rgL$oB`O?`E&F-hLzHy$yG`X+Uc59_;@s=!Mf zhn+u)W+|8`_$gQ`G)J)5NFkQ;kGbQInfvBz0br}2ohA2e3- za7&Rg* zcp2?;gX4wlkk9vYaBT~{^|XF)#S`&@T$0$pxlin)FQ0pElC#hrLT~D!v7u5|9H0B- ze^9&-iIFkc>_yTYQZbPmWT#)+jX5gf$zz|>lSet7aycas+OcF!%HhW{Vg~WUz#qXU zrW$E-OzboMc*Qv8ea#A(B6)|4W%T+>ybSG_F`1GPm0~Gn+`(vJ9_`$WW=Vv3jLjPy z^SGBI*Zpu`H+dTcEseBC67#t08&?5Q))Z{yOrhU`kuzMO!U%qj{n&FPwsSmkq*(kN zBU`qhS7Z%YZ+j%IAG{*?#uz$!!|C%kQW#@57xTi6Z|WnAO5yrnMgZ{5tMZmJuAE@B zCGk|^AL-#BXCO98S%(`7g-;Quc*Ngw%po}=MhRXC#>u(h8oveq_$$}t3eSd%g{#n? zRnU`Tb4K=+?kCqbQi*qr4xg0h2YW(nB_$mkTT9U|#b`g* z+%Ue4oRC@^<9rI${1R;CIzUovQX$!=U835!n=9=oV~wq}*^KvS*}<@t*94d3eR;HM zlVXn#{3=&?Ld@b(3`2|~!MS)W6C4zKBr(pwy4d~0*SMCWN7yIiXshu%I`|>GKqTJT zbSTdnV>Y>(jL|-{_mgjl)+ACSeeH%Pp8Snmj9iU-<}g}`{Ejns?6G6KYF7i<=6n0W z1PkiXd&XKw@u_oVqWE?B&UT@))G?T!K6vi*C)aJ5IrQDpvUa$+6>&hMML9A!7V)Q9 zT_g6y;~IIHSo#I8Bxek(n0L6`YE4{k#>-e-^LgYzTW z;u$AMtA@Ofm0mDv2ZC|*loR9V!KUAglA_edJ4CuHD^7%1Lwd9Lc=PTKd!IsrcXCSBx|Mvft%AJ~ei)Ts5v4>G5|MISx1NlqVtO zBh8a1D_2h^X{3yjDioH-OtIpRM+E-Gj(Id(+L;(DMu$Giy066A_0Vs#=Kkf3`xB1~ zqyH$MP);Fzq^v`UgpmoPp`?_w{pKqQD)Ky6x*ZDo$Tr0^rM|H~m!%x}e7Jjn`wttO zBY;&pdEh(Ti?bBpv>cGiWJ^wP4bq;`S(2E`P=g+wMTA^eaynf=_=s&*~ zRbO+W)PG6J)sV8dPOuKYa{+xLO2h_2KRC5tu1-%zF3H9F3|6D{xxLC04MDz*Qu@aG z^wlXoe5=dJ$;iEkN92S&j&Z+cb(Ip995Ely3@w~@@P6Y?o(*K>l5yJzS+5zR!nHuu zy*Q2>Rmy;}y8vxoj6!Qx*T}mDT0uFKr;_x5l07X++=-jAV{Fd{?qEa>T6{jVK5;K? zS+`9q7A=z8b7Jh@Tul9ad|I0Nd!%C+)fX3rACoRJETdWLF{65~-AklL^v>UZWn=%= za^-dd<`W}r54W5tSi(6;EHf~MN0Mg9m2ysu6Ks@U9y1@YQ|@8PXyY2OB(a=0)Cv;D zjML*HE9Qtzj2mTyoM_REIwh_VzbHG?_r?)qv>jKH&c5cGQuyBhj(ZlRQNa7M3F1YUI(LUY{m!G#j50x3XT|4Vv8B8b>*qc5eDX+>pTN z3*nw9z2ELU7;iUr2wVrb+}O*>SpT1xx39zKuqEfCw!z;P)St&EuB}4t5Wq4k5|&zl zb?v;i1lmL2Jp+30GhdcM`LlnItWX*SC053ftVVr@8|MXM`7M|$c2FMo#&W^`*t^hV zy&dz#@SSA{?vEzU%lmH+ z?%^5|Y7Jxk_8Ve6^@oA2PL{)_vmU|t(Z~41yQ-a-O{|qa;;ft-a*J`!)EGz};a$H*dj zXSp(9?DchOF@sr}kKlYgWXJy&E`NC6+CuC#BzxkoU^CN*zw+IT;|kz|U^r8aTt*%v zKXaDjZ#20)agW%U2Kqyxrs z8gV;g^(Ih8x-dfY2$%n8$n}Mg?FEoFW zXOuDJdD;WX5r|+FQ>z z-m}E@WYqOZRSj+5k2CIrKwF{}W$_JN#=eD&zm<1UGn)Iuxq~vXfjB^r@A#t_p7APi zN`8$q@r&`k^0@1x$w7$={2K_PhSHU3-y%!}Ci~E*yjSb`UiId5_52d%q`Ec8y1SdGF1V6;e#8kl* zrW)5`c*SeX*{tqj9)f%`ZM1QVkx7Yhi#Rekx1v-kD}-o!BDbRdihHpTw-_l(os?Rt z?5e`ZDC)6-kCaV`i(|jGNY>GeN8E~G550>v^agj!lDG=lUn`y$amQRn3Cr8#i6gYn z@*d$#>`!7=Z#*#kV0`}o-%LRqG~OAQkBFeb?AJzYNAD63H)a`FL44p}Ie>UZJdtlB zjaLldQS3VJC`Vt#a*i%$iN7Q9ItOCh;Fu+E$&?*YWOoO7UlchM?Ks>~jJ%3Ds0H#3 z9*nl;T0wF*`g4fcV=D)eYth;?9x+RHw%!7KU@QhX2-n~B_o?*eT34V4*COI+UCPSC z?!(}0HRi6!VVu3q>W}F$uZ59|*LW=7a<_3NzoTp2;B2Ghl-P?wnm_m~CuiVZL9~+4 zmmzzY(4xUvUa4pmXE}G#qlJUJZgCd{+8l^O+-Z~XOJhIF$+yPiEH`8`S!>D|AHG|* z|J&*)OU3UVZtSSuo38hMXXXEI?@Zw9uC6=(mt-)uSZpvmSPmwEKx@mJYy;MlH%Z0v z14)>Y&hLBAJ>2(%HXDJTK6(H5Iq&@M^1s`;=iL3={VMUo8;Gr48cci98>bcSPw^)&km^q^->srkL@w-LO-b(_NvDX`?*yNgKLLxX>5(yJN1pBP>dpPT4hXnCa zGP1ke zZVP?dO_Da~HD)iF%|yKZeI4cxi&5(Mt$LHxS2vyHjFQ^azh~aNaQ490kqSo* zte42VJ3A=QB+9M`T1n>ZUw=+SLKI`)@YjVCkM-P;aia4ZoS1B|HJM`a1dapT*4)gO z|MT@wwu!95+FtwKIFWHw|D4F`Eh8f=UAVT9fPbA*`BAKU-AXBE51K!cET4wWHe18(C*vKepY`(O?XK7zN{VZs-zSuy{^ot=clys6K6vZerUx(+JeaRKk~ zwaty%eM}ac&EcSjm~hc?#_r?&qH3G^aI3<1@H=`lSxalyd%JvijJDIICfJ}!hw<$$ zNeE<6={{|Z{o6Fswy%d)ZZWq@Z=tvTJ@Y61 z%Po2YtiRBMM>4=8%rdjii-t&6dTpdlZy%nsdr)kqjXieEfX#XXZuK7vfBG&c^1(mj?ML%WWvTJ6!ME7^2vTlUg2i$_U115A8NT}=Ye~ZTgapS<(Az{ zW~;-@`;~6Kw|~mi?0@6bF&qHnE8%`jWZiDYozns&vN6JH`+u-2{tJ}sKaDx4?Ul&{r z8yA>w;}E{UFTOafJGAXf>E87V0{pu;=p9p;| zrMuAkK65v4|EY8rx=C)Nw@Go#4nsX!DBV|nY^6CfoTjsw*-Pd#C#kn&r^k4+wZ{B; zQP&|_I4kPk6z*-~yEG5Vst5O2c4{_sPME#zIleCR|LXaNSEu&Z@4oV*)A!3-9cQ(B zpHIZT|1m}Bmht}2au3|D9PQ4XV?9@Hy&V3ncW?i;FU{KsZzpWbjV*6BQeXsti5A30 z4EP?(J`;7@ZjI=z&%_Rk{_A$>rto7`x2;`amtX0oaO1FbflqjcU-%6zr<88?KDPa> zv^Ry->e9{Lwwgi+>m!-eH+SO&yDz}n0>Z$Dxnno9_1w;1 z_O3x{pj8KUINe}#&<`|$JJr&eL)DR zEo+e*D_5&SxOUIApW!n-il#ZMCFJk2Fq3(idW+MvlE$n78U{G6H6^=LX|GmE@o%$G z7bx^@wa0Br2di(b>Om13sUaVnTd){OHD?G&yQO?l@Y|uhbB>`?Wp*Hhdi5*2L;9x7 zu5hAdz4Ek2rL#cc?$g+mAyBcbegI|c!PFYH>!WMkReve9xeUV657iAVUp zUesJB+UyE^vt4e(fjgLI<75t+A&Z9|t5uuVtK=7|tPiSGYs4KpC7n8yQch1cs-5cA zuS;dVUi>jlu1l4ZYXfcS#U1nz)`*wTaW+M5+gg1&Jm`Uj5>8PS6MtA+zFTF?j+=Is z`&yOlmh6zE50Z7Obk47n9X$-RMz<>mQ`By3mL1xqcZiZJWw%EB#p&i|am(sqK@aBY z>;y_N^|%g7Ld{n>uMs8MRkOE<8ttOSKJ{Z~tLD#Cxi^Xj)`(g&g9NJ)1sY_tP%TJ@ ze8W+DMbEXeg5e7oham?RfcsasGlUO*=kJy_OVT2$*h#T$&vJ0y)( z%C=GFUE-z5YBl!BT&P`;8wm18?r4LWt^U^<(TP=^;^!G?L{HdsQx%UiTdqFt{(`by z7G}7niYJ;R>6VEi?V`+fQH@bcm)iB^$_1M5pxRdDX{KnfN;cEwbE~*(zrNZos?v8G z4wQi=jF#ye7Y}7x#W^!n>IYTc+m$x<9!?HClFtc^;(*=qMO(RCoRjZ1Q@m9#enOXF zmuR<2@4FOAmwYdgU8`gq+D3*0jo=^J9Qw?~LnBI&*{rE*&$~sb4Z`h8%%y; zT9R&=Xw)FPh2l1DE^bo|U9Y#{KqJ$RN2^p!^E9(ms)r<*m>-+2c7^qrwSoqf{#tR( zdeNg%rJhf#>2k?8vyZq_(vdq`nDtyI%Cw3qOG6*xTGh;z!$j&ai-xXkR%41s>dlfg zS{ZntJ&b*3h*CSn3*5?mt!TANtxAW=eTDpSmTsFkj9KX=`ii;FF1ha4J2h{fY}SZ> zhDR%88fKX-D5h4ZQGAhK|2eVCYD>K^vl?Bh|1C0iiFdA5$`7b*Vf4CE|K0M%swH!3 z+eN7*a@{K$?h|E}=(k6|;ULXsC|^*gxcH<&b$h*PIJ*H4h8cin^|$F0?^7A0HJDX> z^awLPoh+G$WMXZ7wGOJ~UaHo7s>*k>%6Fbp*e)JwQHgI?{~2z` zZ-uaBB(zsjj9KfQqRKwe42>M?MYm4bSBoNO3cXge84j%sdZ^g%0CkFoGAlyQn7enF zDeF>OUagj#wX+8O_USiOv|&$Gja*vP+D|E<)NZ+~R8L@*DApj3Y%FkHrmrWfHCiO9 z6+exjj?LmQ*H%0<+9VFKHRBbc2lo&+sV!Qf)K=@CHH3vha&469fGE%=*M*`WtDox& z=+P(_R;yUAJ}BOqEf@}S)5bTcql`EphmMc*3()mzFDmD-6TF?CWo~g_Ey%5 zqjtztFY3*ZANC(IPr6mqX(*r%cW+h8ex9h;sxOBJ&oHmf?#yE9ukBPRFH$)kEGXZV zqF0N`e2JvqHvI~9?l%?q#dV{k+X{U%U2RZ}S{r6}q3Se!%RbI!qVHnmo0SOk78dg! zT6%M=ATSHc3|leHuC=Nh8$%CavuKvz6KEGVtrXEhO z4ir#mpE&WLIBA`HHi$Eqizd^Br|OI4;ajj$%bYOLGwaR>{T8{ZDQ+5Yz6J@sR$I54`{IU0j6}ruV9_!_= zTU6|p9kV>lh}umxt;2vfpa=V%$#?Pe*qYR{V(&g9Np_*p7wgnN>w{}lx=Tc32qjASa6HrR>4OE9~FE|@NvN>1fLY#Cis-#(}LRt zcL+WsxKqHHz0V1MUhoCMZwY=|aF^h2!S4uuSMYm+djww;+$;Dmg5MYXf#5#D9}50R z@W+DxD)cQ;P3L>zMc2(ejkr^-xYpB@TA~-(e9swpAvju@U-9ug8wV{q2Qkd z&j_9s{EOg6g69N37W}K=-vrMKej@m(;NJy56TBdJQSfuYF9g37yd)q!{~`P`?}Gn~ zc0$<*{<6cl<03vj;*kOC9B9O&A|4&xE2H_uh);_6bonUKnwG#0?QQM!d*y?PB3Sy7!XYl4!p);$;yp z5BP9yMKrIBxGCaQ5jRKN67lMY*F?NF;J4@2Mf3WIH$;48#8*Xpb;NIr_?n2{9`VMA zH$~hk{P}zDt=$~WZ4qyYcx%MlBHkYHj)-?g+#d0+h<8W4C*r*k?~8bU#2pbIh`2N2 zgArdFaaY9M5g&^99T8s_@jD}aSH$m*_;AG6NBo|M-y8A!BEBKw8zX*y#5YC!frvjC z@rNS5IpPmTd`rZ)M*NY8KN|7JBK~;9pNROA5#JW^ry~Azz=w0UgX>;ia7QqYnfn>D zpL=J(S@zk8KNs;|ntSfSh#vy$`>zD^n7LmK`1!eC3)o~VuV0VmzXl)vgZY0WH2SfL zwSOyo>w_;`@i6v!9uZu1YkBS)!p}9`U;9nrw_bHh?pwke~b9}h<_6CPb2>Kh<_IG3lYC4O!|Hd?5{ucG~b3SV{W_j6g9S)fZm^r$TtCO;L?9=!rQ=oa8XzW@(9 z26)gjfPZui-1=bW9P|x9e{>EA&q411&q)!V95Ffwc+f+@_vj+vK_3C%p_4#QZd|lS zKLHQ=3GN?%TrD~Zs1N8V;6Yab5Bdst&W#wo1w803AYAkpym;|dIdmAP9?n6J0qI7U z!F>%Ia~BBnOpF-420Z9S;6cBEB;kB?B1j8D9l8#(>|68DcW_@rSsgkL6wejtJ>Ws_ z0p*JB10M7r@SukQen1xj`9Mbk4>}Qe(24NaUC-B|7l8-e2s|~yDzDm^(L5{S*%4nB z@#PU;5%HXeYlW#VIbq_j6DIz-!o)XEnDFNd^DKyXVZ`;qeBU4pe>Mu=`rvnRi-P^_ zwTp#$mI&Xy_oTX|!qcX8Ku zx`@|Dyg_)*=*Mzb3KRcT!o+{IF!8-jnDDO==6QR>8zbH%%=fLr&~tONZwvTvZc8+8 zjrgGOmMw3|T`R0|oYN(&@|)8g-0O0Oge6CE?+|{jsVjG#F!k@9!pN(42~(c$7KRTF z3-eqreATVQGDW)53S}os+vg;CJTk5GLQB5x%eCO}RUT$@gcY z`E$|z^TMR#3&DP4?ze;q@3)0-_)$~tu7Jnp?iOBk|L1CdM_7DY`@6#9?i-o=Jz?6b zd%)S4xnB(U`MLK7tT9N$zaKHaK6aYqME#!D&W^Uti*|3?(^cQL@j&PPw&u12*UYG% zQoZvPzh8$f!c!h`MZ_ZlJ~sXDYr@@_u3uxT#^{qYO20;P4b@?mf`4X6`+6>s_89uD ziv_3~>C0cfJ^hC3D$S<<_*oSu1@-x#7rYZc@%mHX*oT3B#Tn79|M)oxJz)HrArqeo zNJ9*^Uv#c2!UEMBp8n&nA5{FF_rbJ;n&H zI=ftWPQX(mo)+=+;OBCcFn%xBnziAX(VczJd_Oy4!ZRQ2hc~w=8bkVGJ5LLm;oQ#SU`MFi z5eKocsz%qcvx z;}o*LdB`(g37K1p&6Tq+{$?Sg`-k0Ym#d5|hDi#`e=~!<$H$%v|JrjhGn5vkz`hf6 zWoE(OJZAPkyPfBW-JNddaiE9H?JN%TbFvTOa$%}^axcnDrHKfHUaynDR7d(6Ch+`N12ynFn-dkT2>H1O^@h0{{J z`Fxkpd7P&4wB>UjXE&04iWee%bAr{G@m}^Oo#WyquO#_9mW1r$RZZ`?Vo)%9VnljRRiZ^jRC7$9< zoR58qm%U^uoD^@81yC!+Yw`dd!=8Ad2&HK@l=kfSPVAh_HJ4Q0oDK0fId|pn=wLG` z2E_@<;-R%IjK{de;+Y*ngFeKQc!qb+4{7xJ$~*aiLdX9)jf&KW^hWC4`hR=Ooj7Mrh7Y#_eVUwQJ;Nrk<%w+{M>cTEsjn z`uDQO)zd{Sv(PME`SDxou)zoEH5&2mb%A%UgS=Uq%)gZtrDrKds#^&oJMr!1h1@k8 zPZySvY96C?Zs#qyFXOc22d*@GVtX#ako}`qTP2yF`Inl>?)oZo!EA`xKMrz6V zl9VwcKT|)_m)dmRoj%kxbM<=TRAv{q=b0Um={=>1I-KlN8KI#K`$RoX^t+95koPPo z3%Bu9(XNrInmn3uj=|$fJrH_uDLvi`N%3-iEq#?zW#LoimMSaz)DI!tRClZ|Vlu@f zi1$f|$!t>JgjOe|DfLgVPpL_L6zn}6o^$W5P@AlD=&N`M8n1h=g*3Py=XKmD!PJZ4 zJ*6u3WUx=EGD!_5`uC)4YN%xv9=wi}vl29Ujl0(ym)Y1@txu90Znv5Q)d>L`PZjT8 zpLn-axm?C3(T_66#>&m!T`pqpWo4}bHqQOLdrh*_Syrk@9KvyVZSN^PwB%Nk@Z<7_ z_ml=|a`NN#2S3hT#`oAbrQmVma=Gj^3L7h#Ns0{~#>Ub^TVkn2u6c~ep!A+nmE^O> z?&BVBlL(CzA}=`eX>oZ9t*j|G51sT|tssr~CInn3DPQoC^=p&=lrodo)EKK{_)Mji zBsTV>$?BHJk|>wtHmyObLrHF9pGqgmZR}I&nB2CUQ|EDoa>VPoOLE(DXL36~7bds! zQ=6nWc}_LSB{y-I%+8P9B)5fQG)|Hm|D?@IBlWhhPbHH--ZEMwIY&R6cwN#_+bq{E z@4O|#kJnoF;WYxTClr@?E~T*XI%_==Y`kW8?Q<#UG6O%Uek554k60{LKN3BXEVQADk5)Sf`6nbi{Ux$sS7MhzMmqV19*;s1fOXCge(^C6srOc0~+0$c^ z()^eYPcahHY&^w;LH&l~pf&HFQg`!oB3;dgr!(1jI?1Q`v3ie8Mfwu1r<3;BY+QCi zC$sUCQnSn^rPN|i{a&jZaHOZ0a|(Rrqe-NWf8}XTeo~sLV|?XlwsOM8(`>CAHa*jv zBrf&O!tpf2L)avVi##(MPcyRAY`mP|TC*X|d~3Cca7eS|h`tr05ymgLSW4~P(rE8i zqDMRPRvh24|A2G$XiDCzcXS`2!3{kKyH%p__chr>{TKc`^_OL3Vc!FL4_3Hk4?N+~ z?wWsG`(&BpeCNLQKT!Jci~SGn{txz%UKkV6fBc?`f#YAT@CLj8g8i$5i=P@wDfA!z zDuvf{1o5+P*7tw(mH!!vvtB%AH0Xc-PqV^Xdj#>bUw4Oqr?2>tE@*!qO#YWE9A>}= zTmFA9zXO$jb;v*aZ>WR)=f6eaEjxnvAC=#M^FLRylKTPa{|f&NHvjB{_WbKLyZ+Lu zyT5$bn6p2-JA1P1looAID?2=xb&0h0Fc{y&^y=s6zf55b_w=Wn9Qj-GvX+&XwJdCI zS-7fh+1y1-CoSDGf9}%3htn7TS^a0uVBq>sy<4Lw2V4Kxe?KB7v9I_|^3EGf{6}2> z+4q0u0P$P?>1_^}|09l{^9K3+Z+8Q8gV=tpB%+bCqmPz2COQvQXXQs6Kj$0H^3AAv zKbHLCSf_xYT#=oAB4$r!RaO?J&O;j(;peG~lalkikzzY6~G!&8~n1^;Fuz88Z#_1faE4C$esVXn+hIhk)g zKjme=EQr4%dpV@n-Q{&qPqln4)XDo+oeJhQY3`Edj*-1uc}9b%X?~+GS1%jx8|et= z+vdr2tL)%E?y2K;yzM&w-FpwP@1$Iu*Z*7Jhd1x{Rlj8YzQZz3ZXS!R5+}kzdLc?Th+3>V&1%!ow$Zq^~rZJvWPQm;QoIm6+8n%HcQq`EG4UHTslW z^_A(hu9g24A*8Je12Bb-(A+_L(SJN!jjH!3Yi2f{)=_4lpUTcj2@ zs!+#iZ<~X>gFCosjq*ZsA$r>LOT%OhQV5=+25ndD$Obg!am%;KQ1}rYZQQ7PAlSDl z2ILp@w6K00O(@1=g(kftjMUfTbeQ^hHEfjiDD{b4%( zcLwu_>{|gJ7jzGlWYg8j8>`=S0iT+EDd5wx6VxFbn~lpFg-2$mXV(RMM)rX4DH?@5 zAMjb(6~|#dJKHOKnp%&$g~w*+W={lsUUs4S3uCkMvzCCzXL|##%5D-KnN3jcj_xT_ zKG6+PAv{8GoZxuDNCADMQG(HeO2LT&&fs$Xmb15&6; z3(gU6=IK1a`GWC+D!~N7n*Du9{$FNmzUhU_Ioo{Exq~48>c=y^^V7@?*7rVdk#&S_vLqVKlR01TK;6`S95jM zk9@V^#$WvS*{3&@UwXoA6DMB1ZEC}vtCxQAZZ#xP zj79V6e~~^sj@?H^cG7fG*nP4XMNfIzX=5<2xzWdU^Tf@nV*A|H;#~?(NkVl8O)xZ^0M!@;r|SQ<@cNrK5`m!V^$u*8xzfy+3FhndpR@y zc#ZQ9WlIzuQ%=-cp#h(AMgG7E19}^@hkR}s^hZPJaX81Xd50YJ;aQYB=&8)k4fV@R z)S;SCpOX2^9`0uZex$DPRB6qC@cvX__3`}RKbhwQcWN{4mD$3A`ZzB8)z(-)%dWqn z;X8HN@!|Ws_O^ZFAGC&4myHbbDi`l=4CX4;-u(C~vonIb*YEPOeZf8PM@0zF_*GeXkMce)nCW9$ekTU=pUt!HE3(PKd`~o&mn{iqkH5TZ zX%F+dVD|XR%hnf|E3-#}*+Qp0%R~8iek-z{1+&w$BKvtTJN=aZK)+Ejy=s4Yl*g6R z^2?(lds{G*H=ere1HtU{s>n8k`fje2L2EF-`y#Wc$hHOZNzp@j*|ou3Co^GIW-kS^ zr>`#i+8p9P{OA*pQXeX^p9Ff3wB}O$_=|%2QI%a#hktWrH6S|Fgrb}ve^aZifnx_E9&s5JbIXCt|V=qzw)wg2D8_f^0F~axIZ8uz2#+N z3(S?-xL}r3c&f6|p*@CqEq|2-=JK-BgW225^0G5}n4c7yd}H|; z70lirQGR>4R|fOENZ-2b#9;pRGgCr%joC@T?EF=cogB=b9?e@9m@Bd|1?H-3Y%pJ; z#E_nf>{NFTHBj=ez+9D$3+C~!r2q6_o_C|?=Zs+f_CYgOW@q~MAxV|lS;3s@$JxQ0 z -Delivered-To: tester@mail.local -Received: from localhost (localhost [127.0.0.1]) - by relay1.mail.local (Postfix) with ESMTP id 4B3A33D1B - for ; Fri, 9 Oct 2026 12:12:50 +0200 (CEST) -Authentication-Results: relay1.mail.local (amavis); dkim=pass (1024-bit key) - header.d=tldrnewsletter.com header.b="iNeJEoFI"; dkim=pass (1024-bit key) - header.d=amazonses.com header.b="hatOc5VA" -Received: from relay1.mail.local ([127.0.0.1]) - by localhost (relay1.mail.local [127.0.0.1]) (amavis, port 10026) with LMTP - id WaXwor7Xq29b for ; - Fri, 9 Oct 2026 12:12:48 +0200 (CEST) -Received: from gw1.mail.local (gw1.mail.local [192.0.2.12]) - by relay1.mail.local (Postfix) with ESMTPS id C4FB91322 - for ; Fri, 9 Oct 2026 12:12:48 +0200 (CEST) -Received: from gw1.mail.local (localhost [127.0.0.1]) - by gw1.mail.local (Proxmox) with ESMTP id A9F2041760 - for ; Fri, 09 Oct 2026 10:12:48 +0000 (UTC) -Received-SPF: pass (dailyupdate.tldrnewsletter.com: 54.240.77.27 is authorized to use '010001a12026838a-8b2742b8-#-#-#-914b29c02105-#@dailyupdate.tldrnewsletter.com' in 'mfrom' identity (mechanism 'ip4:54.240.77.27' matched)) receiver=gw1.mail.local; identity=mailfrom; envelope-from="010001a12026838a-8b2742b8-#-#-#-914b29c02105-#@dailyupdate.tldrnewsletter.com"; helo=a77-27.smtp-out.amazonses.com; client-ip=54.240.77.27 -Received: from a77-27.smtp-out.amazonses.com (a77-27.smtp-out.amazonses.com [54.240.77.27]) - (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) - key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) - (No client certificate requested) - by gw1.mail.local (Proxmox) with ESMTPS - for ; Fri, 09 Oct 2026 10:12:45 +0000 (UTC) -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; - s=4fjbpw2ycutwr4bnoiraulemncpkibbj; d=tldrnewsletter.com; - t=1791540757; - h=From:To:Subject:List-Unsubscribe:List-Unsubscribe-Post:MIME-Version:Date:Message-ID:Content-Type; - bh=reKuGdDr29RCDLzjsTvTTpwTXbg7WzxPwkIUtr1KaQQ=; - b=iNeJEoFINA+s30i47q+t2Lb91YwI+XMFovIYeiEFz6AzBpdB6T+FIZA3qfc5ywHG - Ecf7O95lP9iZQS1EFszSyxUvNWyEX84JRvCB/+QD5HaH2if8ONXCNaVc6szVuHzU/IH - R9LDqkKOloBg+PmqbwrUFUPLrJBb67rNKOdLUmHQ= -DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; - s=224i4yxa5dv7c2xz3womw6peuasteono; d=amazonses.com; t=1791540757; - h=From:To:Subject:List-Unsubscribe:List-Unsubscribe-Post:MIME-Version:Date:Message-ID:Content-Type:Feedback-ID; - bh=reKuGdDr29RCDLzjsTvTTpwTXbg7WzxPwkIUtr1KaQQ=; - b=hatOc5VATYl5hTEzu5Aktu1AsjQiJwBw+kDPoMxD+sehOzigqPZ3m4O92TA+dL5x - Z469pt/pHmRQ5SoCFxuC9g231UdWeqCTvruczaksSsGUDiV/ptIgQXVnZF9Zy8g7Jss - OxA9QuPol/Yl3/c5OLCs7u5FRT74eqQM5vaZm6Ng= -From: TLDR Product -To: tester@mail.local -Subject: Will agents have network effects? =?utf-8?Q?=F0=9F=8C=90=2C?= your - moat is dead =?utf-8?Q?=F0=9F=8F=B0=2C?= when AI agents shop for us - =?utf-8?Q?=F0=9F=9B=92?= -X-Entity-Ref-Id: 0x0000x0-xx00-000x-0000-x0000x00000x -X-EmailOctopus-Parent-Id: 0x000xx0-x0xx-00x0-00xx-x0x0xx0000x0 -X-EmailOctopus-Parent-Type-Id: campaign -X-EmailOctopus-List-Id: x0x00x00-0x00-00xx-0x00-0000x0000000 -X-EmailOctopus-List-Contact-Id: 00000xx0-0xxx-00x0-x00x-00xxx0x00x00 -X-EmailOctopus-Started-Preparing-At: 2026-10-09T10:00:49+00:00 -X-EmailOctopus-Sent-At: 2026-10-09T10:12:37+00:00 -X-EmailOctopus-Team-Id: 66987ef2-4f4c-11e9-a3c9-06b79b628af2 -X-EmailOctopus-Version: 5 -List-Unsubscribe: -List-Unsubscribe-Post: List-Unsubscribe=One-Click -X-EmailOctopus-Ses-Configuration-Set-Name: emailoctopus-a9f7b12f74f3c968d9408897fb35539c -MIME-Version: 1.0 -Date: Fri, 9 Oct 2026 10:12:37 +0000 -Message-ID: <000000x00000000x-0x0000x0-0000-0000-0000-000x00x00000-000000@email.amazonses.com> -Content-Type: multipart/alternative; boundary=LB8Q1ZSP -Feedback-ID: ::1.us-east-1.Dj5/7DYmgk+n1sSGGXSQSLIthSjNQ0MGtV5Dro1Tr8U=:AmazonSES -X-SES-Outgoing: 2026.10.09-54.240.77.27 - ---LB8Q1ZSP -Content-Type: text/plain; charset=utf-8 -Content-Transfer-Encoding: quoted-printable - -While current AI agents act as standalone tools, future agents can -develo= -p network effects through acquisition and engagement -loops.=C2=A0= -=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2= -=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C= -=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80= -=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0= -=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2= -=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0= -=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2= -=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C= -=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80= -=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0= -=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2=A0=E2=80=8C=C2= -=A0 - - - Sign Up [1] |Advertise [2]|View Online [3]=20 - -=09=09TLDR = - - -=09=09TOGETHER WITH [Plaid] [4] - -TLDR PRODUCT MANAGEMENT 2026-10-= -09 - - FINANCIAL UNDERSTANDING CAN'T BE PROMPTED. IT HAS TO BE BUILT -(S= -PONSOR) [4]=20 - - The wheel needed roads. Electricity needed the grid. Eve= -ry leap -forward has needed infrastructure underneath it. AI in finance is= - no -different. - -Plaid [4] is the infrastructure that makes permission= -ed financial data -not just accessible, but understood. A paycheck read as= - income, or an -irregular pattern read as potential fraud.=C2=A0 - -That= - understanding can't be prompted. It has to be built. Plaid's -proprietary= - models are built to specifically understand financial -behavior at scale.= - - -Meet the infrastructure for AI innovation in finance. [4] - -= -=F0=9F=93=B1=20 - -NEWS & TRENDS - - WILL AGENTS HAVE NETWORK EFFECTS? (1= -1 MINUTE READ) [5]=20 - - While current AI agents act as standalone tools, = -future agents can -develop network effects through acquisition and engagem= -ent loops. By -turning artifacts into viral objects and building centraliz= -ed identity -layers, agent platforms could create winner-take-all dynamics= -.=20 - - YOUR MOAT IS DEAD. ANYONE CAN REBUILD YOUR PRODUCT (13 MINUTE READ= -) -[6]=20 - - Falling code generation costs and AI agent reimplementations= - have -eliminated traditional software feature and UI moats. Defensibility= - -has shifted toward accountability, proprietary data, regulatory trust,= - -hardware coupling, and customer outcomes, forcing companies to focus -o= -n operational moats and server-side APIs.=20 - -=F0=9F=9A=80=20 - -OPINIONS= - & TUTORIALS - - WHY AGENT-WRITTEN CODE NEEDS PRODUCT VERIFICATION (6 MIN= -UTE READ) [7] - - - When AI agents write both code and tests, they encod= -e identical -misunderstandings, producing green builds that fail real user= - needs. -Teams must establish independent verification based on user -req= -uirements. Lower maintenance costs and faster repair cycles make -comprehe= -nsive end-to-end product verification feasible.=20 - - TESLER'S LAW: COMPLE= -XITY MOVED TO A DIFFERENT PART OF THE JOURNEY (10 -MINUTE READ) [8]=20 - -= - Generative AI interfaces do not eliminate software complexity - they -shi= -ft it to users, developers, and reviewers. While AI automates -routine tas= -ks, it adds hidden burdens in prompt specification and -verification. Desi= -gners must address this by creating clear -constraints and verification wo= -rkflows.=20 - -=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20 - -RESOURCES & TOOLS -= - - 4 FREE DATADOG RESOURCES TO HELP YOU UNDERSTAND YOUR USERS (SPONSOR) -= -[9]=20 - - Juggling tools to try and get a sense of your UX? This PM Toolki= -t [9] -by Datadog shows you how to extract real meaning from product data = -and -build stronger pre-launch hypotheses. Learn how to visually replay -= -user sessions to uncover friction and prioritize updates that move the -ne= -edle. Get the toolkit [9]=20 - - PRODUCT DEFINITION (8 MINUTE READ) [10] = - - - Product thinking and "Product Definition" are essential in the AI -= -era, where agents execute code rapidly given clear direction. Formerly -kn= -own as feature specification, Product Definition shapes requirements -and = -context into actionable artifacts like prototypes and PRDs. This -competen= -cy evolves from tactical execution to building systems that -align teams a= -nd AI agents.=20 - - WHEN DOES ONBOARDING BECOME A PRODUCT PROBLEM? (8 MINU= -TE READ) [11]=20 - - Customer onboarding friction often signals a hidden pr= -oduct issue. -Product managers should address this by creating a repeatabl= -e "Golden -Path," mapping user tasks from purchase to production to replac= -e -manual steps with automated features. Tracking time to first value and= - -completion rates reduces delays and builds long-term product value.=20 -= - -=F0=9F=8E=81=20 - -MISCELLANEOUS - - PRODUCT MANAGER, APPLIED AI AT TL= -DR ($225K BASE + $60K BONUS, FULLY -REMOTE) [12]=20 - - TLDR is hiring its= - first PM to help build the agent-first operating -layer used across the c= -ompany. We're looking for a builder who has -shipped real products/systems= - with LLMs. Click here to learn more -[12].=20 - - INTRODUCING: SPOTIFY TE= -CHNOLOGY. PROVEN AT SPOTIFY, NOW YOURS (6 -MINUTE READ) [13]=20 - - Spotif= -y Technology is a unified suite of developer and media tools -including Po= -rtal, Confidence, Xirp, and Spotify for Backstage. Tested -across Spotify'= -s internal engineering teams to cover the entire -development lifecycle, t= -he offering aims to help external R&D -organizations balance team autonomy= - with architectural alignment.=20 - - HOW SNYK TURNED AN INTERNAL SUPPORT A= -GENT INTO A CUSTOMER FEATURE (8 -MINUTE READ) [14]=20 - - Snyk turned its = -internal AI support agent, Snyk Assist, into a -customer-facing feature. T= -he agent answers user queries within -permission boundaries, utilizing off= -line and online evaluations. Since -launch, it has resolved over 85% of su= -pport sessions without needing a -ticket.=20 - -=E2=9A=A1=20 - -QUICK LINK= -S - - EARN YOUR MBA 100% ONLINE FROM THE OHIO STATE UNIVERSITY (SPONSOR)= - -[15]=20 - - Advance your career with Ohio State's online MBA for Working= - -Professionals-our nationally ranked part-time MBA with the flexibility= - -of an online program that can be completed from anywhere. - -EXPLORE T= -HE PROGRAM [15] - - THE MOST COMMON REASONS WHY AI PILOTS FAIL, EVEN AT T= -HE 'BEST' -COMPANIES (1 MINUTE READ) [16]=20 - - This thread outlines thir= -teen common pitfalls that cause enterprise -AI pilots to fail, such as aut= -omating isolated steps instead of full -workflows, lacking baseline metric= -s, ignoring edge cases, and failing -to engage legal and security teams ea= -rly.=20 - - WHAT HAPPENS WHEN AI AGENTS SHOP FOR US (3 MINUTE READ) [17] = - - - As AI shopping agents use wallets to browse catalogs and complete -= -checkouts automatically, online merchants risk losing direct customer -con= -tact, while users must retain final purchase approval to prevent -accident= -al transactions.=20 - -Love TLDR? Tell your friends and get rewards! - - = -Share your referral link below with friends to get free TLDR swag!=20 - - h= -ttps://refer.tldr.tech/x00000x0/9 [18]=20 - -=09=09 Track your referrals he= -re. [19]=20 - -Want to advertise in TLDR? =F0=9F=93=B0 - - If your compan= -y is interested in reaching an audience of product -management professiona= -ls and decision makers, you may want to -ADVERTISE WITH US [20].=20 - -Wan= -t to work at TLDR? =F0=9F=92=BC - - APPLY HERE [21], CREATE YOUR OWN ROLE= - [22] or send a friend's resume -to jobs@tldr.tech and get $1k if we hire = -them! TLDR is one of INC.'S -BEST BOOTSTRAPPED BUSINESSES [23] of 2025. = - - - If you have any comments or feedback, just respond to this email! = - - -Thanks for reading,=20 -Ellen Le [24]=20 - - Manage your subscriptions= - [25] to our other newsletters on tech, -startups, and programming. Or if = -TLDR Product Management isn't for -you, please unsubscribe [26].=20 - - = - - -Links: ------- -[1] https://tldr.tech/product?utm_source=3Dtldrprod= -uct -[2] https://advertise.tldr.tech/?utm_source=3Dtldrproduct&utm_medium= -=3Dnewsletter&utm_campaign=3Dadvertisetopnav -[3] https://a.tldrnewsletter= -.com/web-version?ep=3D1&lc=3D00000xx0-0xxx-00x0-x00x-00xxx0x00x00&p=3D0x000= -xx0-x0xx-00x0-00xx-x0x0xx0000x0&pt=3Dcampaign&t=3D1791540757&s=3Dx0xxx000x0= -0x000x0000000xx0000x0000x0x0x0000x0x0x000xx0xxx000xx00 -[4] https://plaid.= -com/intelligent-finance?utm_source=3DTLDRProduct&utm_medium=3DPaidNewslette= -r&utm_campaign=3DTLDRProduct_Paid_Newsletter_Ad_Buy&utm_content=3DIntellige= -ntFinanceLP -[5] https://andrewchen.substack.com/p/will-agents-have-networ= -k-effects?utm_source=3Dtldrproduct -[6] https://www.techfounderstack.com/p= -/your-moat-is-dead-anyone-can-rebuild?utm_source=3Dtldrproduct -[7] https:= -//stack72.dev/why-agent-written-code-needs-product-verification/?utm_source= -=3Dtldrproduct -[8] https://links.tldrnewsletter.com/j1OCPG -[9] https://= -www.datadoghq.com/resources/product-manager-toolkit/?utm_source=3Dtldrnewsl= -etter&utm_medium=3Dnewsletter&utm_campaign=3Ddg-content-toolkit-2026product= -manager-dem-productanalytics-ww-en-701vy00000meylhyak-tldrpm-secondary-1009= -26 -[10] https://blog.ravi-mehta.com/p/product-definition?utm_source=3Dtld= -rproduct -[11] https://amycmitchell.substack.com/p/product-management-deve= -loper-experience?utm_source=3Dtldrproduct -[12] https://jobs.ashbyhq.com/t= -ldr.tech/897f4391-66ab-44ca-a8eb-65dd9809200d?utm_source=3Dtldr&sp=3Dxxx0x0= -XX00xxxxXxXXXXXXXx -[13] https://engineering.atspotify.com/2026/10/introdu= -cing-spotify-technology-proven-at-spotify-now-yours?utm_source=3Dtldrproduc= -t -[14] https://www.langchain.com/blog/how-snyk-turned-an-internal-support= --agent-into-a-customer-feature?utm_source=3Dtldrproduct -[15] https://onli= -ne.osu.edu/masters-degree/master-business-administration-working-profession= -als/?lead_source=3DResponse-Solutions&utm_campaign=3Doaa_oso_wpmba-student-= -recruitment_fy27_tldr_product&channel=3DOther-Paid&utm_source=3D3rd-Party-D= -isplay&utm_medium=3DENewsletter -[16] https://threadreaderapp.com/thread/2= -107530654741348354.html?utm_source=3Dtldrproduct -[17] https://flaviocopes= -.com/agent-checkout/?utm_source=3Dtldrproduct -[18] https://refer.tldr.tec= -h/x00000x0/9 -[19] https://hub.sparklp.co/xxx_xxx00x00xxxx/9 -[20] https:= -//advertise.tldr.tech/?utm_source=3Dtldrproduct&utm_medium=3Dnewsletter&utm= -_campaign=3Dadvertisecta -[21] https://jobs.ashbyhq.com/tldr.tech -[22] h= -ttps://jobs.ashbyhq.com/tldr.tech/c227b917-a6a4-40ce-8950-d3e165357871 -[2= -3] https://www.linkedin.com/feed/update/urn:li:activity:7401699691039830016= -/ -[24] https://www.linkedin.com/in/ellenle/ -[25] https://tldr.tech/prod= -uct/manage?email=3Dtester%40mail.local -[26] https://a.tldrnewsletter.com/= -unsubscribe?ep=3D1&l=3Dx0x00x00-0x00-00xx-0x00-0000x0000000&lc=3D00000xx0-0= -xxx-00x0-x00x-00xxx0x00x00&p=3D0x000xx0-x0xx-00x0-00xx-x0x0xx0000x0&pt=3Dca= -mpaign&pv=3D5&spa=3D1791540049&t=3D1791540757&s=3Dxx000000000000x000000x000= -x0xxx00x000x000000xx0x0000000x00x00xx0x ---LB8Q1ZSP -Content-Type: text/html; charset=utf-8 -Content-Transfer-Encoding: quoted-printable - -TLDR Product - - - -
While curr= -ent AI agents act as standalone tools, future agents can develop network ef= -fects through acquisition and engagement loops. =E2=80=8C =E2=80= -=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80= -=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80= -=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80= -=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80= -=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C  = -=E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C = -=E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C = -=E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C = -=E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C = -=E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C =E2=80=8C = -=E2=80=8C 
- -
-
-
- -
- -
- - -
- -
- - - -
- -
- -
- -
TLDR -
-
- -
- - - - -
Together With -3D"Plaid"
-
- -

TLDR Product Management 2026-10-09

-
-
- -
-
- - - - Financial understanding can= -'t be prompted. It has to be built (Sponsor) - - -
-
- - The wheel needed roads. Electricity nee= -ded the grid. Every leap forward has needed infrastructure underneath it. A= -I in finance is no different.

<= -span>Plaid is the infrastructure that makes permissioned financi= -al data not just accessible, but understood. A paycheck read as income, or = -an irregular pattern read as potential fraud. 

- -

That understanding can't be prompted. It has to be built. Plaid's propri= -etary models are built to specifically understand financial behavior at sca= -le.

- -

Meet the infrastructure for AI = -innovation in finance. - - -

-
-
-
-
-
- -
- -
-
-
=F0=9F= -=93=B1
-
- -
-
-
- -

News & Trends

-
-
-
- -
- -
-
- - - - Will agents have network ef= -fects? (11 minute read) - - -
-
- - While current AI agents act as standalo= -ne tools, future agents can develop network effects through acquisition and= - engagement loops. By turning artifacts into viral objects and building cen= -tralized identity layers, agent platforms could create winner-take-all dyna= -mics. - -
-
-
- -
-
- - - - Your Moat Is Dead. Anyone C= -an Rebuild Your Product (13 minute read) - - -
-
- - Falling code generation costs and AI ag= -ent reimplementations have eliminated traditional software feature and UI m= -oats. Defensibility has shifted toward accountability, proprietary data, re= -gulatory trust, hardware coupling, and customer outcomes, forcing companies= - to focus on operational moats and server-side APIs. - -
-
-
- -
- -
-
-
=F0=9F= -=9A=80
-
-
- -
-
-
- -

Opinions & Tutorials

-
-
-
- - -
- -
-
- - - - Why Agent-Written Code Need= -s Product Verification (6 minute read) - - -
-
- - When AI agents write both code and test= -s, they encode identical misunderstandings, producing green builds that fai= -l real user needs. Teams must establish independent verification based on u= -ser requirements. Lower maintenance costs and faster repair cycles make com= -prehensive end-to-end product verification feasible. - -
-
-
- -
-
- - - - Tesler's Law: complexity mo= -ved to a different part of the journey (10 minute read) - - -
-
- - Generative AI interfaces do not elimina= -te software complexity - they shift it to users, developers, and reviewers.= - While AI automates routine tasks, it adds hidden burdens in prompt specifi= -cation and verification. Designers must address this by creating clear cons= -traints and verification workflows. - -
-
-
- -
- -
-
-
=F0=9F= -=A7=91=E2=80=8D=F0=9F=92=BB
-
-
- -
-
-
- -

Resources & Tools

-
-
-
- -
- -
-
- - - - 4 free Datadog resources to= - help you understand your users (Sponsor) - - -
-
- - Juggling tools to try and get a sense o= -f your UX? This PM Toolkit by Datado= -g shows you how to extract real meaning from product data and build stronge= -r pre-launch hypotheses. Learn how to visually replay user sessions to unco= -ver friction and prioritize updates that move the needle. Get the toolkit - -
-
-
- -
-
- - - - Product definition (8 minut= -e read) - - -
-
- - Product thinking and "Product Definitio= -n" are essential in the AI era, where agents execute code rapidly given cle= -ar direction. Formerly known as feature specification, Product Definition s= -hapes requirements and context into actionable artifacts like prototypes an= -d PRDs. This competency evolves from tactical execution to building systems= - that align teams and AI agents. - -
-
-
- -
-
- - - - When Does Onboarding Become= - a Product Problem? (8 minute read) - - -
-
- - Customer onboarding friction often sign= -als a hidden product issue. Product managers should address this by creatin= -g a repeatable "Golden Path," mapping user tasks from purchase to productio= -n to replace manual steps with automated features. Tracking time to first v= -alue and completion rates reduces delays and builds long-term product value= -. - -
-
-
- -
- -
-
-
=F0=9F= -=8E=81
-
- -
-
-

Miscellaneous

<= -/div> -
-
- -
- -
-
- - - - Product Manager, Applied AI= - at TLDR ($225k base + $60k bonus, Fully Remote) - - -
-
- - TLDR is hiring its first PM to help bui= -ld the agent-first operating layer used across the company. We're looking f= -or a builder who has shipped real products/systems with LLMs. Click here to learn more. - -
-
-
- -
-
- - - - Introducing: Spotify Techno= -logy. Proven at Spotify, now yours (6 minute read) - - -
-
- - Spotify Technology is a unified suite o= -f developer and media tools including Portal, Confidence, Xirp, and Spotify= - for Backstage. Tested across Spotify's internal engineering teams to cover= - the entire development lifecycle, the offering aims to help external R&= -;D organizations balance team autonomy with architectural alignment. - -
-
-
- -
-
- - - - How Snyk turned an internal= - support agent into a customer feature (8 minute read) - - -
-
- - Snyk turned its internal AI support age= -nt, Snyk Assist, into a customer-facing feature. The agent answers user que= -ries within permission boundaries, utilizing offline and online evaluations= -. Since launch, it has resolved over 85% of support sessions without needin= -g a ticket. - -
-
-
- -
- - - -
-
-
=E2=9A= -=A1
-
- -
-
-
- -

Quick Links

-
-
-
- -
- -
-
- - - - Earn your MBA 100% online f= -rom The Ohio State University (Sponsor) - - -
-
- - Advance your career with Ohio State's o= -nline MBA for Working Professionals-our nationally ranked part-time MBA wit= -h the flexibility of an online program that can be completed from anywhere.= -

= -Explore the program - - -

-
-
- -
-
- - - - The most common reasons why= - AI pilots fail, even at the 'best' companies (1 minute read) - - -
-
- - This thread outlines thirteen common pi= -tfalls that cause enterprise AI pilots to fail, such as automating isolated= - steps instead of full workflows, lacking baseline metrics, ignoring edge c= -ases, and failing to engage legal and security teams early. - -
-
-
- -
-
- - - - What happens when AI agents= - shop for us (3 minute read) - - -
-
- - As AI shopping agents use wallets to br= -owse catalogs and complete checkouts automatically, online merchants risk l= -osing direct customer contact, while users must retain final purchase appro= -val to prevent accidental transactions. - -
-
-
- -
- - - - - - - - -
- -

-Love TLDR? Tell your friends and get rewards! -

-
-
-Share your referral link below with friends to get free TLDR swag! -
-
- -
-Track your referrals here. -
- - - - -
- -

-Want to advertise in TLDR? =F0=9F=93=B0 -

-
-If your company is interested in reaching an audience of product management= - professionals and decision makers, you may want to advertise with us. -
-
- - - -

-Want to work at TLDR? =F0=9F=92=BC -

-
-Apply here, -create your own role or send a friend's resume to jobs@tldr.tech an= -d get $1k if we hire them! TLDR is one of Inc.'s Best Bootstrapped businesses = -of 2025. -
-
- -
-If you have any comments or feedback, just respond to this email! -
-
Thanks for reading, -
-Ellen L= -e -
-
-
-
-
- -
-
-Manage your subscriptions to our other newsletters on tech= -, startups, and programming. Or if TLDR Product Management isn't for you, p= -lease unsubscribe. -
- -
-
-
-
-
-
- - -3D"" - ---LB8Q1ZSP-- - diff --git a/testfiles/office/excel-artificial.xlsx b/testfiles/office/excel-artificial.xlsx deleted file mode 100644 index 1a0467a0d522e575c6610991401cd8bd3efab634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28742 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