diff --git a/.gitea/workflows/build-pdf.yml b/.gitea/workflows/build-pdf.yml
new file mode 100644
index 0000000..a6ad822
--- /dev/null
+++ b/.gitea/workflows/build-pdf.yml
@@ -0,0 +1,43 @@
+name: Build and Release Typst PDF
+
+on:
+ push:
+ branches:
+ - main
+ tags:
+ - 'v*' # Triggers when a release tag like v1.0.0 is pushed
+
+jobs:
+ build-pdf:
+ runs-on: host
+ steps:
+ # 1. Checkout the source code from Git
+ - name: Checkout Repository
+ uses: actions/checkout@v4
+
+ # 2. Set up Typst CLI and compile the PDF
+ - name: Setup and Compile Typst
+ uses: chgrobold/action-typst@v3
+ with:
+ source: docs/lora/foxmesh-protocol.typ
+ output: docs/lora/FoxMesh_Protocol.pdf
+
+ # 3. Upload PDF as a Gitea artifact (runs on every push to main)
+ - name: Upload PDF Artifact
+ uses: actions/upload-artifact@v7
+ with:
+ name: Foxmesh-Protocol-pdf
+ path: docs/lora/FoxMesh_Protocol.pdf
+ retention-days: 14
+ archive: false
+
+ # 4. Optional: PDF direkt an ein Gitea-Release anhängen (wenn ein Tag gepusht wird)
+# - name: Upload to Gitea Release
+# if: startsWith(github.ref, 'refs/tags/')
+# uses: svenstaro/upload-release-action@v2
+# with:
+# repo_token: ${{ secrets.GITHUB_TOKEN }}
+# file: FoxMesh_Engineering_Manual.pdf
+# asset_name: FoxMesh_Engineering_Manual.pdf
+# tag: ${{ github.ref }}
+# overwrite: true
diff --git a/.gitea/workflows/foxmesh-ci.yml b/.gitea/workflows/foxmesh-ci.yml
index addf1c3..2abc6fc 100644
--- a/.gitea/workflows/foxmesh-ci.yml
+++ b/.gitea/workflows/foxmesh-ci.yml
@@ -5,6 +5,8 @@ on:
branches: [ main ]
pull_request:
branches: [ main ] # Trigger the workflow on pull request events targeting the main branch
+ tags:
+ - 'v*' # Triggers when a release tag like v1.0.0 is pushed
workflow_dispatch:
inputs:
target_branch:
diff --git a/README.md b/README.md
index cf9f9db..d03c994 100644
--- a/README.md
+++ b/README.md
@@ -28,8 +28,9 @@ The firmware is designed to target popular LoRa development ecosystems, with pri
## � Project Mirrors / Hosting
To ensure high availability and decentralization, this project is maintained across multiple platforms:
-* **Primary Repo (GitHub):** [github.com/tkuschel/FoxMesh](https://github.com/tkuschel/FoxMesh)
-* **Self-Hosted Mirror (Gitea):** [git.kuschel.at/tom/FoxMesh](https://git.kuschel.at/tom/FoxMesh)
+
+* **Primary Self-Hosted Repo (Gitea):** [git.kuschel.at/tom/FoxMesh](https://git.kuschel.at/tom/FoxMesh)
+* **Mirror Repo (GitHub):** [github.com/tkuschel/FoxMesh](https://github.com/tkuschel/FoxMesh)
*Note: Both repositories are automatically kept synchronized. You can clone, open issues, or contribute on either platform.*
diff --git a/docs/developers/coding-standards.md b/docs/developers/coding-standards.md
index 58ac019..28d549f 100644
--- a/docs/developers/coding-standards.md
+++ b/docs/developers/coding-standards.md
@@ -7,7 +7,7 @@ This document defines the strict architectural and structural coding standards f
## 1. General Principles
* **Language:** All source code, variable names, class names, file names, and comments **must be written entirely in English**.
-* **Modern C++ Execution:** We target pure C++ implementation architectures utilizing **ESP-IDF v6.0+ (PlatformIO platform v7.x)**.
+* **Modern C++ Execution:** We target pure C++ implementation architectures utilizing **ESP-IDF v6.0+ (PlatformIO platform v7.x)**.
* **Framework Restrictions:** The Arduino framework layer is **strictly prohibited**. Only native ESP-IDF APIs are permitted.
* **No CPU Polling:** Code must be completely event-driven or asynchronous. Traditional busy-waiting or repetitive polling loops inside worker tasks are banned. Use FreeRTOS blocking mechanisms (Queues, Notifications, Semaphores) instead.
@@ -26,7 +26,7 @@ Every source file (`.hpp`, `.cpp`) must feature a compact, Doxygen-compliant doc
* @file filename.hpp
* @brief Concise one-line description of the file's primary hardware/software layer
* @author OM Tom (OE3TKT)
- *
+ *
* @license SPDX-License-Identifier: MIT
* @copyright Copyright (c) 2026 OM Tom (OE3TKT)
* For the full license terms, see the LICENSE file in the project root.
@@ -106,3 +106,31 @@ All public APIs, public structures, and method signatures within header files mu
*/
void updateProfile(const BlinkProfile& profile);
```
+
+## 8. Git Branching and Commit Standards
+
+To ensure traceability and maintain a clean repository history, FoxMesh strictly follows a standardized branching and commit convention based on *Conventional Commits*.
+
+### 8.1 Branch Naming Convention
+Developers must prefix every newly created Git branch with a specific scope identifier followed by a slash (`/`), the Gitea issue number, and a short description.
+
+* **Format:** `/-`
+* **Example:** `docs/123-readme-update` or `feat/45-lora-mesh-ack`
+
+### 8.2 Scope Identifiers
+The following prefixes are permitted for branch creation and commit messages:
+
+* `feat/` (or `feature/`): Introduction of new hardware or software functionalities.
+* `fix/` (or `bugfix/`): Resolution of bugs, runtime stability issues, or crashes.
+* `docs/`: Exclusively reserved for pure documentation updates (Readmes, Doxygen, Wiki).
+* `refactor/`: Code reorganization or optimization without changing external behavior.
+* `chore/`: Updates to the build system, `platformio.ini`, CI/CD pipelines, or external dependencies.
+
+### 8.3 Commit and Issue Automation
+Every commit message should start with the lowercase prefix (e.g., `docs: description`) and must include the targeted Gitea issue number in parentheses at the end to allow automated tracking and timeline linkage:
+
+```bash
+git commit -m "docs: added docker installation guide (#123)"
+```
+
+When submitting a Pull Request (PR) to the `main` branch, developers must use standard closure keywords (`closes #123`, `resolves #123`) within the PR description to ensure Gitea automatically resolves the ticket upon integration.
diff --git a/docs/lora/foxmash-protocol.pdf b/docs/lora/foxmash-protocol.pdf
new file mode 100644
index 0000000..c783e86
--- /dev/null
+++ b/docs/lora/foxmash-protocol.pdf
@@ -0,0 +1,2009 @@
+%PDF-1.7
+%€€€€
+
+1 0 obj
+<>
+endobj
+2 0 obj
+<>
+endobj
+3 0 obj
+<>
+endobj
+4 0 obj
+<>
+endobj
+5 0 obj
+<>
+endobj
+6 0 obj
+<>
+endobj
+7 0 obj
+<>
+endobj
+8 0 obj
+<>
+endobj
+9 0 obj
+<>
+endobj
+10 0 obj
+<>
+endobj
+11 0 obj
+<>
+endobj
+12 0 obj
+<>
+endobj
+13 0 obj
+<>
+endobj
+14 0 obj
+<>
+endobj
+15 0 obj
+<>/K[348 0 R]/ParentTree<>/ParentTreeNextKey 10>>
+endobj
+16 0 obj
+[23 0 R 24 0 R 27 0 R 30 0 R 28 0 R 31 0 R 32 0 R 32 0 R 32 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 38 0 R 39 0 R 40 0 R 41 0 R 43 0 R 44 0 R 46 0 R 45 0 R 47 0 R 51 0 R 51 0 R 51 0 R 48 0 R 51 0 R 49 0 R 51 0 R 50 0 R 51 0 R 51 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 57 0 R 57 0 R 59 0 R 60 0 R 64 0 R 61 0 R 64 0 R 62 0 R 64 0 R 63 0 R 65 0 R 66 0 R 66 0 R 66 0 R 68 0 R 69 0 R 71 0 R 70 0 R 71 0 R 72 0 R 76 0 R 76 0 R 76 0 R 73 0 R 76 0 R 74 0 R 76 0 R 75 0 R 76 0 R 78 0 R 80 0 R 80 0 R 79 0 R 80 0 R 81 0 R 82 0 R 82 0 R 84 0 R 86 0 R 86 0 R 85 0 R 86 0 R 87 0 R 88 0 R 88 0 R 88 0 R 90 0 R 91 0 R 93 0 R 93 0 R 93 0 R 92 0 R 93 0 R 94 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 99 0 R 95 0 R 99 0 R 96 0 R 99 0 R]
+endobj
+17 0 obj
+[99 0 R 97 0 R 99 0 R 98 0 R 99 0 R 99 0 R 101 0 R 103 0 R 103 0 R 102 0 R 103 0 R 104 0 R 104 0 R 107 0 R 108 0 R 109 0 R 110 0 R 112 0 R 113 0 R 113 0 R 116 0 R 116 0 R 114 0 R 116 0 R 115 0 R 116 0 R 116 0 R 116 0 R 118 0 R 121 0 R 119 0 R 121 0 R 121 0 R 120 0 R 121 0 R 123 0 R 122 0 R 123 0 R 125 0 R 128 0 R 126 0 R 128 0 R 128 0 R 127 0 R 128 0 R 130 0 R 129 0 R 130 0 R 132 0 R 135 0 R 133 0 R 135 0 R 135 0 R 134 0 R 135 0 R 136 0 R 136 0 R 139 0 R 140 0 R 142 0 R 144 0 R 145 0 R 146 0 R 148 0 R 149 0 R 151 0 R 153 0 R 154 0 R 156 0 R 158 0 R 159 0 R 161 0 R 163 0 R 164 0 R 166 0 R 168 0 R 169 0 R 170 0 R 170 0 R 170 0 R 173 0 R 174 0 R 174 0 R 174 0 R 174 0 R 175 0 R 175 0 R 176 0 R 176 0 R 177 0 R 178 0 R 180 0 R 181 0 R 182 0 R 183 0 R]
+endobj
+18 0 obj
+[185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 189 0 R 191 0 R 193 0 R 192 0 R 193 0 R 193 0 R 194 0 R 194 0 R 196 0 R 199 0 R 197 0 R 199 0 R 199 0 R 198 0 R 199 0 R 200 0 R 200 0 R 202 0 R 203 0 R 205 0 R 205 0 R 204 0 R 205 0 R 206 0 R 207 0 R 207 0 R 207 0 R 207 0 R 209 0 R 212 0 R 210 0 R 212 0 R 212 0 R 211 0 R 212 0 R 213 0 R 213 0 R 215 0 R 217 0 R 217 0 R 216 0 R 217 0 R 218 0 R 221 0 R 222 0 R 224 0 R 226 0 R 227 0 R 228 0 R 230 0 R 231 0 R 233 0 R 232 0 R 233 0 R 233 0 R 233 0 R 235 0 R 236 0 R 237 0 R 239 0 R 238 0 R 239 0 R 241 0 R 242 0 R 243 0 R 246 0 R 254 0 R 254 0 R 247 0 R 254 0 R 248 0 R 249 0 R 251 0 R 252 0 R 254 0 R 254 0 R 254 0 R 255 0 R 256 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 257 0 R 258 0 R 259 0 R 260 0 R 265 0 R 265 0 R 265 0 R 265 0 R 265 0 R 261 0 R 265 0 R 265 0 R 262 0 R 265 0 R 265 0 R 263 0 R 265 0 R 264 0 R 265 0 R 265 0 R]
+endobj
+19 0 obj
+[267 0 R 268 0 R 272 0 R 272 0 R 269 0 R 272 0 R 270 0 R 272 0 R 271 0 R 272 0 R 272 0 R 274 0 R 275 0 R 278 0 R 276 0 R 278 0 R 278 0 R 278 0 R 278 0 R 278 0 R 277 0 R 278 0 R 278 0 R 280 0 R 281 0 R 284 0 R 282 0 R 284 0 R 283 0 R 284 0 R 284 0 R 284 0 R 287 0 R 288 0 R 288 0 R]
+endobj
+20 0 obj
+[289 0 R 289 0 R 289 0 R 289 0 R 289 0 R 291 0 R 291 0 R 292 0 R 292 0 R 294 0 R 294 0 R 294 0 R 294 0 R 294 0 R 295 0 R 295 0 R 295 0 R 295 0 R 295 0 R 295 0 R 295 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 296 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 297 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 298 0 R 299 0 R 299 0 R 299 0 R 299 0 R 299 0 R 299 0 R 299 0 R 300 0 R 300 0 R 300 0 R 300 0 R 300 0 R 300 0 R 300 0 R 301 0 R 301 0 R 301 0 R 301 0 R 301 0 R 301 0 R 301 0 R 302 0 R 302 0 R 302 0 R 302 0 R 302 0 R 302 0 R 302 0 R 302 0 R 302 0 R 303 0 R 303 0 R 305 0 R 305 0 R 305 0 R 305 0 R 305 0 R 306 0 R 306 0 R 306 0 R 306 0 R 306 0 R 306 0 R 306 0 R 307 0 R 307 0 R 307 0 R 307 0 R 307 0 R 307 0 R 307 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 308 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 309 0 R 310 0 R 310 0 R 310 0 R 310 0 R 310 0 R 310 0 R 310 0 R 311 0 R 311 0 R 311 0 R 311 0 R 311 0 R 311 0 R 311 0 R 312 0 R 312 0 R 314 0 R 314 0 R 316 0 R 316 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 318 0 R 320 0 R 320 0 R 320 0 R 321 0 R 321 0 R 321 0 R 321 0 R 321 0 R 321 0 R 321 0 R 321 0 R 321 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 323 0 R 324 0 R 324 0 R 324 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 325 0 R 327 0 R 327 0 R 327 0 R 328 0 R 328 0 R 328 0 R 328 0 R 328 0 R 328 0 R 328 0 R 328 0 R 329 0 R 329 0 R 329 0 R 329 0 R 329 0 R 329 0 R 329 0 R 329 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 331 0 R 332 0 R 332 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 333 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 334 0 R 336 0 R 336 0 R 336 0 R 337 0 R 337 0 R 337 0 R 337 0 R 337 0 R 337 0 R 337 0 R 337 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 339 0 R 340 0 R 340 0 R 341 0 R]
+endobj
+21 0 obj
+[344 0 R 343 0 R 347 0 R 345 0 R 347 0 R 346 0 R]
+endobj
+22 0 obj
+<>
+endobj
+23 0 obj
+<>
+endobj
+24 0 obj
+<>
+endobj
+25 0 obj
+<>
+endobj
+26 0 obj
+<>
+endobj
+27 0 obj
+<>
+endobj
+28 0 obj
+<>
+endobj
+29 0 obj
+<>28 0 R]>>
+endobj
+30 0 obj
+<>
+endobj
+31 0 obj
+<>
+endobj
+32 0 obj
+<>
+endobj
+33 0 obj
+<>
+endobj
+34 0 obj
+<>
+endobj
+35 0 obj
+<>
+endobj
+36 0 obj
+<>
+endobj
+37 0 obj
+<>]/K[36 0 R]>>
+endobj
+38 0 obj
+<>
+endobj
+39 0 obj
+<><>]/K[15]/Pg 388 0 R>>
+endobj
+40 0 obj
+<><>]/K[16]/Pg 388 0 R>>
+endobj
+41 0 obj
+<><>]/K[17]/Pg 388 0 R>>
+endobj
+42 0 obj
+<>
+endobj
+43 0 obj
+<><>]/K[18]/Pg 388 0 R>>
+endobj
+44 0 obj
+<>
+endobj
+45 0 obj
+<>
+endobj
+46 0 obj
+<><>]/K[44 0 R 20 45 0 R]/Pg 388 0 R>>
+endobj
+47 0 obj
+<>
+endobj
+48 0 obj
+<>]/Pg 388 0 R>>
+endobj
+49 0 obj
+<>
+endobj
+50 0 obj
+<>
+endobj
+51 0 obj
+<><>]/K[47 0 R 23 24 25 48 0 R 27 49 0 R 29 50 0 R 31 32]/Pg 388 0 R>>
+endobj
+52 0 obj
+<>
+endobj
+53 0 obj
+<><>]/K[33]/Pg 388 0 R>>
+endobj
+54 0 obj
+<>
+endobj
+55 0 obj
+<><>]/K[54 0 R 35]/Pg 388 0 R>>
+endobj
+56 0 obj
+<>
+endobj
+57 0 obj
+<><>]/K[56 0 R 37 38 39]/Pg 388 0 R>>
+endobj
+58 0 obj
+<>
+endobj
+59 0 obj
+<><>]/K[40]/Pg 388 0 R>>
+endobj
+60 0 obj
+<>
+endobj
+61 0 obj
+<>
+endobj
+62 0 obj
+<>
+endobj
+63 0 obj
+<>
+endobj
+64 0 obj
+<><>]/K[60 0 R 42 61 0 R 44 62 0 R 46 63 0 R]/Pg 388 0 R>>
+endobj
+65 0 obj
+<>
+endobj
+66 0 obj
+<><>]/K[65 0 R 49 50 51]/Pg 388 0 R>>
+endobj
+67 0 obj
+<>
+endobj
+68 0 obj
+<><>]/K[52]/Pg 388 0 R>>
+endobj
+69 0 obj
+<>
+endobj
+70 0 obj
+<>
+endobj
+71 0 obj
+<><>]/K[69 0 R 54 70 0 R 56]/Pg 388 0 R>>
+endobj
+72 0 obj
+<>
+endobj
+73 0 obj
+<>
+endobj
+74 0 obj
+<>]/Pg 388 0 R>>
+endobj
+75 0 obj
+<>
+endobj
+76 0 obj
+<><>]/K[72 0 R 58 59 60 73 0 R 62 74 0 R 64 75 0 R 66]/Pg 388 0 R>>
+endobj
+77 0 obj
+<>
+endobj
+78 0 obj
+<><>]/K[67]/Pg 388 0 R>>
+endobj
+79 0 obj
+<>
+endobj
+80 0 obj
+<><>]/K[68 69 79 0 R 71]/Pg 388 0 R>>
+endobj
+81 0 obj
+<>
+endobj
+82 0 obj
+<><>]/K[81 0 R 73 74]/Pg 388 0 R>>
+endobj
+83 0 obj
+<>
+endobj
+84 0 obj
+<><>]/K[75]/Pg 388 0 R>>
+endobj
+85 0 obj
+<>
+endobj
+86 0 obj
+<><>]/K[76 77 85 0 R 79]/Pg 388 0 R>>
+endobj
+87 0 obj
+<>
+endobj
+88 0 obj
+<><>]/K[87 0 R 81 82 83]/Pg 388 0 R>>
+endobj
+89 0 obj
+<>
+endobj
+90 0 obj
+<><>]/K[84]/Pg 388 0 R>>
+endobj
+91 0 obj
+<>
+endobj
+92 0 obj
+<>
+endobj
+93 0 obj
+<><>]/K[91 0 R 86 87 88 92 0 R 90]/Pg 388 0 R>>
+endobj
+94 0 obj
+<>
+endobj
+95 0 obj
+<>
+endobj
+96 0 obj
+<>
+endobj
+97 0 obj
+<>
+endobj
+98 0 obj
+<>
+endobj
+99 0 obj
+<><>]/K[94 0 R 92 93 94 95 96 97 95 0 R 99 96 0 R 101<>97 0 R<>98 0 R<><>]/Pg 388 0 R>>
+endobj
+100 0 obj
+<>
+endobj
+101 0 obj
+<><>]/K[6]/Pg 389 0 R>>
+endobj
+102 0 obj
+<>
+endobj
+103 0 obj
+<><>]/K[7 8 102 0 R 10]/Pg 389 0 R>>
+endobj
+104 0 obj
+<><>]/K[11 12]/Pg 389 0 R>>
+endobj
+105 0 obj
+<>
+endobj
+106 0 obj
+<>]/K[42 0 R 52 0 R 58 0 R 67 0 R 77 0 R 83 0 R 89 0 R 100 0 R 105 0 R]>>
+endobj
+107 0 obj
+<>
+endobj
+108 0 obj
+<><>]/K[14]/Pg 389 0 R>>
+endobj
+109 0 obj
+<><>]/K[15]/Pg 389 0 R>>
+endobj
+110 0 obj
+<><>]/K[16]/Pg 389 0 R>>
+endobj
+111 0 obj
+<>
+endobj
+112 0 obj
+<><>]/K[17]/Pg 389 0 R>>
+endobj
+113 0 obj
+<><>]/K[18 19]/Pg 389 0 R>>
+endobj
+114 0 obj
+<>
+endobj
+115 0 obj
+<>
+endobj
+116 0 obj
+<><>]/K[20 21 114 0 R 23 115 0 R 25 26 27]/Pg 389 0 R>>
+endobj
+117 0 obj
+<>
+endobj
+118 0 obj
+<><>]/K[28]/Pg 389 0 R>>
+endobj
+119 0 obj
+<>
+endobj
+120 0 obj
+<>
+endobj
+121 0 obj
+<><>]/K[29 119 0 R 31 32 120 0 R 34]/Pg 389 0 R>>
+endobj
+122 0 obj
+<>
+endobj
+123 0 obj
+<><>]/K[35 122 0 R 37]/Pg 389 0 R>>
+endobj
+124 0 obj
+<>
+endobj
+125 0 obj
+<><>]/K[38]/Pg 389 0 R>>
+endobj
+126 0 obj
+<>
+endobj
+127 0 obj
+<>
+endobj
+128 0 obj
+<><>]/K[39 126 0 R 41 42 127 0 R 44]/Pg 389 0 R>>
+endobj
+129 0 obj
+<>
+endobj
+130 0 obj
+<><>]/K[45 129 0 R 47]/Pg 389 0 R>>
+endobj
+131 0 obj
+<>
+endobj
+132 0 obj
+<><>]/K[48]/Pg 389 0 R>>
+endobj
+133 0 obj
+<>
+endobj
+134 0 obj
+<>
+endobj
+135 0 obj
+<><>]/K[49 133 0 R 51 52 134 0 R 54]/Pg 389 0 R>>
+endobj
+136 0 obj
+<><>]/K[55 56]/Pg 389 0 R>>
+endobj
+137 0 obj
+<>
+endobj
+138 0 obj
+<>]/K[111 0 R 117 0 R 124 0 R 131 0 R 137 0 R]>>
+endobj
+139 0 obj
+<>
+endobj
+140 0 obj
+<>
+endobj
+141 0 obj
+<>
+endobj
+142 0 obj
+<>
+endobj
+143 0 obj
+<>
+endobj
+144 0 obj
+<><>]/K[60]/Pg 389 0 R>>
+endobj
+145 0 obj
+<><>]/K[61]/Pg 389 0 R>>
+endobj
+146 0 obj
+<><>]/K[62]/Pg 389 0 R>>
+endobj
+147 0 obj
+<>
+endobj
+148 0 obj
+<><>]/K[63]/Pg 389 0 R>>
+endobj
+149 0 obj
+<>
+endobj
+150 0 obj
+<><>]/K[149 0 R]>>
+endobj
+151 0 obj
+<><>]/K[65]/Pg 389 0 R>>
+endobj
+152 0 obj
+<>
+endobj
+153 0 obj
+<><>]/K[66]/Pg 389 0 R>>
+endobj
+154 0 obj
+<>
+endobj
+155 0 obj
+<><>]/K[154 0 R]>>
+endobj
+156 0 obj
+<><>]/K[68]/Pg 389 0 R>>
+endobj
+157 0 obj
+<>
+endobj
+158 0 obj
+<><>]/K[69]/Pg 389 0 R>>
+endobj
+159 0 obj
+<>
+endobj
+160 0 obj
+<><>]/K[159 0 R]>>
+endobj
+161 0 obj
+<><>]/K[71]/Pg 389 0 R>>
+endobj
+162 0 obj
+<>
+endobj
+163 0 obj
+<><>]/K[72]/Pg 389 0 R>>
+endobj
+164 0 obj
+<>
+endobj
+165 0 obj
+<><>]/K[164 0 R]>>
+endobj
+166 0 obj
+<><>]/K[74]/Pg 389 0 R>>
+endobj
+167 0 obj
+<>
+endobj
+168 0 obj
+<><>]/K[75]/Pg 389 0 R>>
+endobj
+169 0 obj
+<><>]/K[76]/Pg 389 0 R>>
+endobj
+170 0 obj
+<><>]/K[77 78 79]/Pg 389 0 R>>
+endobj
+171 0 obj
+<>
+endobj
+172 0 obj
+<>]/K[147 0 R 152 0 R 157 0 R 162 0 R 167 0 R 171 0 R]>>
+endobj
+173 0 obj
+<>
+endobj
+174 0 obj
+<>
+endobj
+175 0 obj
+<>
+endobj
+176 0 obj
+<>
+endobj
+177 0 obj
+<>
+endobj
+178 0 obj
+<>
+endobj
+179 0 obj
+<>]/K[178 0 R]>>
+endobj
+180 0 obj
+<>
+endobj
+181 0 obj
+<><>]/K[92]/Pg 389 0 R>>
+endobj
+182 0 obj
+<><>]/K[93]/Pg 389 0 R>>
+endobj
+183 0 obj
+<><>]/K[94]/Pg 389 0 R>>
+endobj
+184 0 obj
+<>
+endobj
+185 0 obj
+<><>]/K[0]/Pg 390 0 R>>
+endobj
+186 0 obj
+<>
+endobj
+187 0 obj
+<><>]/K[186 0 R 2]/Pg 390 0 R>>
+endobj
+188 0 obj
+<>
+endobj
+189 0 obj
+<><>]/K[188 0 R 4 5]/Pg 390 0 R>>
+endobj
+190 0 obj
+<>
+endobj
+191 0 obj
+<><>]/K[6]/Pg 390 0 R>>
+endobj
+192 0 obj
+<>
+endobj
+193 0 obj
+<><>]/K[7 192 0 R 9 10]/Pg 390 0 R>>
+endobj
+194 0 obj
+<><>]/K[11 12]/Pg 390 0 R>>
+endobj
+195 0 obj
+<>
+endobj
+196 0 obj
+<><>]/K[13]/Pg 390 0 R>>
+endobj
+197 0 obj
+<>
+endobj
+198 0 obj
+<>
+endobj
+199 0 obj
+<><>]/K[14 197 0 R 16 17 198 0 R 19]/Pg 390 0 R>>
+endobj
+200 0 obj
+<><>]/K[20 21]/Pg 390 0 R>>
+endobj
+201 0 obj
+<>
+endobj
+202 0 obj
+<><>]/K[22]/Pg 390 0 R>>
+endobj
+203 0 obj
+<>
+endobj
+204 0 obj
+<>
+endobj
+205 0 obj
+<><>]/K[203 0 R 24 25 204 0 R 27]/Pg 390 0 R>>
+endobj
+206 0 obj
+<>
+endobj
+207 0 obj
+<><>]/K[206 0 R 29 30 31 32]/Pg 390 0 R>>
+endobj
+208 0 obj
+<>
+endobj
+209 0 obj
+<><>]/K[33]/Pg 390 0 R>>
+endobj
+210 0 obj
+<>
+endobj
+211 0 obj
+<>
+endobj
+212 0 obj
+<><>]/K[34 210 0 R 36 37 211 0 R 39]/Pg 390 0 R>>
+endobj
+213 0 obj
+<><>]/K[40 41]/Pg 390 0 R>>
+endobj
+214 0 obj
+<>
+endobj
+215 0 obj
+<><>]/K[42]/Pg 390 0 R>>
+endobj
+216 0 obj
+<>
+endobj
+217 0 obj
+<><>]/K[43 44 216 0 R 46]/Pg 390 0 R>>
+endobj
+218 0 obj
+<><>]/K[47]/Pg 390 0 R>>
+endobj
+219 0 obj
+<>
+endobj
+220 0 obj
+<>]/K[184 0 R 190 0 R 195 0 R 201 0 R 208 0 R 214 0 R 219 0 R]>>
+endobj
+221 0 obj
+<>
+endobj
+222 0 obj
+<>
+endobj
+223 0 obj
+<>
+endobj
+224 0 obj
+<>
+endobj
+225 0 obj
+<>
+endobj
+226 0 obj
+<><>]/K[51]/Pg 390 0 R>>
+endobj
+227 0 obj
+<><>]/K[52]/Pg 390 0 R>>
+endobj
+228 0 obj
+<><>]/K[53]/Pg 390 0 R>>
+endobj
+229 0 obj
+<>
+endobj
+230 0 obj
+<><>]/K[54]/Pg 390 0 R>>
+endobj
+231 0 obj
+<><>]/K[55]/Pg 390 0 R>>
+endobj
+232 0 obj
+<>
+endobj
+233 0 obj
+<><>]/K[56 232 0 R 58 59 60]/Pg 390 0 R>>
+endobj
+234 0 obj
+<>
+endobj
+235 0 obj
+<><>]/K[61]/Pg 390 0 R>>
+endobj
+236 0 obj
+<><>]/K[62]/Pg 390 0 R>>
+endobj
+237 0 obj
+<>
+endobj
+238 0 obj
+<>
+endobj
+239 0 obj
+<><>]/K[237 0 R 64 238 0 R 66]/Pg 390 0 R>>
+endobj
+240 0 obj
+<>
+endobj
+241 0 obj
+<><>]/K[67]/Pg 390 0 R>>
+endobj
+242 0 obj
+<><>]/K[68]/Pg 390 0 R>>
+endobj
+243 0 obj
+<><>]/K[69]/Pg 390 0 R>>
+endobj
+244 0 obj
+<>
+endobj
+245 0 obj
+<>]/K[229 0 R 234 0 R 240 0 R 244 0 R]>>
+endobj
+246 0 obj
+<>
+endobj
+247 0 obj
+<>
+endobj
+248 0 obj
+<>
+endobj
+249 0 obj
+<>
+endobj
+250 0 obj
+<>
+endobj
+251 0 obj
+<>
+endobj
+252 0 obj
+<>
+endobj
+253 0 obj
+<>
+endobj
+254 0 obj
+<>
+endobj
+255 0 obj
+<>
+endobj
+256 0 obj
+<>
+endobj
+257 0 obj
+<>
+endobj
+258 0 obj
+<>
+endobj
+259 0 obj
+<>
+endobj
+260 0 obj
+<>
+endobj
+261 0 obj
+<>
+endobj
+262 0 obj
+<>
+endobj
+263 0 obj
+<>
+endobj
+264 0 obj
+<>
+endobj
+265 0 obj
+<>
+endobj
+266 0 obj
+<>
+endobj
+267 0 obj
+<>
+endobj
+268 0 obj
+<>
+endobj
+269 0 obj
+<>
+endobj
+270 0 obj
+<>
+endobj
+271 0 obj
+<>
+endobj
+272 0 obj
+<>
+endobj
+273 0 obj
+<>
+endobj
+274 0 obj
+<>
+endobj
+275 0 obj
+<>
+endobj
+276 0 obj
+<>
+endobj
+277 0 obj
+<>
+endobj
+278 0 obj
+<>
+endobj
+279 0 obj
+<>
+endobj
+280 0 obj
+<>
+endobj
+281 0 obj
+<>
+endobj
+282 0 obj
+<>
+endobj
+283 0 obj
+<>
+endobj
+284 0 obj
+<>
+endobj
+285 0 obj
+<>
+endobj
+286 0 obj
+<>]/K[266 0 R 273 0 R 279 0 R 285 0 R]>>
+endobj
+287 0 obj
+<>
+endobj
+288 0 obj
+<>
+endobj
+289 0 obj
+<>
+endobj
+290 0 obj
+<>
+endobj
+291 0 obj
+<>
+endobj
+292 0 obj
+<>
+endobj
+293 0 obj
+<>
+endobj
+294 0 obj
+<>
+endobj
+295 0 obj
+<>
+endobj
+296 0 obj
+<>
+endobj
+297 0 obj
+<>
+endobj
+298 0 obj
+<>
+endobj
+299 0 obj
+<>
+endobj
+300 0 obj
+<>
+endobj
+301 0 obj
+<>
+endobj
+302 0 obj
+<>
+endobj
+303 0 obj
+<>
+endobj
+304 0 obj
+<>
+endobj
+305 0 obj
+<>
+endobj
+306 0 obj
+<>
+endobj
+307 0 obj
+<>
+endobj
+308 0 obj
+<>
+endobj
+309 0 obj
+<>
+endobj
+310 0 obj
+<>
+endobj
+311 0 obj
+<>
+endobj
+312 0 obj
+<>
+endobj
+313 0 obj
+<>
+endobj
+314 0 obj
+<>
+endobj
+315 0 obj
+<>
+endobj
+316 0 obj
+<>
+endobj
+317 0 obj
+<>
+endobj
+318 0 obj
+<>
+endobj
+319 0 obj
+<>
+endobj
+320 0 obj
+<>
+endobj
+321 0 obj
+<>
+endobj
+322 0 obj
+<>
+endobj
+323 0 obj
+<>
+endobj
+324 0 obj
+<>
+endobj
+325 0 obj
+<>
+endobj
+326 0 obj
+<>
+endobj
+327 0 obj
+<>
+endobj
+328 0 obj
+<>
+endobj
+329 0 obj
+<>
+endobj
+330 0 obj
+<>
+endobj
+331 0 obj
+<>
+endobj
+332 0 obj
+<>
+endobj
+333 0 obj
+<>
+endobj
+334 0 obj
+<>
+endobj
+335 0 obj
+<>
+endobj
+336 0 obj
+<>
+endobj
+337 0 obj
+<>
+endobj
+338 0 obj
+<>
+endobj
+339 0 obj
+<>
+endobj
+340 0 obj
+<>
+endobj
+341 0 obj
+<>
+endobj
+342 0 obj
+<>]/K[289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R]>>
+endobj
+343 0 obj
+<>
+endobj
+344 0 obj
+<>
+endobj
+345 0 obj
+<>]/Pg 393 0 R>>
+endobj
+346 0 obj
+<>]/K[5]/Pg 393 0 R>>
+endobj
+347 0 obj
+<>
+endobj
+348 0 obj
+<>
+endobj
+349 0 obj
+<>/F 4/StructParent 0/Contents(foxmash-protocol_de.pdf)>>
+endobj
+350 0 obj
+<>/F 4/StructParent 1/Contents(https://ui-view.net)>>
+endobj
+351 0 obj
+<>/F 4/StructParent 2/Contents(https://aprs11/SSIDs.txt)>>
+endobj
+352 0 obj
+<>/F 4/StructParent 8/Contents(https://typst.app)>>
+endobj
+353 0 obj
+[/ICCBased 415 0 R]
+endobj
+354 0 obj
+[/ICCBased 416 0 R]
+endobj
+355 0 obj
+[388 0 R/XYZ 56.692913 671.3477 0]
+endobj
+356 0 obj
+[389 0 R/XYZ 56.692913 676.2712 0]
+endobj
+357 0 obj
+[388 0 R/XYZ 56.692913 515.59265 0]
+endobj
+358 0 obj
+[388 0 R/XYZ 56.692913 592.11475 0]
+endobj
+359 0 obj
+[389 0 R/XYZ 56.692913 143.20715 0]
+endobj
+360 0 obj
+[390 0 R/XYZ 56.692913 394.04117 0]
+endobj
+361 0 obj
+[389 0 R/XYZ 56.692913 327.41718 0]
+endobj
+362 0 obj
+[390 0 R/XYZ 56.692913 215.03717 0]
+endobj
+363 0 obj
+[390 0 R/XYZ 56.692913 292.91565 0]
+endobj
+364 0 obj
+[391 0 R/XYZ 56.692913 593.30817 0]
+endobj
+365 0 obj
+[390 0 R/XYZ 56.692913 316.16266 0]
+endobj
+366 0 obj
+[388 0 R/XYZ 56.692913 724.3307 0]
+endobj
+367 0 obj
+<>/Font<>>>
+endobj
+368 0 obj
+<>/Font<>>>
+endobj
+369 0 obj
+<>/Font<>>>
+endobj
+370 0 obj
+<>/Font<>>>
+endobj
+371 0 obj
+<>/Font<>>>
+endobj
+372 0 obj
+<>/Font<>>>
+endobj
+373 0 obj
+<>
+endobj
+374 0 obj
+<>/FontDescriptor 375 0 R/DW 0/W[0 0 500 1 1 485 2 2 504 3 3 490 4 4 839 5 5 457 6 6 390 7 7 538 8 8 250 9 9 541 10 10 372 11 11 316 12 12 428 13 13 264 14 14 497 15 15 465 16 16 220 17 17 465 18 18 695 19 19 790 20 20 447 21 21 531 22 22 587 23 23 505.99997 24 24 271 25 25 701 26 26 542 27 27 500 28 28 557 29 29 297 30 30 310 31 31 493 32 32 220 33 33 515 34 34 560 35 35 597 36 36 747 37 37 519 38 39 465 40 40 424 41 41 272 42 42 829 43 43 661 44 44 338 45 45 646 46 46 660 47 47 465 48 48 485 49 49 236 50 50 588 51 51 705 52 53 298 54 54 512 55 55 236 56 56 548 57 59 465 60 60 730 61 61 323 62 62 465 63 63 702 64 64 528 65 65 637 66 66 652 67 67 699 68 68 540 69 69 465 70 70 503.00003 71 72 550 73 73 268 74 75 550 76 76 702 77 77 637 78 78 702 79 79 550 80 80 951 81 81 596 82 82 582]>>
+endobj
+375 0 obj
+<>
+endobj
+376 0 obj
+<>
+endobj
+377 0 obj
+<>/FontDescriptor 378 0 R/DW 0/W[0 0 500 1 1 545 2 2 551 3 3 561 4 4 899 5 5 505.99997 6 6 427 7 7 619 8 8 614 9 9 428 10 10 358 11 11 456 12 12 325 13 13 740 14 14 598 15 15 905 16 16 322 17 17 250 18 18 504 19 19 616 20 20 489 21 21 716 22 22 734 23 23 652 24 24 521 25 26 315 27 27 654 28 28 558 29 29 316 30 30 730 31 31 716 32 32 561 33 33 581 34 34 367 35 35 641 36 36 256 37 37 706 38 38 740 39 39 700 40 40 777 41 41 613 42 42 817 43 43 542 44 45 514 46 46 537 47 47 514 48 48 358 49 50 514 51 51 452 52 52 391 53 53 609 54 54 514 55 55 577 56 56 1028 57 57 529 58 58 624 59 59 397 60 60 736 61 61 244 62 62 397]>>
+endobj
+378 0 obj
+<>
+endobj
+379 0 obj
+<>
+endobj
+380 0 obj
+<>/FontDescriptor 381 0 R/DW 0/W[0 0 500 1 1 667 2 2 401 3 3 521 4 4 307 5 5 353 6 6 389 7 7 519 8 8 250 9 9 597 10 10 357 11 11 276 12 12 447 13 13 518 14 14 486 15 15 436 16 16 477 17 17 334 18 18 519 19 19 266 20 20 544 21 21 783 22 22 666 23 23 334 24 24 628 25 25 489 26 26 503.00003 27 27 489 28 28 478 29 29 314 30 30 688]>>
+endobj
+381 0 obj
+<>
+endobj
+382 0 obj
+<>
+endobj
+383 0 obj
+<>/FontDescriptor 384 0 R/DW 0/CIDToGIDMap/Identity/W[0 80 602.0508]>>
+endobj
+384 0 obj
+<>
+endobj
+385 0 obj
+<>
+endobj
+386 0 obj
+<>/FontDescriptor 387 0 R/DW 0/CIDToGIDMap/Identity/W[0 3 602.0508]>>
+endobj
+387 0 obj
+<>
+endobj
+388 0 obj
+<>
+endobj
+389 0 obj
+<>
+endobj
+390 0 obj
+<>
+endobj
+391 0 obj
+<>
+endobj
+392 0 obj
+<>
+endobj
+393 0 obj
+<>
+endobj
+394 0 obj
+<>
+stream
+xœûÿ Aª
+×
+endstream
+endobj
+395 0 obj
+<>
+stream
+xœm•Moâ@†ïù³‡Hí¡Kâ™LÚªB¢ÐHú¡Rížiư‘Ê$ÊÇ�¿šy
E«= zc�íÇž˜ôÇÛæfáÚO¾Ñ?3õÎC;õ5ß,Ÿ·]’¦«¶žìÇfÇîdîU×·õÀ£Z®WkߌIš®}ý59>ùüÏå‘÷�ÿv9ÔrÆö�¤éG3~ñ½ºÂkRkÇ~lƣʮ“4ýÅýдþ^åIš>y·l¡¸!™I5{ëÛzãÚ5Þõ’I}†¼INÊ5õ(*~ׇmoŽÃȇµßµJÃËM�x*¥Ôì�÷Í0öGu»VŽw°¼öŽûÆïÕÕ©Øãfêº/Eª,>eïâï,À¿l¬f|~*”*ÿ~ôqìXÌ~?·î$r”X·Ž‡n[s¿õ{N²,Ëæê¡ªªj2þc¿%ûÜÕ¶}tÏçê!ËŒ�GEQÙ
+JGUÞBx®
+xæPžª„MÎÝFEÔ]T…¨ÎÔ#”�Z"ŠÄ\A-¡žà)UWQiÄÌC²Œž À§Qg>#
+|D9øl¾Rø
+Ô™êÌÁgï ÀgÄ>+µ€Ï–Pà3’|F¢€Ï‚/ŸEv>t‚ÀWâÉüì¹c�zŒ%* aDߌS#0jÉ ÆrF+jñ�ó"/XÐX �&aÅd ¬…ä•YâœkO-³D^-³D…œ„Žipbjp*Óà´�PÂ)*pR¸Q�SKLpj±�O£“Zf)ùÀGx‹4ø´dŸ�Í€Ï`–|v¾Ù
øn’‘»ú-gÁ¨1g#ï#î¹Æ”¼� 6�‘µ�J%K`$ÊÑaÆBbÊ%ŠÌPl2CTVÈÑ©Œ¡ryÏ‹‹;kãÒ’íÖWØÒç}YO}Ï~ŒK:.ǰ Ïçmßµ]8?ñoâô�Ôkõ×@«‚
+endstream
+endobj
+396 0 obj
+<>
+stream
+xœ�zxÕú~bØ"pW͸šìàŒ ˆ""^A®ô*Ò„Ð!½@zÙMß’l›�í»ÙMï„$»é„T¤*UÄ 4QìŠßàÉýù6�b¿Ïÿyò$›™9gOù¾÷}¿÷Œ»Û¨Qnîîî^oG†Ä'FD'%l‰�}é��°¤È€x×½eΌӌ%˜gƺ£ÝH�æÁﱜq_d Ë8/ü—û¬gÜÜܺ{ÆÍÍ}ôϸ¹ýúëØ ®K?Œ�èúsgì$7ww6oÕÂà˜À�•Á!щ‰)‹cbSâ#Ÿþ4sÆ+3_š9cæ¬g7†‡<;<¬g×ÅÇì
+ J|vaRbxL|Ât7·GÜÜÝÖ‹mÌB{¡
ž´ÖÙ«l$Ëá£=r~û¨fì˜úÑ}cúLcÿÅà{¸¹»¹¹¹mpÍèIZ£¡]p�mŠëW¯§ÛWw«Ý~u_óÈj�qûG½Í°žaU²ç³›Ù¿r¶r®pçp7q÷=ºbôÚÑûÇ�}jì¥mþ×ižé1íãëo|bö}ž�{À$OòŸ¼É/{jÖSO/}ú„÷ÞvïnÁ³ø+øžqÆmw÷™îgþ�X@N"É<²ÿÙ´g?oß8á© 1>yN3qÌÄ}“ϳŸw<ÿõä×'GO.šÜ;%uê–8/¼>m⋞/=î£éf¾<à®éf&v{hF1ªûkúUì+ÿLJy`‚yÈÄêg3Ý|×'äúRÁ4p�Õoà íp��æ�‘·Ù¼eEBø¨ñŒ¨\›õ"ÏŸ®c}Pò¯ëýt¤Q^¢1¹Øª‚Úë8éJº’ÀúäF¡F.çnT©2ÿ�O‡ìC6ë~¢�}¯"hY)iËÑêÌ$vIÑ’~Wmæj)ZE`}ªT�#3{÷;4DÊå¡QÎ=§*PÌôOâÌNU,U¯ÖÑÝt[[U7v¢Ñ¨)‘¹Ku©†«ØÁám•Ö1�Õ¹·Ü Ý
�àO:ƒX0áTW™ÃI´í/>y\ðã;ð/ôÒJŸXÿP"Ì?yýÛØ
+¾ü=o¢‰ÈóÈíÏE€çå›%·>#y«ÔxöS žà‰