From 1cb2ddc5bb36b6879c1269f5d05ea9a4d78c1535 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:13:40 -0700 Subject: [PATCH] remove docs from monorepo --- .github/workflows/deploy-production.yml | 4 +- apps/dispatch-server/modules/chron.ts | 5 +- .../app/_data/fmsStatusDescription.ts | 12 +- apps/docs/.dockerignore | 2 - apps/docs/.gitignore | 18 - apps/docs/.vitepress/config.mts | 199 ------ apps/docs/.vitepress/theme/custom.css | 3 - apps/docs/.vitepress/theme/index.ts | 5 - apps/docs/Dockerfile | 32 - apps/docs/package.json | 21 - .../src/allgemein/bos-funk/Funkbeispiel.md | 106 --- .../src/allgemein/bos-funk/Funkverkehr.md | 168 ----- .../docs/src/allgemein/bos-funk/Grundlagen.md | 63 -- apps/docs/src/allgemein/bos-funk/OPTA.md | 88 --- apps/docs/src/allgemein/bos-funk/Status.md | 53 -- .../src/allgemein/bos-funk/assets/DMO.png | Bin 94107 -> 0 bytes .../src/allgemein/bos-funk/assets/TMO.png | Bin 84379 -> 0 bytes .../assets/VAR_NOTAM_neue Stichworte.pdf | Bin 120979 -> 0 bytes .../allgemein/bos-funk/assets/broadcast.svg | 1 - .../allgemein/bos-funk/assets/helicopter.svg | 1 - apps/docs/src/allgemein/streaming.md | 30 - .../var-systeme/hub/how-to-discord.md | 5 - .../leitstelle/assets/alarmierung.png | Bin 585813 -> 0 bytes .../leitstelle/assets/alarmierung_save.png | Bin 10303 -> 0 bytes .../var-systeme/leitstelle/assets/context.png | Bin 70093 -> 0 bytes .../leitstelle/assets/dispatched.png | Bin 56016 -> 0 bytes .../var-systeme/leitstelle/assets/dme.png | Bin 262291 -> 0 bytes .../var-systeme/leitstelle/assets/draft.png | Bin 70492 -> 0 bytes .../leitstelle/assets/left_actions.png | Bin 130078 -> 0 bytes .../var-systeme/leitstelle/assets/mrt.png | Bin 235646 -> 0 bytes .../var-systeme/leitstelle/disponent.md | 54 -- .../allgemein/var-systeme/leitstelle/pilot.md | 25 - .../src/allgemein/var-systeme/v2-changes.md | 16 - apps/docs/src/allgemein/vatsim/prefile.md | 43 -- .../src/allgemein/vatsim/registrierung.md | 72 -- .../docs/src/disponentenbereich/Stichworte.md | 641 ------------------ .../src/disponentenbereich/disposition.md | 76 --- .../disponentenbereich/how-to-disponent.md | 19 - apps/docs/src/faq.md | 82 --- apps/docs/src/index.md | 31 - apps/docs/src/pilotenbereich/Endurance.md | 32 - .../src/pilotenbereich/Hubschraubertypen.md | 63 -- .../src/pilotenbereich/Luftraumstruktur.md | 326 --------- apps/docs/src/pilotenbereich/Meteorologie.md | 327 --------- apps/docs/src/pilotenbereich/Navigation.md | 41 -- .../src/pilotenbereich/Standardplatzrunde.md | 30 - apps/docs/src/pilotenbereich/Steuerorgane.md | 33 - .../src/pilotenbereich/app-alarmierung.md | 60 -- .../assets/Airspaces/EDDG_LR.jpg | Bin 330989 -> 0 bytes .../assets/Airspaces/EDDH_C.jpg | Bin 218855 -> 0 bytes .../assets/Airspaces/EDDH_LR.jpg | Bin 793321 -> 0 bytes .../pilotenbereich/assets/Airspaces/LR_DE.jpg | Bin 1497555 -> 0 bytes .../assets/Airspaces/LR_Ueberblick.jpg | Bin 161129 -> 0 bytes .../pilotenbereich/assets/Airspaces/SH.jpg | Bin 202490 -> 0 bytes .../assets/Airspaces/SH_DCTR.jpg | Bin 208730 -> 0 bytes .../assets/Airspaces/SH_EDD.jpg | Bin 76134 -> 0 bytes .../assets/Airspaces/SH_EDR.jpg | Bin 56756 -> 0 bytes .../assets/Airspaces/stepdown.jpg | Bin 23454 -> 0 bytes .../pilotenbereich/assets/Bild1_Alarm_App.jpg | Bin 68047 -> 0 bytes .../pilotenbereich/assets/Bild2_Alarm_App.jpg | Bin 45275 -> 0 bytes .../pilotenbereich/assets/Bild3_Alarm_App.jpg | Bin 48013 -> 0 bytes .../pilotenbereich/assets/Bild4_Alarm_App.jpg | Bin 37560 -> 0 bytes .../pilotenbereich/assets/Bild5_Alarm_App.jpg | Bin 61094 -> 0 bytes .../src/pilotenbereich/assets/PSD/WCA.xcf | Bin 1962083 -> 0 bytes .../assets/PSD/windpfeil_nowind.psd | Bin 162356 -> 0 bytes .../assets/PSD/windpfeil_wind.psd | Bin 162356 -> 0 bytes .../src/pilotenbereich/assets/Rotorkopf.jpg | Bin 173820 -> 0 bytes .../pilotenbereich/assets/VAR_H135_procs.pdf | Bin 102448 -> 0 bytes apps/docs/src/pilotenbereich/assets/WCA.png | Bin 650653 -> 0 bytes .../pilotenbereich/assets/collective_quad.jpg | Bin 207796 -> 0 bytes .../src/pilotenbereich/assets/cyclic_quad.jpg | Bin 229974 -> 0 bytes .../pilotenbereich/assets/ntfy_settings.jpg | Bin 78954 -> 0 bytes .../src/pilotenbereich/assets/pedals_quad.jpg | Bin 158063 -> 0 bytes .../pilotenbereich/assets/windpfeil_10kt.png | Bin 4006 -> 0 bytes .../pilotenbereich/assets/windpfeil_15kt.png | Bin 4077 -> 0 bytes .../pilotenbereich/assets/windpfeil_50kt.png | Bin 3915 -> 0 bytes .../pilotenbereich/assets/windpfeil_5kt.png | Bin 3894 -> 0 bytes .../assets/windpfeil_nowind.png | Bin 5838 -> 0 bytes apps/docs/src/pilotenbereich/ec-135.md | 6 - apps/docs/src/pilotenbereich/how-to-pilot.md | 27 - .../pilotenbereich/hpg-h145/Powering-Down.md | 21 - .../src/pilotenbereich/hpg-h145/Start-Up.md | 83 --- apps/docs/src/pilotenbereich/hpg-h145/info.md | 9 - .../hpg-h145/r-e-integration/Einrichtung.md | 53 -- .../r-e-integration/Fehlerbehebung.md | 15 - .../r-e-integration/Voraussetzungen.md | 11 - .../assets/re_client_settings.jpg | Bin 35449 -> 0 bytes .../r-e-integration/assets/setup-carls.jpg | Bin 148490 -> 0 bytes .../assets/setup-client-hpg.jpg | Bin 38685 -> 0 bytes .../r-e-integration/assets/setup-home-mp.jpg | Bin 144636 -> 0 bytes .../r-e-integration/assets/setup-home-sp.jpg | Bin 128300 -> 0 bytes .../r-e-integration/assets/setup-script-0.jpg | Bin 219768 -> 0 bytes .../r-e-integration/assets/setup-script-1.jpg | Bin 110782 -> 0 bytes .../r-e-integration/assets/setup-script-2.jpg | Bin 89001 -> 0 bytes .../r-e-integration/assets/setup-script-3.jpg | Bin 79050 -> 0 bytes .../luftrettung/aussenlandung.md | 98 --- .../luftrettung/crew/hems-tc.md | 50 -- .../luftrettung/crew/notarzt.md | 23 - .../pilotenbereich/luftrettung/landeplatz.md | 39 -- .../luftrettung/military/Einführung.md | 68 -- .../luftrettung/military/SOP.md | 139 ---- apps/docs/src/public/var_logo.png | Bin 430263 -> 0 bytes docker-compose.prod.yml | 15 - docker-compose.staging.yml | 14 - .../migrations/20250714174333_/migration.sql | 1 + .../database/prisma/schema/positionLog.prisma | 1 + 106 files changed, 13 insertions(+), 3447 deletions(-) delete mode 100644 apps/docs/.dockerignore delete mode 100644 apps/docs/.gitignore delete mode 100644 apps/docs/.vitepress/config.mts delete mode 100644 apps/docs/.vitepress/theme/custom.css delete mode 100644 apps/docs/.vitepress/theme/index.ts delete mode 100644 apps/docs/Dockerfile delete mode 100644 apps/docs/package.json delete mode 100644 apps/docs/src/allgemein/bos-funk/Funkbeispiel.md delete mode 100644 apps/docs/src/allgemein/bos-funk/Funkverkehr.md delete mode 100644 apps/docs/src/allgemein/bos-funk/Grundlagen.md delete mode 100644 apps/docs/src/allgemein/bos-funk/OPTA.md delete mode 100644 apps/docs/src/allgemein/bos-funk/Status.md delete mode 100644 apps/docs/src/allgemein/bos-funk/assets/DMO.png delete mode 100644 apps/docs/src/allgemein/bos-funk/assets/TMO.png delete mode 100644 apps/docs/src/allgemein/bos-funk/assets/VAR_NOTAM_neue Stichworte.pdf delete mode 100644 apps/docs/src/allgemein/bos-funk/assets/broadcast.svg delete mode 100644 apps/docs/src/allgemein/bos-funk/assets/helicopter.svg delete mode 100644 apps/docs/src/allgemein/streaming.md delete mode 100644 apps/docs/src/allgemein/var-systeme/hub/how-to-discord.md delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/alarmierung.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/alarmierung_save.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/context.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/dispatched.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/dme.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/draft.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/left_actions.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/assets/mrt.png delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/disponent.md delete mode 100644 apps/docs/src/allgemein/var-systeme/leitstelle/pilot.md delete mode 100644 apps/docs/src/allgemein/var-systeme/v2-changes.md delete mode 100644 apps/docs/src/allgemein/vatsim/prefile.md delete mode 100644 apps/docs/src/allgemein/vatsim/registrierung.md delete mode 100644 apps/docs/src/disponentenbereich/Stichworte.md delete mode 100644 apps/docs/src/disponentenbereich/disposition.md delete mode 100644 apps/docs/src/disponentenbereich/how-to-disponent.md delete mode 100644 apps/docs/src/faq.md delete mode 100644 apps/docs/src/index.md delete mode 100644 apps/docs/src/pilotenbereich/Endurance.md delete mode 100644 apps/docs/src/pilotenbereich/Hubschraubertypen.md delete mode 100644 apps/docs/src/pilotenbereich/Luftraumstruktur.md delete mode 100644 apps/docs/src/pilotenbereich/Meteorologie.md delete mode 100644 apps/docs/src/pilotenbereich/Navigation.md delete mode 100644 apps/docs/src/pilotenbereich/Standardplatzrunde.md delete mode 100644 apps/docs/src/pilotenbereich/Steuerorgane.md delete mode 100644 apps/docs/src/pilotenbereich/app-alarmierung.md delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/EDDG_LR.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/EDDH_C.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/EDDH_LR.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/LR_DE.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/LR_Ueberblick.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/SH.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/SH_DCTR.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/SH_EDD.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/SH_EDR.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Airspaces/stepdown.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Bild1_Alarm_App.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Bild2_Alarm_App.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Bild3_Alarm_App.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Bild4_Alarm_App.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/Bild5_Alarm_App.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/PSD/WCA.xcf delete mode 100644 apps/docs/src/pilotenbereich/assets/PSD/windpfeil_nowind.psd delete mode 100644 apps/docs/src/pilotenbereich/assets/PSD/windpfeil_wind.psd delete mode 100644 apps/docs/src/pilotenbereich/assets/Rotorkopf.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/VAR_H135_procs.pdf delete mode 100644 apps/docs/src/pilotenbereich/assets/WCA.png delete mode 100644 apps/docs/src/pilotenbereich/assets/collective_quad.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/cyclic_quad.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/ntfy_settings.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/pedals_quad.jpg delete mode 100644 apps/docs/src/pilotenbereich/assets/windpfeil_10kt.png delete mode 100644 apps/docs/src/pilotenbereich/assets/windpfeil_15kt.png delete mode 100644 apps/docs/src/pilotenbereich/assets/windpfeil_50kt.png delete mode 100644 apps/docs/src/pilotenbereich/assets/windpfeil_5kt.png delete mode 100644 apps/docs/src/pilotenbereich/assets/windpfeil_nowind.png delete mode 100644 apps/docs/src/pilotenbereich/ec-135.md delete mode 100644 apps/docs/src/pilotenbereich/how-to-pilot.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/Powering-Down.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/Start-Up.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/info.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/Einrichtung.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/Fehlerbehebung.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/Voraussetzungen.md delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/re_client_settings.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-carls.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-client-hpg.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-home-mp.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-home-sp.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-script-0.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-script-1.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-script-2.jpg delete mode 100644 apps/docs/src/pilotenbereich/hpg-h145/r-e-integration/assets/setup-script-3.jpg delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/aussenlandung.md delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/crew/hems-tc.md delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/crew/notarzt.md delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/landeplatz.md delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/military/Einführung.md delete mode 100644 apps/docs/src/pilotenbereich/luftrettung/military/SOP.md delete mode 100644 apps/docs/src/public/var_logo.png diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml index b513f944..ea841a8e 100644 --- a/.github/workflows/deploy-production.yml +++ b/.github/workflows/deploy-production.yml @@ -15,7 +15,7 @@ jobs: - name: Pull latest code uses: appleboy/ssh-action@v1 with: - host: ${{ vars.STAGING_HOST }} + host: ${{ vars.PRODUCTION_HOST }} username: ${{ secrets.SSH_USERNAME }} password: ${{ secrets.SSH_PASSWORD }} port: 22 @@ -26,7 +26,7 @@ jobs: - name: Deploy migration to Database uses: appleboy/ssh-action@v1 with: - host: ${{ vars.STAGING_HOST }} + host: ${{ vars.PRODUCTION_HOST }} username: ${{ secrets.SSH_USERNAME }} password: ${{ secrets.SSH_PASSWORD }} port: 22 diff --git a/apps/dispatch-server/modules/chron.ts b/apps/dispatch-server/modules/chron.ts index f703c9d0..43cbe6dc 100644 --- a/apps/dispatch-server/modules/chron.ts +++ b/apps/dispatch-server/modules/chron.ts @@ -22,13 +22,14 @@ const removeClosedMissions = async () => { }); if ( - !aircraftsInMission || - !aircraftsInMission.some((a) => ["1", "2", "6"].includes(a.fmsStatus)) + aircraftsInMission.length > 0 && // Check if any aircraft is still active + !aircraftsInMission.some((a) => ["1", "2", "6"].includes(a.fmsStatus)) // Check if any aircraft is in a status that indicates it's not inactive ) return; const now = new Date(); if (!lastAlertTime) return; + // change State to closed if last alert was more than 180 minutes ago if (now.getTime() - lastAlertTime.getTime() < 30 * 60 * 1000) return; const log: MissionLog = { diff --git a/apps/dispatch/app/_data/fmsStatusDescription.ts b/apps/dispatch/app/_data/fmsStatusDescription.ts index 75b77e28..90f6ad41 100644 --- a/apps/dispatch/app/_data/fmsStatusDescription.ts +++ b/apps/dispatch/app/_data/fmsStatusDescription.ts @@ -1,14 +1,14 @@ export const fmsStatusDescription: { [key: string]: string } = { NaN: "Keine Daten", "0": "Prio. Sprechwunsch", - "1": "Frei auf Funk", - "2": "Einsatzbereit am LRZ", - "3": "Auf dem Weg", - "4": "Am Einsatzort", + "1": "Einsatzbereit über Funk", + "2": "Einsatzbereit auf Wache", + "3": "Einsatzübernahme", + "4": "Einsatzort an", "5": "Sprechwunsch", "6": "Nicht einsatzbereit", - "7": "Patient aufgenommen", - "8": "Am Transportziel", + "7": "Einsatzgebunden", + "8": "Bedingt verfügbar", "9": "Fremdanmeldung", E: "Indent/Abbruch/Einsatzbefehl abgebrochen", C: "Anmelden zur Übernahme des Einsatzes", diff --git a/apps/docs/.dockerignore b/apps/docs/.dockerignore deleted file mode 100644 index 76add878..00000000 --- a/apps/docs/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore deleted file mode 100644 index 74434ed4..00000000 --- a/apps/docs/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -/coverage -/src/client/shared.ts -/src/node/shared.ts -*.log -*.tgz -.DS_Store -.idea -.temp -.vite_opt_cache -.vscode -dist -cache -temp -examples-temp -node_modules -pnpm-global -TODOs.md -*.timestamp-*.mjs \ No newline at end of file diff --git a/apps/docs/.vitepress/config.mts b/apps/docs/.vitepress/config.mts deleted file mode 100644 index 57d2a2c0..00000000 --- a/apps/docs/.vitepress/config.mts +++ /dev/null @@ -1,199 +0,0 @@ -import { defineConfig } from "vitepress"; - -// https://vitepress.dev/reference/site-config -export default defineConfig({ - title: "VAR Knowledgebase", - description: "How To's und mehr zu Virtual Air Rescue", - srcDir: "src", - themeConfig: { - logo: "/var_logo.png", - search: { - provider: "local", - }, - lastUpdated: { - text: "Letzte Änderung", - formatOptions: { - year: "numeric", - month: "2-digit", - day: "2-digit", - hour: "2-digit", - minute: "2-digit", - }, - }, - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: "Startseite", link: "/" }, - { - text: "How-To's", - items: [ - { text: "Wie werde ich Pilot?", link: "/pilotenbereich/how-to-pilot" }, - { text: "Wie werde ich Disponent?", link: "/disponentenbereich/how-to-disponent" }, - { - text: "Wie verbinde ich meinen Discord Account?", - link: "/allgemein/var-systeme/hub/how-to-discord", - }, - ], - }, - { text: "FAQ", link: "/faq" }, - ], - - footer: { - message: - "Impressum | Datenschutzerklärung", - }, - - sidebar: [ - { - text: "Pilotenbereich", - items: [ - { text: "How-To Pilot", link: "/pilotenbereich/how-to-pilot" }, - { - text: "HPG H145", - collapsed: false, - items: [ - { text: "Allgemeine Informationen", link: "/pilotenbereich/hpg-h145/info" }, - { text: "Start-Up", link: "/pilotenbereich/hpg-h145/Start-Up" }, - { text: "Powering Down", link: "/pilotenbereich/hpg-h145/Powering-Down" }, - { - text: "R&E Integration", - collapsed: true, - items: [ - { - text: "Voraussetzungen", - link: "/pilotenbereich/hpg-h145/r-e-integration/Voraussetzungen", - }, - { - text: "Einrichtung", - link: "/pilotenbereich/hpg-h145/r-e-integration/Einrichtung", - }, - { - text: "Fehlerbehebung", - link: "/pilotenbereich/hpg-h145/r-e-integration/Fehlerbehebung", - }, - ], - }, - ], - }, - { text: "EC135 Bedienung", link: "/pilotenbereich/ec-135" }, - { text: "Hubschrauber Steuerorgane", link: "/pilotenbereich/Steuerorgane" }, - { text: "Luftraumstruktur", link: "/pilotenbereich/Luftraumstruktur" }, - { text: "Meteorologie", link: "/pilotenbereich/Meteorologie" }, - { text: "Navigation", link: "/pilotenbereich/Navigation" }, - { text: "Standardplatzrunde", link: "/pilotenbereich/Standardplatzrunde" }, - { text: "Reichweite / Endurance", link: "/pilotenbereich/Endurance" }, - { text: "Hubschraubertypen", link: "/pilotenbereich/Hubschraubertypen" }, - { - text: "Luftrettung", - collapsed: true, - items: [ - { text: "Außenlandung", link: "/pilotenbereich/luftrettung/aussenlandung" }, - { text: "Landeplätze- und Stellen", link: "/pilotenbereich/luftrettung/landeplatz" }, - { - text: "Crew", - collapsed: true, - items: [ - { text: "HEMS-TC", link: "/pilotenbereich/luftrettung/crew/hems-tc" }, - { text: "Notarzt", link: "/pilotenbereich/luftrettung/crew/notarzt" }, - ], - }, - { - text: "Militärfliegerei (SAR)", - collapsed: true, - items: [ - { text: "Einführung", link: "/pilotenbereich/luftrettung/military/Einführung" }, - { text: "SOP", link: "/pilotenbereich/luftrettung/military/SOP" }, - ], - }, - ], - }, - { text: "Mobile App-Alarmierung", link: "/pilotenbereich/app-alarmierung" }, - ], - }, - { - text: "Disponentenbereich", - items: [ - { text: "How-To Disponent", link: "/disponentenbereich/how-to-disponent" }, - { text: "Disposition", link: "/disponentenbereich/disposition" }, - { text: "Stichworte", link: "/disponentenbereich/Stichworte" }, - ], - }, - { - text: "Allgemein", - items: [ - { - text: "VAR Systeme", - collapsed: false, - items: [ - { text: "Änderungen in der V2", link: "/allgemein/var-systeme/v2-changes" }, - { - text: "HUB", - collapsed: true, - items: [ - { text: "How-To Discord", link: "/allgemein/var-systeme/hub/how-to-discord" }, - ], - }, - { - text: "Leitstelle", - collapsed: true, - items: [ - { text: "Piloten", link: "/allgemein/var-systeme/leitstelle/pilot" }, - { text: "Disponenten", link: "/allgemein/var-systeme/leitstelle/disponent" }, - ], - }, - ], - }, - - { - text: "BOS Funk", - collapsed: true, - items: [ - { text: "Grundlagen", link: "/allgemein/bos-funk/Grundlagen" }, - { text: "Funkverkehr", link: "/allgemein/bos-funk/Funkverkehr" }, - { text: "OPTA", link: "/allgemein/bos-funk/OPTA" }, - { text: "Status", link: "/allgemein/bos-funk/Status" }, - { text: "Funkbeispiel", link: "/allgemein/bos-funk/Funkbeispiel" }, - ], - }, - - { - text: "VATSIM", - collapsed: true, - items: [ - { text: "Registrierung", link: "/allgemein/vatsim/registrierung" }, - { text: "Prefile", link: "/allgemein/vatsim/prefile" }, - ], - }, - { text: "Live-Streaming", link: "/allgemein/streaming" }, - ], - }, - { - text: "", - items: [ - { text: "Impressum", link: "https://virtualairrescue.com/impressum/" }, - { text: "Datenschutzerklärung", link: "https://virtualairrescue.com/datenschutz/" }, - { text: "Mitwirken", link: "/" }, - ], - }, - ], - - socialLinks: [{ icon: "github", link: "https://github.com/VAR-Virtual-Air-Rescue/docs" }], - - docFooter: { - prev: "Vorherige Seite", - next: "Nächste Seite", - }, - - outline: { - label: "Inhalt", - }, - }, - markdown: { - theme: { - light: "catppuccin-latte", - dark: "catppuccin-mocha", - }, - image: { - lazyLoading: true, - }, - }, -}); diff --git a/apps/docs/.vitepress/theme/custom.css b/apps/docs/.vitepress/theme/custom.css deleted file mode 100644 index ef024700..00000000 --- a/apps/docs/.vitepress/theme/custom.css +++ /dev/null @@ -1,3 +0,0 @@ -.VPHero .image-src { - max-width: 50%; -} diff --git a/apps/docs/.vitepress/theme/index.ts b/apps/docs/.vitepress/theme/index.ts deleted file mode 100644 index 51e06af2..00000000 --- a/apps/docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import DefaultTheme from "vitepress/theme"; -import "@catppuccin/vitepress/theme/mocha/lavender.css"; -import "./custom.css"; - -export default DefaultTheme; diff --git a/apps/docs/Dockerfile b/apps/docs/Dockerfile deleted file mode 100644 index c89b3760..00000000 --- a/apps/docs/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -# --- Build stage --- -FROM node:24-alpine3.21 AS builder -# Consider using the latest patch version for security updates -RUN apk update && apk upgrade - -# Install pnpm -RUN corepack enable && corepack prepare pnpm@latest --activate -RUN apk add --no-cache git - -# Set workdir -WORKDIR /app - -# Copy project files -COPY ./apps/docs . - -# Install dependencies -RUN pnpm install - -# Build VitePress site -RUN pnpm build - -# --- Serve stage --- -FROM nginx:alpine - -# Copy built site to nginx public folder -COPY --from=builder /app/.vitepress/dist /usr/share/nginx/html - -# Expose port -EXPOSE 80 - -# Start nginx -CMD ["nginx", "-g", "daemon off;"] diff --git a/apps/docs/package.json b/apps/docs/package.json deleted file mode 100644 index e40b2c09..00000000 --- a/apps/docs/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "docs", - "version": "1.0.0", - "description": "", - "scripts": { - "dev": "vitepress dev --port 3006", - "docs:dev": "vitepress dev --port 3006", - "build": "vitepress build", - "docs:preview": "vitepress preview" - }, - "keywords": [], - "author": "", - "license": "ISC", - "packageManager": "pnpm@10.11.1", - "devDependencies": { - "vitepress": "^1.6.3" - }, - "dependencies": { - "@catppuccin/vitepress": "^0.1.2" - } -} diff --git a/apps/docs/src/allgemein/bos-funk/Funkbeispiel.md b/apps/docs/src/allgemein/bos-funk/Funkbeispiel.md deleted file mode 100644 index c2d1b044..00000000 --- a/apps/docs/src/allgemein/bos-funk/Funkbeispiel.md +++ /dev/null @@ -1,106 +0,0 @@ -# Funkbeispiel - -## Primäreinsatz - -Zur Orientierung haben wir hier ein Funkbeispiel für einen Primäreinsatz erstellt, welches alle wichtigen Einsatzabschnitte abdeckt und einen Realeinsatz so gut wie möglich abbilden soll. - -::: warning 10:00 Uhr ➜ Die Leistelle alarmiert das Rettungsmittel -Innerhalb der nächsten drei Minuten sendet das Luftrettungsmittel Status 3 zur Leitstelle, um wortlos die Einsatzübernahme zu quittieren. -::: - -::: warning CHX 69 ➜ 10:02 Uhr ➜ Status 3 -::: - -Der kommende Einsatzabschnitt kann theoretisch komplett ohne Kommunikation verlaufen, hier hat die Leitstelle aber noch einige Informationen für den Hubschrauber. - -::: info Leitstelle ➜ 10:05 Uhr -"Christoph 69 von Leitstelle VAR, kommen." - -
Die Leitstelle baut das Gespräch mit dem Luftrettungsmittel auf.
-::: - -::: warning CHX69 ➜ 10:05 Uhr -"Hier Christoph 69, kommen." -::: - -::: info Leitstelle ➜ 10:05 Uhr - -"Einsatz in der VAR-Straße 187 ist eine Nachforderung vom RTW, Patient -bewusstlos, kommen." - -::: - -::: warning CHX69 ➜ 10:06 Uhr -"Einsatz als Nachforderung vom RTW, verstanden, kommen." -::: - -::: info Leitstelle ➜ 10:06 Uhr -"Richtig verstanden, Ende." -::: - -::: warning CHX69 ➜ 10:11 Uhr ➜ Status 4 -::: - -Der Hubschrauber ist am Einsatzort eingetroffen und das ärztliche Personal versorgt den Patienten. - -Nach der Versorgung verständigt sich der Notarzt mit dem aufnehmenden Klinikum und meldet den Patienten an. -Das Luftrettungsmittel verlegt den Patienten im kommenden Einsatzabschnitt. Um der Leitstelle diese Information in Hinblick auf dessen Verfügbarkeit mitzuteilen, versucht die Besatzung ein Gespräch mittels Status 5 - dem klassischen Sprechwunsch - aufzubauen. - -::: warning CHX69 ➜ 10:35 Uhr ➜ Status 5 -::: - -Entweder, die Leistelle schickt den FMS-Status J, die Sprechaufforderung: - -:::info Leitstelle ➜ 10:36 Uhr ➜ Status J -::: - -::: warning CHX69 ➜ 10:36 Uhr - -"Hier Christoph 69, Patient aufgenommen, wir fliegen ins Capitol-Klinikum -Finsdorf." - -::: - -oder die Leitstelle baut den Ruf verbal auf: - -:::info Leitstelle ➜ 10:36 Uhr -"Christoph 69 von Leitstelle VAR, kommen." -::: - -::: warning CHX69 ➜ 10:36 Uhr - -"Hier Christoph 69, Patient aufgenommen, wir fliegen ins Capitol-Klinikum -Finsdorf, kommen." - -::: - -:::info Leitstelle ➜ 10:36 Uhr -"Verstanden, Ende." - -- Die Leistelle kann als übergeordneter Gesprächsteilnehmer den Ruf - wie in - diesem Fall - auch vorzeitig beenden. -
-::: - -::: warning CHX69 ➜ 10:37 Uhr ➜ Status 7 -::: - -Der Hubschrauber macht sich auf den Weg nach Finsdorf. Dort angekommen setzt er den Status 8. - -**Eine Kommunikation mit der Leitstelle in der Zwischenzeit ist in der Regel nicht erforderlich.** - -Am Zielort angekommen teilt die Besatzung der Leitstelle mittels Status 8 mit, dass der Patient zum einen in das Klinikum verbracht wurde und das Luftrettungsmittel zum anderen auf Nachfrage bedingt für einen kommenden Einsatz abkömmlich ist. - -::: warning CHX69 ➜ 10:49 Uhr ➜ Status 8 -::: - -::: warning CHX69 ➜ 11:05 Uhr ➜ Status 1 -Der Hubschrauber ist wieder einsatzbereit und fliegt zurück zum -Luftrettungszentrum. -::: - -::: warning CHX69 ➜ 11:18 Uhr ➜ Status 2 -::: - -Ab hier geht es dann wieder [von vorne los.](#primareinsatz) diff --git a/apps/docs/src/allgemein/bos-funk/Funkverkehr.md b/apps/docs/src/allgemein/bos-funk/Funkverkehr.md deleted file mode 100644 index deef547b..00000000 --- a/apps/docs/src/allgemein/bos-funk/Funkverkehr.md +++ /dev/null @@ -1,168 +0,0 @@ -# Funkverkehr - -Damit im Einsatzfunk keine Misverständnisse entstehen, gibt es im BOS-Funk eine gewissen "Funkdisziplin" . Neben bestimmten Betriebswörtern ist die korrekte und deutliche Aussprache, das Vermeiden von Floskeln oder ungeläufigen Abkürzungen und vieles mehr sehr wichtig. -Im folgenden Artikel ist alles dazu zusammengefasst. - -Achtet unbedingt auf unsere [Dos und Don'ts](#dos-and-donts) am Ende dieses Artikels. - -## Die Basics - -Ein Funkspruch sollte immer so kurz wie möglich und nur so lang wie nötig sein. -Um lange Denkpausen wärhend des Funkspruchs zu verhindern, kann man sich an den einfachen Merkspruch **Denken, Drücken, Sprechen** halten. In jeder anderen Reihenfolge entstehen keine guten Funksprüche. - -:::danger Zu vermeiden ist das Nutzen von: - -- Eigennamen (sofern nicht wichtig) -- Höflichkeitsformen ("Danke", "Bitte", etc.) -- ungeläufigen Abkürzungen - ::: - -:::tip Unbedingt genutzt werden sollte: - -- die Anrede mit "Sie" -- die unverwechselbare Aussprache von Zahlen (einzeln und "zwo" statt "zwei") -- ggf. die [deutsche postalische Buchstabiertafel](https://de.wikipedia.org/wiki/Buchstabiertafel#Deutscher_Sprachraum) ("A wie Anton", "B wie Berta" etc.) - ::: - -Natürlich ist im alltäglichen Gebrauch eine starke Abweichung zu erkennen - aber nur wer weiß, wie's richtig geht, kann sich eine Abweichung erlauben. Gerade in [DMO](/allgemein/bos-funk/Grundlagen)-Rufgruppen ist ein "Standardfunkverkehr" nur selten gewährleistet. Bei größeren Einsatzlagen wird eine korrekte und unmisverständliche Kommunikation jedoch wichtig. - -## Gesprächsaufbau - -Der **Gesprächspartner** (dessen OPTA) wird zuerst gerufen, dann folgen das Bindewort "von" (nicht "für"!), die eigene OPTA und die Sprechaufforderung "kommen". - -::: tip CHX69 ➜ -"Leitstelle VAR von Christoph 69 - kommen" -::: - -Auch kann ein kommender Gesprächsinhalt als Vorbereitung angefügt werden. - -::: tip CHX69 ➜ -"Leitstelle VAR von Christoph 69 - mit Nachforderung - kommen" -::: - -Das Drücken des [Status](/allgemein/bos-funk/Status) 5 kommt einem wortlosen Gesprächsaufbau gleich. - -## Antwort auf einen Gesprächsaufbau - -Die Antwort auf einen Gesprächsaufbau beginnt immer mit dem Wort "**Hier**", gefolgt von der **eigenen OPTA** und der Sprechaufforderung "**kommen**". - -::: info Leitstelle ➜ -"Hier Leitstelle VAR - kommen" -::: - -Die Formulierungen "Hört", "Hört Sie" und ähnliche sind in der Realität nicht erwünscht. - -Auf einen Sprechwunsch antwortet man folgendermaßen - -::: info Leitstelle ➜ -"Chistoph 69 - hier Leitstelle VAR - kommen." -::: - -Hier ist es auch nicht unüblich, dass von der Leistelle nur die OPTA des rufenden Teilnehmers genannt wird. - -:::info -Einige Leitstellen führen als Namen nicht das Wort "Leitstelle" sondern "Florian". "Florian Berlin" als Rettungsleitstelle in Berlin wird also nicht "Leitstelle Florian Berlin", sondern "Florian Berlin" gerufen. -::: - -## Führen eines Gesprächs - -Nach den vorherigen beiden Schritten beginnt das eigentliche Funkgespräch. Jede Nachricht wird mit dem Betriebswort "**kommen**" beendet, beide OPTA (also die eigene und die des Gesprächspartners) werden nicht mehr genannt. - -::: tip CHX 69 ➜ -"Starten in 2 - ("zwo") -Minuten - kommen" -::: - -Sofern die Information aufgenommen wurde, ist diese vom Empfänger mit "**Verstanden**" und der Sprechaufforderung zu bestätigen. - -::: info Leitstelle ➜ -"Verstanden - kommen" -::: - -Komplexe Informationen sollten immer wiederholt werden. -Beispiele hierfür sind: - -- Koordinaten -- Anzahlen -- Zeiten - -## Beenden eines Gesprächs - -Ist der Informationsaustausch beendet, muss auch das Gespräch beendet werden. - -::: tip CHX 69 ➜ -"Vertanden - Ende" -::: - -Standardgemäß beendet **immer** der eröffnende Gesprächspartner das Gespräch. -Wird das Gespräch über einen [Sprechwunsch](Status) eröffnet, gilt dieser als Gesprächsaufbau. - -Außerhalb dieser Regel kann die Leitstelle ein Gespräch jederzeit beenden. - -## Betriebswörter - -| **Verwendung** | **Betriebsworte** | -| -------------------------------------------------------------------------- | ------------------------------------ | -| Berichtigung eines Sprech- oder Textfehlers | Ich berichtige | -| Ankündigung einer Wiederholung | Ich wiederhole | -| Aufforderung, eine Meldung zu wiederholen | Wiederholen Sie | -| Aufforderung, eine Meldung eingegrenzt zu wiederholen | Wiederholen Sie ab / bis / von...bis | -| Ankündigung, dass ein Wort buchstabiert wird | Ich buchstabiere | -| Aufforderung, ein Wort zu buchstabieren | Buchstabieren Sie | -| Ankündigung einer Frage | Frage | -| Aufforderung zum Warten | Warten | -| Nicht aufnahmebereiter Gesprächspartner ruft zurück, sofern aufnahmebereit | Ich rufe wieder | - -## Dos and Don'ts - -#### Unklarer Rufaufbau - -> **Don't:** "Christoph 69 für Leitstelle VAR, kommen" - -Abgesehen davon, dass "für" ein kompliziertes Wort in diesem Zusammenhang ist, ist vielen nicht bewusst, welche Station in diesem Anruf zuerst und welche danach gerufen wird. -In diesem Beispiel würde die Leistelle also den Christoph 69 rufen. -Besser in dieser Situation: **"von"**. Ein unmissverständliches Betriebswort, welches eindeutig beschreibt, welche Station **von** welcher gerufen wird. - -> **Do:** "Christoph 69 von Leistelle VAR, kommen" - -#### Erst Gedrückt, dann Gesprochen - -> **Don't:** "Ähm, Christoph Ähm 69, wir ähm, fliegen jetzt in - Moment - die Uniklinik in - Moment - Erfurt mit Ankunft in ähm 5 Minuten, kommen" - -Beachtet die ricthige Reihenfolge von "Denken, Drücken, Sprechen"! - -> **Do:** "Christoph 69, Transportziel Uniklinik mit Ankunft in 5 Minuten, kommen" - -#### Falscher Status/Notrufmissbrauch - -> **Don't:** Status 0 senden, um mitzuteilen, dass sich der Start um eine Minute verzögert. - -Der dringende Sprechwunsch ist dazu da, um den eigenen Sprechwunsch vor anderen Sprechwünschen zu priorisieren. -Missbraucht weder den priorisierten Sprechwunsch, noch den Notruf. - -> **Do:** Status sinnig verwenden und vorher klären, ob die Information wirklich wichtig genug ist, um sie in einem Sprechwunsch mitzuteilen. - -#### Flugfunk mit BOS-Funk verwechseln - -> **Don't:** "Copy", "Understood", "Wilco" - -Bedarf wohl keiner weiteren Erklärung. - -> **Do:** "Verstanden" - -#### Den Sprechwunsch meiden - -> **Don't:** "Leitstelle von Christoph 69, kommen." - -Der Sprechwunsch-Status 5 ist _in der Regel_ vor einem verbalen Gesprächsaufbau zu verwenden. - -> **Do:** Status 5 drücken und auf ein "J" oder einen Gesprächsaufbau durch die Leistelle warten. - -#### Landemeldungen - -> **Don't:** "Christoph 69 zur Landung an der Einsatzstelle." - -Eine Landemeldung interessiert die Leitstelle in den seltensten Fällen. - -> **Do:** Nach der Landung Status 4 drücken. diff --git a/apps/docs/src/allgemein/bos-funk/Grundlagen.md b/apps/docs/src/allgemein/bos-funk/Grundlagen.md deleted file mode 100644 index 44377647..00000000 --- a/apps/docs/src/allgemein/bos-funk/Grundlagen.md +++ /dev/null @@ -1,63 +0,0 @@ -# BOS-Funk Grundlagen - -Die Kommunikation zwischen Pilot und Flugverkehrskontrolle beschränkt sich auf die fliegerischen Informationen; die Koordination der Einsätze erflogt jedoch über eine weitere Instanz: Die Leitstelle. -Die ist die Koordinatorin aller Einsätze in einem definierten Gebiet und sorgt dort für die effektive Bereitstellung von Rettungsmitteln. - -Deren Kommunikation läuft größtenteils über Funk ab, der sich jedoch maßgeblich vom Pilotenfunk unterscheidet - dem BOS-Funk. - -**BOS** steht für "Behörden und Organistationen mit Sicherheitsaufgaben", dazu zählen Feuerwehr, Rettungsdienst (inkl. Luftrettung), Polizei, aber auch das Technische Hilfswerk THW und viele andere. -Während in Deutschland lange der analoge UKW BOS-Funk verbreitet war, befasst sich dieser Artikel vorerst mit dem nach und nach einheitlichen digitalen TETRA-BOS Funk. - -Für den BOS-Funk in Deutschland verantwortlich ist die in 2007 gegründete [**Bundesanstalt für den Digitalfunk der Behörden und Organisationen mit Sicherheitsaufgaben**](https://www.bdbos.bund.de/DE/Home/home_node.html) - kurz BDBOS. -Sie gibt an, dass bereits 99,2 % der Fläche Deutschlands einsatzbereit für den Digitalfunk sind. - -## Funktion - -Digitalfunkgeräte der BOS in Deutschland werden mit einer sogenannten BSI-Sicherheitskarte ausgestattet. Sie ist ähnlich einer SIM-Karte und berechtigt das Funkgerät zum Zugriff auf das bereitgestellte Digitalfunknetz. -Diese Karte wird nur an berechtigte Teilnehmer ausgegeben und schützt somit vor einem (im Analogfunk verbreiteten) Abhören von Funkgesprächen. - -Der Funkverkehr findet im Kontrast zu "Frequenzen" im Luftverkehr oder "Kanälen" im Analogfunk in sogenannten "Rufgruppen" statt und wird digital abhörsicher verschlüsselt. - -## Betriebsarten - -Im TETRA-BOS Funk gibt es zwei sogenannte Betriebsarten - sie geben im groben an, wie das Empfänger-Endgerät erreicht wird. - -### DMO Betrieb - -**DMO** steht für **D**irect **M**ode **O**peration, also den _Direktbetrieb_. Vereinfacht gesehen kommuniziert ein Funkgerät mit anderen Endgeräten in der Umgebung, wobei sich Sender und Empfänger in einem bestimmten Radius befinden müssen - die Verbindung wird direkt (**direct**) zwischen den Funkgeräten aufgebaut. -Dadurch ist der DMO-Betrieb anfällig für bestimmte Störfaktoren wie abschirmende Metalle, Gebäude, Berge und Täler etc. -Er ist außerdem **reichweitenbegrenzt**. -So kann es passieren, dass man Teilnehmer in der aktuellen Rufgruppe auf Funksprüche antworten hören kann, welche man aufgrund der eigenen Reichweite selbst nicht hören konnte. - - - -Im Beispiel kann Funkgerät 2 an beide anderen Funkgeräte senden und Nachrichten von ihnen Empfangen. 1 und 3 können zwar auf beide Wege mit Funkgerät 2 kommunizieren, jedoch nicht miteinander, da die Entfernung zwischen ihnen zu groß ist. - -:::tip Eselsbrücke -**DMO** ist der **D**orf**mo**dus - kurze Reichweite, aber für eine lokale Einsatzkoordination komplett ausreichend. -::: - -### TMO Betrieb - -**TMO** steht für **T**runked **M**ode **O**peration, den sogenannten _Netzbetrieb_. -Hier wird eine Verbindung zwischen dem Funkgerät und einer der deutschlandweit verteilten TETRA-Antennen hergestellt, welche den Funkspruch innerhalb der Rufgruppe an weitere Antennen und final an die entsprechenden Empfänger "zustellt". So ist der TMO Betrieb weitesgehend reichweitenunbegrenzt, aber immer noch Abhängig von bekannten Störfaktoren und der TETRA-Netzabdeckung. -Ein Beispiel hier ist der klassische Leistellenfunk. Vor allem in großen Funkverkehrsbereichen ist die DMO-Reichweite selbst bei optimalen Bedingungen nicht ausreichend, um alle Teilnehmer zuverlässig zu erreichen. -In einer TMO Leitstellen-Rufgruppe wird die Reichweite erhöht und alle Teilnehmer im Funkverkehrsbereich können Gespräche mithöhren und an ihnen teilnehmen. - - - -Im Beispiel können alle drei Funkgeräte untereinander über eine erhöhte Reichweite kommunizieren. Dabei können auch mehrere TETRA-Masten zwischengeschaltet oder ein Direktruf zwischen zwei einzelnen Funkgeräten aufgebaut werden. - -## Sonstiges - -Mit Handfunkgeräten können auch sogenannte "Repeater" realisiert werden. Gesonderte Geräte werden taktisch platziert und wiederholen (engl. "to repeat") das Signal innerhalb einer DMO-Rufgruppe, um die Reichweite zu erhöhen oder innerhalb von Objekten eine bessere Abdeckung zu gewähleisten. - -Auch ist ein sogenannter "Gateway-Betrieb" möglich. Ein Handfunkgerät kommuniziert im DMO mit einem Fahrzeugfunkgerät, welches auf eine TMO-Rufgruppe eingestellt ist und den DMO- zu einem TMO-Ruf macht. - -Notrufe, die von einem Funkgerät ausgelöst wurden, haben in der Rufgruppe immer eine Sprechpriorität und unterbrechen bis zur Auflösung des Notrufs und nach einer bestimmten Zeit jeglichen anderen Funkverkehr. - -## Besondere Rufgruppen - -Um einen geordneten Einsatz- und Leitstellenfunk gewährleisten zu können, gibt es diverse Rufgruppen im DMO- und TMO-Betrieb. Diese sind meist spezifisch auf eine BOS ausgelegt, so gibt es etwa TMO- und DMO-Rufgruppen für den Rettungsdienst, die Feuerwehr oder die Polizei. Da die BSI-Sicherheitskarte bzw. der zuständige Administrator den Zugriff auf die jeweiligen Rufgruppen ggf. untersagt, existieren sogenannte **TBZ**-Rufgruppen. Sie dienen der **t**echnisch-**b**etrieblichen-**Z**usammenarbeit und kommen zum Einsatz, wenn bspw. ein Hubschrauber in Absprache mit der örtlichen Feuerwehr einen Landeplatz ausfindig macht, oder z.B. mit DLRG, Polizei, Feuerwehr vermisste Personen in Gewässern sucht. - -Außerdem verfügen die meisten Leitstellen über gesonderte und standardisierte Fremdrufgruppen, über die Fahrzeuge aus fremden Funkverkehrsbereichen Erstkontakt mit der jeweiligen Leistelle aufnehmen kann. diff --git a/apps/docs/src/allgemein/bos-funk/OPTA.md b/apps/docs/src/allgemein/bos-funk/OPTA.md deleted file mode 100644 index 56b565e0..00000000 --- a/apps/docs/src/allgemein/bos-funk/OPTA.md +++ /dev/null @@ -1,88 +0,0 @@ -# OPTA - -Die OPTA, oder lang: Die **Op**erativ-**T**ktische **A**dresse sorgt bei korrekter Nutzung für eine verwechslungsfreie Zuordnung von Funksprüchen zu genau einem Fahrzeug. Sie wird oft auch als "Funkkenner" bezeichnet, ist für jedes BOS-Fahrzeug einzigartig und setzt sich aus sechs Bestandteilen zusammen. - -:::danger Achtung -Wie so vieles im föderalistisch organisiertem Rettungsdienst unterscheiden sich OPTA von Bundesland zu Bundesland oder sogar von Landkreis zu Landkreis; hier wird eins der geläufigsten OPTA-Schemen erläutert. Gegebenenfalls wird der Artikel erweitert. -::: - -OPTA tangieren die Regelluftrettung direkt nur marginal, da Rettungshubschrauber die bundeseinheitliche OPTA **Christoph XX** tragen, wobei **XX** meist die standortspezifische Kennzahl des Hubschraubers ist. - -Um ein gewisses Grundverständnis von den Vorgängen im BOS-Funk zu erlangen, kann es dennoch hilfreich sein, sich mit dem Konzept OPTA vertraut zu machen. - -## Aufgbau einer OPTA - -Ein gutes Beispiel hierfür ist der [NEH Kessin](https://www.rth.info/stationen.db/station.php?id=90). -Dessen OPTA ist - -| **Kennwort** | **Funkverkehrskreis** | **Gemeindekennzahl** | **Teilkennzahl 1** | **Teilkennzahl 2** | **Teilkennzahl 3** | -| :----------: | :-------------------: | :------------------: | :----------------: | :----------------: | :----------------: | -| Rettung | Landkreis Rostock | 029 | 01 | 82 | 01 | - -#### Organisationskennwort - -Das vorangestellte Kennwort lässt auf die zugeordnete Hilfsorganisation schließen. -**Rettung** steht immer für private Hilfsorganisationen; hier die Ambulanz Millich. - -#### Funkverkehrskreis - -Das folgende Kennwort wird zur Identifikation eines Fahrzeugs außerhalb des eigenen Funkverkehrsbereichs genutzt. -Innerhalb dieses Bereichs wird es nicht mit genannt. - -#### Gemeindekennzahl - -Sie gibt den Herkunftsort des Fahrzeugs an. Im Beispiel steht "029" im Landkreis Rostock für die Gemeinde Dummerstorf. - -#### TKZ 1 - Standortkennzahl - -Aufsteigende Zahl zur Unterscheidung mehrerer Standorte derselben Gemeindekennzahl. - -#### TKZ 2 - Typkennzahl - -Gibt die Art des Fahrzeugs an. 82 steht im Beispiel für NEF bzw. NEH - -#### TKZ 3 - Fahrzeugkennzahl - -Unterscheidet mehrere Fahrzeuge desselben Typs. - -:::info -Eine "0" wird in der OPTA nicht mitgesprochen. -::: - -## Übersichten wichtiger Teile einer OPTA - -### Organisationskennworte - -| **Organistaion** | **Kennwort** | -| :-------------------------------: | :----------: | -| Feuerwehr | Florian | -| Deutsches Rotes Kreuz | Rotkreuz | -| Johanniter-Unfall-Hilfe | Akkon | -| Malteser Hilfsdienst | Johannes | -| Arbeiter-Samariter-Bund | Sama | -| DLRG | Pelikan | -| DGzRS | Triton | -| Katastrophenschutz | Kater | -| Kommunale/Private Rettungsdienste | Rettung | -| THW | Heros | -| Rettungshubschrauber | Christoph | - -### Typenkennzahlen (des Rettungsdienstes) - -| **Fahrzeug** | **TKZ** | -| :------------------------------: | :-----: | -| NAW oder ITW | 81 | -| NEF | 82 | -| RTW oder MZF | 83 | -| NKTW, teilweise auch RTH | 84 | -| KTW | 85 | -| KatS RTW (nicht ständig besetzt) | 86 | -| KatS KTW | 87 | - -:::info -Diese TKZ unterscheiden sich und sind in Hessen und Bayern teilweise anders zugeordnet. -::: - -## ISSI - -Die **I**ndividual **S**hort **S**ubscriber **I**dentity ist eine einzigartige siebenstellige Nummer, die ein TETRA-Endgerät eindeutig kennzeichnet. Einige BOS-Fahrzeuge schreiben teilweise die ISSI des Fahrzeugfunkgerätes auf ihr Dach, da durch sie ein direktes Gespräch mit dem jeweiligen Funkgerät aufgebaut werden kann. diff --git a/apps/docs/src/allgemein/bos-funk/Status.md b/apps/docs/src/allgemein/bos-funk/Status.md deleted file mode 100644 index 8f2d1361..00000000 --- a/apps/docs/src/allgemein/bos-funk/Status.md +++ /dev/null @@ -1,53 +0,0 @@ -# Status - -Der _Status_ eines Rettungsmittels wurde lange per FMS ("Funkmeldesystem") übertragen. Seit der Einführung des Digitalfunks weicht das sogenannte "tonfrequente Übertragungssystem" zum Senden von Statusmeldungen dem SDS (**S**hort **D**ata **S**ervice). Dieses System im Digitalfunk kann ähnliche Funktionen wie das alte FMS im Analogfunk abdecken. Es dient dem Austausch von Kurznachrichten, ähnlich einer SMS. - -SDS ermöglicht die Übertragung von End-To-End verschlüsselten Alarmierungen, GPS-Positionsdaten oder Textnachrichten. Grundlegend besteht eine Statusnachricht aus einer fünfstelligen Zahl, für die in den TETRA-Endgeräten ein Statustext hinterlegt ist. - -Darüber kann auch das Senden von den bekannten zahlengebundenen Statusmeldungen realisiert werden. - -Der Vorteil dieser Statusnummern ist die deutliche Reduktion des Funkverkehrs innerhalb einer Leitstellenrufgruppe. - -## Statusmeldungen - -| **Status** | **Bedeutung** | **Details** | -| :--------: | :------------------------: | :------------------------------------------------------------------------------------------------ | -| 0 | Priorisierter Sprechwunsch | Das Einsatzmittel möchte vor allen anderen Kontakt mit der Leitstelle aufnehmen. | -| 1 | Einsatzbereit über Funk | Das Einsatzmittel kann nach Rücksprache und abhängig vom Standort alarmiert werden. | -| 2 | Einsatzbereit am Standort | Das Einsatzmittel kann am Heimatstandort alarmiert werden. | -| 3 | Einsatz übernommen | Das Einsatzmittel hat den Auftrag angenommen und befindet sich auf Anfahrt. | -| 4 | Ankunft am Einsatzort | Das Einsatzmittel ist mit der Abarbeitung vor Ort beschäftigt und nur bedingt erreichbar. | -| 5 | Sprechwunsch | Das Einsatzmittel möchte Kontakt mit der Leitstelle aufnehmen. | -| 6 | Nicht einsatzbereit | Das Einsatzmittel kann nicht alarmiert werden. | -| 7 | Patient aufgenommen | Das Einsatzmittel hat einen Patienten aufgenommen und kann nicht alarmiert werden. | -| 8 | Ankunft am Zielort | Das Einsatzmittel kann mit einer längeren Reaktionszeit nach Rücksprache alarmiert werden. | -| 9 | Fahrzeuganmeldung | Das Einsatzmittel meldet sich im Funkverkehrsbereich an. Bei der VAR: Meldung nach dem Einloggen. | - -## Statusanweisungen - -| **Status** | **Bedeutung** | **Details** | -| :--------: | :-------------------------------: | :---------------------------------------------------------------------------------------------- | -| E | Einsatzabbruch | Das Einsatzmittel wird vom Einsatzabgezogen und quittiert mit `2` oder `1`. | -| C | Einsatzübernahme melden | Dem Disponenten muss mit `3` die Übernahme des Einsatzes quittiert werden. | -| F | Kommen Sie über Draht | Das Einsatzmittel muss sich telefonisch (per Discord) beim Disponenten melden. | -| H | Fahren Sie Wache an | Keine Nutzung in der VAR | -| J | Sprechaufforderung (nach `5`/`0`) | Nicht-mündliche Aufforderung, mit dem Sprechen zu beginnen. | -| L | Geben Sie Lagemeldung | Die Leitstelle fordert eine Lagemeldung vom Rettungsmittel an. | -| P | Einsatz mit Polizei/Pause nehmen | Keine Nutzung in der VAR | -| U | Unerlaubte Statusfolge | Keine Nutzung in der VAR | -| c | Status korrigieren | Das Einsatzmittel hat einen offensichtlich falschen Status gesetzt und muss diesen korrigieren. | -| d | Transportziel durchgeben | Die Leitstelle erfragt das Transportziel des Rettungsmittels. | -| h | Zielklinik verständigt | Die Leitstelle hat die Zielklinik verständigt und positive Rückmeldung erhalten. | -| o | Warten, alle Abfrageplätze belegt | Das Rettungsmittel muss auf die Sprechaufforderung warten. | -| u | Verstanden | Die Leitstelle hat die Informationen aufgenommen und verstanden. | - -:::info Status 5 -In vielen Leitstellen kann ein Gespräch nur über das Senden des Status 5 initiiert werden, da der Disponent den Funk innerhalb seiner Rufgruppe nicht ständig mithört. Auch bei uns wird der Sprechwunsch mittels Status 5 von vielen Disponenten erwartet und immer vor mündlichen Sprechwünschen priorisiert. -::: - -:::info Status 9 -Die vergangenen Monate haben gezeigt, dass die Implementierung eines Status 9 sinnvoll ist. In Realität ist das in vielen Leitstellenbereichen die Anmeldung in einer fremden Rufgruppe (analog zu Status 5). -VAR-intern kann der Status 9 dann genutzt werden, wenn man sich eingeloggt hat und dem Disponenten diesen Umstand mitteilen möchte. Die Reaktion darauf wird dann `u` sein. Somit wird die Rufgruppe frei von -"Funksprechproben" oder versteckten Hinweisen auf die Einsatzbereitschaft eines Einsatzmittels gehalten. Solltet ihr eure Audio-Einstellungen überprüfen wollen, tut das bitte in den Einstellungen selbst. Das indirekte Betteln nach schnellen Einsätzen mit wiederholtem Drücken von Status 9 -ist nicht erwünscht und wird entsprechend geahndet. Sollte das Rettungsmittel durch Witterung und Zeit nur beschränkt bzw. unter Auflagen alarmierbar sein, ist das nach wie vor mit Status 5 mitzuteilen. -::: diff --git a/apps/docs/src/allgemein/bos-funk/assets/DMO.png b/apps/docs/src/allgemein/bos-funk/assets/DMO.png deleted file mode 100644 index fe09675d76f8854762d5fcb5ac911818dedd2012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94107 zcmeFYi8~Z*)IVO2wX=s_uh>!^{)H|@7}k?IuUJyzlILD*xzxn3 z-JVRXz1X(djQmLK@}SyOsL&W4AP1^V9@N+h%PsO&VN}@>raGa>C!Xe(KL&NhVw#LU zfcpC_qX-~=+8LGUjlz87n38?EEX@JeHX#Q6Mf7`8)8{I$64MBo`|@e4$x{CN%EWv- zFUh=-AvLC;JH8j8IoLOwlbc?&AOB+ zstd}rjI35c5b%E~Bb0|V6}m}vCtCV@##(!}j{n*|1+xv2X!GpT1ElrBGkW{4cJ)F{ zu!%qS8U&`c`>5t0gn-2~&X>^D0$6G@1%At&;J19JSRo#nztbE!8%XRdTbZ?5UTFL- zy%WxcL$IP#y9Q(5{XWJ=Q5GHQ3E+DuGBV|@e=RRaf_ZMn1&UEb#mQ9TzY57S#66z{ z#7WwKy~lONLjyS`%b#HS=s7ni%MdRBb&lM5!8do9AO}MoRtmg7+W$q!r$=36!Ooy! z8wJYY-pzroE=CdDuXea%c3o$RFb!va>nusFwfDp&%?(}FWA9|I7o1fU2pA YiMXjH+l1#y~*zF Lu=x_lzC3_p>;X{=P(U#T9xCke5S35K94s zE6BomPwa{RuAcVa)g5~|=PPP^8Y^!a68`C-C_s)*GgOa0k9cuyYL~}>)r~(6x8zas zJwa}N!K?LaL z#NE(6+G)taIe=g92B!9TW8-g8R0xthVl ZGGd<&Kc{8H)(avYfNlRy=iwP{*dA%Wn}RsmQRpP#J$`5 z+e `qt`;GI-Nc-y)KQhc!tyKoD^&I~#)rvHviJTqD3p`b!AlC}}g z-+VMgjCgWyIY#|)#DG(eJzrGehi*!Me+k)dBS0Xp3mja(F@AC|WCz7J8z^dIKh9<1 zEUa7azGX*dAr)C{JP%5%;fb^Ukmd1F_L`&NeWt(6Mp_&of{eR}fGaToA$3C#a%9&A zvgzMHP;aWCJqw03`n=UVML!ct%(W=idSXJG@lzv2K+|*aYq4b}N6)W~MqtXpRWC#x zjn*4PHfqvbZ=5=Gm3AJQ=+7A%VzjjA7aSp*5Kbd;Io>|SZMG~u{OPiK*{a|r3)iH+ ziSNDG6oVlPhw1sucygil=j#u)fI;$pi-Pib8YB}`orE#f8NS45>Qo8}U1ClEH~wpu z(oKe5+f3zn=qV%u<&AxPh^FpvC0A$U?A{l@QZ<4rNWZM-%;72PGC)eub7s}O6H|V! z`=@N=<9oa%svxQn0>8z90lyWgHvj3x<#f$v<^4O~Z6nHTjy9CUk6^`+GIH)d;kdV= z=9<0YR{4H1f|-Ur!f(WW+&TBPUF}18<5rZ$KY+~a@tzR!Db}|dSJ~6>$ FD_pb~S2isl{U*`tt5PuYzY-`}+PNTI^kJ6oV`9uG>~P=OF?X8v=;SRo(9`n% zmq6Kh-=0v YY4~7v_-L#|+7bwP+ z53Sn*;1D62K|(<34DI{x?oZFCpZAdO1+bYP@=&tv(mP`s+MER=lKxfEd0I!2R`0yO z*c==3&j#{Z+U9Xc+ktNIw+;PEXjAUNEy=&B!Mlal^pHK84qXyRP^x z>H6I7uxIIse{0NfbXfwwLa;&>{#3p(9tCb~H9(Iu3zY??`8)ClCE?lD;>eJcB#x^} z84_+!n7sjxWJ2{qvR2D43NhscjCW^eyxlzxdE2GXOVoAh8IbXr>igvWc_ui~0hu~CEt_^Kx6f8hIsN7C8OXun@m<^~#(v}tahJK%dEcbU zx3& MVx$j>OPDv`*$tUWU66JIq(pNAE2 zBvAx=sF_=ocKPoh->=NDuN~9U1wLTDO>d37t@BP5WB_lZ{_476 #pitnb`Fbmyxh@H@p8`@>N!iuf`lE zsHS?82DGi$_Y=4LiH1;t1BJ&Cpk(Mqhz=;!a>gl5u+N4%TO+ka|AV#jVj^rB)&A3f zGFT6>Kd?Sy`61NA@ 4LJ(6f9XLuS$#%b&_k&g0uxW&OpwgF1Q`#`gbKX7^Z{W~ zW|EKpB1u|GCIpc8O@O9Tmcc;Ng5Q~rL&ffH6mlfW(8iud?^Kl9E?mNN*8aXK+;yHF zzOuBKz1YHcc0tA*vu_?p4UatEm4L7i>}3$SCb;cHMV%ifh^_Jll7PCIlyLw-L+bn5 z^$~%gzhv^kkl;9)1S*&TB(+${d`>b!TaGp}yw|NyJH+;YV?VZh9hvhSL;LO?v@dwZ zA&ed;Zp*gSl375pjA8y#q &iByj @_slQ2F+)DF2OWi_B(g}NRP*N zWsq)XdByk*lZnIEl_S3{$UFHRH3&&@Nxu$WcD_|Y+#A$v;6Gja??gt+SB+_5q{23- z(h8|C{wye!!`!Y-7u1yE_$&^!s*Ick?WQ4$2$su%F(#>oV~Bhp4aYWJp(1j&WA~*( zyBLm6-Wacb{(;1ec(kM$R9n8VKzbt-GiDa#!F|Z=u)d#E!_aN}A+_6TT49qdvY_7z z&z?W#w3}dP`DGa>h5Yv63NXRT{j6wJZ3@$Ch1fMW(^f>OeD91UQ691v_jGp6jTCV? z@q#zUQ~b)zDcUM-uRAR)n J7C%ke)KP@okA`$mYfYP>T*no`8+~qq>kZD=g3QwDRV266yHRd#KIm zdnfXNhf;@>q!*QZ5PtQoS#!&;xFkYcy7-XM|Lp?2p&&&4pd2xT>e8)sR(-4H(txS{ zp@Z<&u%rmCB(m3%tl`N}R~eelw-TcI_#QSpJ^xQ&liG*My9lOfm0NLOI1?T802pAc za^j%P{DWy8Fn}Q9RDUTO!uUn_Rte!w#p~r@d7zJP8ZJF*c57~V+R_TOUQak=#n^JI zOADG&{mLGR&qa-26Zh(ttXL0im8BU4hYa2qkJ$WPgqtv9?}@q}Ys1pbpUyy|Ke%$A zXdcd^4#e{~CXwAT?EOmx*j|>9IB1O=#e{>L({;2IeMA>`^lP3o+XL*c{8 zD90%ue}WG26vU}Zaq`*GMV90KTyf-Ch#b|u3@P3dHLgWel~<5zX$q?bsU+?xk|7Xz zTraQxhgqZW^bhy)_i9^>P`@S9MA9;0gEqO<1RuE<&3Z6UL zo?<1kjEm gF3K}X|tLVIly zH@&Fe_{zjA1?!!`&^G1LV+COebgXYWl7HNTd9Bv^FfO ;Xk*b`vN%xi$TUwkf? !S8w7xwol49y(cmhthX1HAvXFl3aSW>47*p6e|9Tedf49glpuB{v|`G z>k=UmUh!Ey!t1U0HAkWLbM#}49O%bZazArU2wCHWS)7TGsYYqKDyUE!AafL;4(PKv zyXU96zC@|Jo|xD^ tf-_ z)UDW|qwUjml*^GAZyRX(YUS%&{UopE%5a)kn`cb)*>VL~>GL*j1=vSa7C1fQ90EDE z6NTUts>G%}@6w6fLjc-=jIepZUK-uk5Nrj*c#{a0ZI45?j~Qs0fJgH%He+c!*Ee z_0YiIi0RZ-GwS`xcuxU2>YWy6=IoGADG3iD-IZxMraVI^E)~B_sAmJ1H=IzG*;Z}| zmJx_4=E%wu4j1x1!7Bvqkf}GjOY7o7B7-tG1Oh5sMMg2UL7{#ZyYC>zDefp8#gIs1 zA#&;v#?nJxh*`=J+JdF0 z;bwJ}(J6bT_?rlh+Sx3MrFbWK92@2TiyKOv6l39EVJnN)p@yJ*iLOw5Qnk}KHask6 z3|fRGWQu+SY4s Gk8 z*u=w=+ SM>@t zs0bzA)_sn8yn*+0?Ta|pHR17MCuHSQqh&y2@; zCj!y_%SyrJe_0*orob~)bH&x~9mbHcCGtD<+DlR6l2k>9!@8cV{r2&{w+n~Exs!&g zz03o4P0zht$4pHE^=llvJEGM?&*~jXS_EVO2`C&=SrQB?FS_KesRaE%%lTL@{#@w$ ze$L+Qz_SXqXKbIswA~!X{$oww^Wg8}YYV&54v@RlDbt7y-y8V1qq2)|)^D(1hP(Yw zrI ;=5V9Uv_Zb%keMYY$CdgZ^~STGZW+jn4&GR;NfvOV@{@wbq^PE!4}db zdWQL5>HpMN*Y`@H`8wZ&O_v;Hz|ak-!oj%%rz%tebKsbg)lwNqIS@JoXkt^Y#u5iR zvv+QEX9>_=bXvp~JKKU#cMA@b94{lj;%#Yse`N5uHE<+6!&fXJTEJ~*xh)4ng5sKd z OA*v5|Ab%me}Q m z_Bh|gL_-LOFwL=irLM7d5IKrIQJkvd@Gv5k ( zQoJ!Mzh>b3#&yTe@wyJBbnczZzJ~`AP&oe1tuF&`%pq!N<@iB^S0_oSljY0niHE~8 zQU-mQ@kvYPg2vI`woHXt;jIsOcLKPLKki7RMaLeT9HHbTFKW$SsM4RWdc6SEp`s_7 zyqG&Jt$j-=34~EciT_Sl1Z|SztGsXX0WaEKD#HB7um7vVe;P9G>RE*g>0>=OwdcIu z=}O%foif&)k=HCTC+@HD#r893TD{ST>qURdH~nFyZ#^T6^22B3G|wK7&NyQ4*)Dpq zv98j{8 yZeEO<{NN#?Uf#pch zm-dhWlFxiEjkRJ$w>8E?!F 2Si;ID$J)23-Cet%M^ oNYex4;=Q z2@YK|3qtFJnr5r&KaaCW8EIGC(pYZWK(5@CcLfZx;;#y^w$lu$ou$kVrrj6B#+e8D zKB>Zd_uV>YH~t)h&}J`9Syl*Yw8p3}1p?d(h8+EGO5?(Z{nwv!BzktLei&fT% oEb*SBPQ5tZqM| z1Gw %<)A}3^Sqo6f-C0KtVN>XZ6B>Khbl!Z8K+8t=xFX z+P5$bTQA?Q1rT#k2XtVM9eU}Vcxa%tZ&Qhj38B*WPt2nljy2~2(hMq&A~;70go3&F z_I>J<2{+bR@yoIG*1U~Onka-}s9iU8+y3Ai+Y~-5zNCLw*QfJK^*DBm_B|KBJBaHB z{4J$j+fM2P)5=i(SLqN1oqzRjl&8dhziEja3kR)e Lp`=i?H49> Js44OTcp0llwaAw}!h 6f|(3hWToN zBm(O#uUJ>O9C(#s{%}u9#G|&iC9Wp%%x;SPo%(x(jVKHpBk_GL>Y5tksN%Fbh)1u= zMR;!CppwY6#H%BxmoHb=a_~QA>~(@PvTbKv%t-GzeQC?s>wVpnHH4wbxR_vxU*#mQQ9mnsNFxr7(IEv5+6lj)Yzdv1ePSMx54JV&4 zdsbZpnfv7FbLT;bUl!s@i2-ic&AroAhx+eiFse+gJR5>9uNpm96t{-nLewL&kYndX z0KCUPdTtN&SuXlhCaRvGxtH(C0V&Oq6pistUthJUZ~+ZpKi!$fgKx$Qx3M0iz%j1^ zQaKW 7TL7}$3qkb3hq%GlyH#m7f&|z5{7O!4aeRF$(^)PI{ z_s=jk8_IETtS&CLp;u&?hNw;_T75j*s4{YGvmRlAkW_s) LLNgrw@Yf~rQ845 MNgmiu$g*H>1v9`C+1fi`!G-1zjpZAt6K{=*lmJ)*c zOxVN2DoIO&p-mf4J748(qF!h(7KaDcu;ZTD&Zm~+pb6{6t7N7!rQYwH(U@Yh!zxr# zjnUAI&fU=+guw*b7H5*}2XsS02-9D;z5`ce -EP)IEXtE2C@e&<5Q< z^S_dv%>2+RI|kqWt$wc<+V~{Iu%6o}_etw}Y+xU+YTyXv!>@H)$K+zRyEe46f&0J> z^o7 +Ctok z3(MY@t^jiwjV|G^{B14h%DXR^k0Ln#!lBBnU=6f~ZpoE9lCD?NcY=W@{v?G4SVc*; zf%bK1jv_z4myUL$w8ohoF*`inesu3!lnhPZcyi- |FfQ?$O-v%koqY%kNur_O7f0x_t@0w+5MvG2+SP%YCCYsCD&?>G zjd4(*eVOR=V7M}D`D(%@C|zn-`QyFQ!>(uu%~5o*!WH6yg|m&juKe-%j7$pucj*HY zC8oJnKx5J(#GYG|nL6X#-!H-~3$Mifn*DmC^g-E&6pvROe`=&z%ItAHF+xtTz`8`` z^c;Qmo?Ngy;*L5u{$EqQFL=aibW##bq^-Wt9U EbBcnmFWsQo54#D`L4ls!)YxZTt*J37JX5@ger?GHu_Gn$-sRT=Wt!Lg&80 zu-!+fJ7}QsdD9{H!x_}V)pTxc@GANTC9)G62Fx*xF}%~V=I>bN=R-8``>Xf=bg>yJ z_7X6!ao)=d+r-wR=8>Cf4sa$+P=w@imv2(r`cD+X!fIEWMV_Id(c*8a?{XrqJc~)* zlNadwobHr9E!$$hpF3YifzT`Q?QYm()I&553bPHCdVYE?qTol4f|M}5=#)PT{^tF# zCOx;Z|dxL6g5&(VP$n)SQf^P))PHy@coiQYZ8mMXf@RCKbGXuWo@{>EWWFk{Bow zER@7%+E~ca0PzoheIm{v?pd~JQQuytgwuFW!E&I@lGc2GosbimX&4As8qkO=U8wcy zx`Sh`o1!_ dLtofo;qz& 6SIb%~fy!SzV3%ct);3%Flv#(tEMcy*>k9zZLOqO1tNb&(o&;HMn*I5Ywum3p# zN^qmPi>&%cjHU3Ax+7eB`|Lq1&jHVYbqd!0$LvP?k&Yu~kQwjDae$rC%844kFOIP5 z&>fquKE*nPuZ_3)kTtBUlGn#uambM<*Kl*NnqurQ)t|WE=kkf7#gadE+B^Nuxg&UA z+bP({dHOdu_}-*s0zW@PSUB2@<3)<)QPLVrV9BAZ5zs4bwCm{Gb6HGfshGbnq@8Qk zs}K-Zt2_A|i8wCW=*%~K)Od_I;z_&i*g-WJx8MwGHlg0dHK7P{)YHM66W8{{q7LUw z6APU3K1cH8jR`0xQZCZGA^v1AP&1^5LE^J-i~gUy(kqXXdE)H_y{7O^bCis&z(bDs zP0LNN+8;0T9*z9WjW@V>#R-Uj5mugya9sKm=Cf kgfY24AoEoVkmvj8#2x?0Qv44siGt zIx bs#J<)m-tJ(nr5zdW_OAbur>c-Jej3I+Wt|%wtS{*VdMn6M`gZ+z#lI z&D2voST@5ntapt$D9o;$#ewq%4u+;LE_qE*pd7`4HD`dkkDbMO+RzXXDbSp*kpJyc zfFV>CdOvfac`X!ta#mJPc&C3Z2ORg1s}1^w*~pTj?o=&ztj6U|1H|uOR(|3@=KwzX zSV%6&0V@?@WzY6d2 dvU=|D-x2Cs84**iozqbbzFhxCx~h!a&-E zRmd+heyi9}mS^$!M0H+` _R-Gnx%#P{rT Jws zZX%IcZNcQo==da*U?fi@GERej^cl8;M!~q#^9Sd_ek}bv467&If4a*t-GKSlC9PCY zB_T&1%Dsdlto|+AhM1-{JozvHB2wm@f!$RG$%NfGp7+PEQpuI^kzjxXQ~bosx7JQa z7cF+ijucpqa-IYiBvM9#cX@(^Ca$g0rZc?`L?L_9q|u8+Nv1}K+*_Or%oeGdSk|tp z07KL1^a?5~Q&F{V@;Ly&k~xZCP;#4SEVG`?c;T7&fb7(74dlZkdY)xuev{EWfbX9M z@#DJoB$l76IzeVyNPM=Mh7*V^L2c}?jz6|jJaiS&OT*&6OEYCNV+6`S$i1yp+Vca2 zu ?65_HN zny11t8yfLjU$dC)XdZalblg;$d0?_h6GIpdOWefUGi@$EH@zSXPUNo*= B|Zo52_3C9&w_~^n)c>gC$f~5itXg* zNyUiwR3G9Nrp1%NRpJk!20IZ~nM431WdqMQxG4hubkv~pNs}`NdD;pqa}=$4`Auh# zqNnDQHleGV2+foLzdr{o`2F#Fnk=)iH#85%IZO`|(Rfx9+dx-yyan-k#S|{mU&03W z6Hn)E()7<9rUOrczu%Gg(M8|)0do|5Uq_Lu(_CPqi{0A9#-G5p*~SYNe2MWPwnYEr z {u_eE-+RHl}B%Sfu}uqQnyO=Ndn3c3>rZ$j&xPl1$mv6i`hWhO&3* zD0wOV)Ewqf+f$&V4c`JzJ<)Ld$Rmv2hQ8v7CkXoO1H$rZ4ajr^>0bhES?i1JWqc#b zxWW1-^{zHcXQAT(jTXdZZIPwh9H(n*<4(>6vKobeA*Ts_FUCjT|9=9|vSM}fWiJ7T z1#JMJ9xisnyHl@dWg4%N)*DTDE2Xl_I-66#hQ1AtI*WRO>Hip}HiwfB$bYJ^d>)iA zpOn1dr{SNBx7r@5mA%dr{LHkL^}TC_g(`FO=XI=% z6 )1;xu6U` z5F}MvL=7KXB7ThzHWCM7WhDL7EAxPdzG|0XzC|EhbfFCIlja)7jx9hHsaGL+VITDx z3)#Ev7oJuQ8}=WU!hN?(=13&t0_Z5D%^Bm_OW=-NSj$mZ{R9B;f;A^8BdBlP)6q37 z6+;5ehKA-rUSZ_W3kxE<#ks~p+lAq*_`Azrag$0Z*lhxdkxuQr*=SWMWsgKPz+ia$ zwi{BL>2uq?cRZKqO^1{5K?wk|MlJ9$0gvvnqpyeZhfe~V*t+Edpijq&yaKM66YIAk z%WB@81#VKnB{YIM$Vj29g(dV0a-5ty=J3amJexD-2)G%;VnPU%w!xf=ag_KXn1?N5 zHS+({ 2h4JkqZ z(!s*Yn4_itTH!~6M)06#t^Z=JIZ;Hd#MzbspK$g_|8*St%M&9O54m1~Eh_x0AM_u` z$mxPH0q+EU#c35(krNo3(Oaz4Yhv|@R}&WKKsGLRq|T^YGig#*!4;3t4rKyXVkDK# ziLRD!8h=zpjf(~ew-L)6R(659Bc}< f#Ohg9ImX02T+|2gR6y`36kf zMe&P(-;sL9|2mS@4si5cfH6F98sd8 _M6qi_z_ A>+f`2;hV-Rp2*>N46xBXU2+a3Y3`Ey6-I&*n zz5A6fW|B 4sDMN{3L5`25TS3}LmHPYm<8Imp9<$a?-oAYMkkO1w{-j8j8$mVl0 zn)G6hAH5bv03)-{^bgjn7Z6cVtQ|C{3+h%>NeKC5Upla(axeo%nQ)%?*JgTU9uXMr zKLw{xuoLjPM--lWyYsJ{K(d&A|-QEVCc>3h_Ag1n`fnoBGXH z2~)f!&Ls+yLpBB@1@lkjg4Sk(RR;O1(ziPha89FwMd@}yJ!fW9+mJL{5*rAaeNdZ; z?I2s}J0BL6S Z6#6az>UmhO;A4`xq*tE8dg2f3k;R^!Vc-&+sM9Zpl @S1(v=SE6EjB}zW)MP jH$e?0_j*bW^U0`8yV5WJ)5(F8qf-89R?WfldLh z5Z*clDyVZtGth1(O-P?TKYA`N70XVr9JSY|tgz`cs-&-U+Z>5iwiNR< !L{R0Y>?UyKpxf3 vQC6F#CSME=Z83MFp ATcm~XV?a+I2*Yd!mo9kj`LH4mw^_rw%+B-)0W>a53>mF z(0(hR*BT*hA5!pIyCBNyL-MS`gu;+;&(K*Q`vwzTI88;g&VfPjb9$IT#k_XTcvL Bv(^}k7qfI$bc|3yjYpvSQWa|T>1NJ3KK%Ude +wccxQa?{V@J;@44sfz1G@m z?|WI9i5lU_(j^xo0Ed;)B{pFK@I&$yc->~x^r0@*ci4pbiP3c{&`f=Y3uL7vx4)KY z#_DSEQ#|0EEO@QpoKc7PhvqM2BIC^N4Y-risaAN~ajC~tmcD(v3fqt$CtJ&4e1*(l zBH^z6&_3724CTX)y*cUk`9#vhEx%*caZY6qP!s76X${xd;7 |LY_%~hct!R(^L+f3H(42v zUWPMrmeK5v0aEVl1XpG#ip&KDm7=ctvVx=q<{oh%NuZ|wJhS@#kJp{`!E*%T?++Eo z5e38UwQuVQXV6x;srbRJKJaYYs(>q|*8pj1yQdod$Zs5~5bD>Ik hCno3ilL__sP}~ +N1U)K1acW!jlchG=U-FYrB)EV0T^daG($N!OY zk%<=D?mjb7ILU`|B*(J!gZgVym1tR#OsySO+lu)1VBW!?3fxS<{rNLf<@ogZ(i>Rw zZ{)o3`N_DvB)YSR_eJ!2Iv}T?LcS}EPukd;7%~Ad3Vl-^6`zOU2)XhGjRe@Z7pZKD z^R*wI7~O3@i4Z%=bd`j!r>ZUili+%vWJOl~OZ@xY3*-3PnN(()`^n-Tm=A3IXWZLv z7qe+yV>S%tV@lyDKJ1<$j346}==jk50A~nYm_dTq%X5rIen|{2jQ=bhpmoZ@^BFy& z?zFI{78q#_=%+W;RnqlYhOJPAiD$1UMA&N`*rc-y <7``}6-Ig1ZUU0{2LZI@n>A3Fd~&sG*Z~FK>z% zf+k`=E+TSg8r_xSr*2tLms`xVz{{Hbu1l%7@R~N2pP$zsoZJhVkq968^F)ySo1gOM z?38>|+Eb1E@{|o&LL0hDO!5i$I5d>h{S-7BrDDLlTIj^xybYMTZU9cCU02`0nsc&n z7MHJYkyq-Jp9f^lg|s)G)qBjMx%FwaTVL=-RowgNulklh{xe!y#m*;g=n%QjR7lIV z`*+Itkn6tlSTH60!92nBUZ%pA zL?xsYPY)1Ta`3G>Mbl3$s}-@H3bW(*a&aqC9uKdXx;I?& ZSMW}(aU1fpR!+$ybzVJk458y8zGt>41V*@PF!eq zmgHZTAP t)7lxo7^IcoD5rC|PHT<+9ijtYpmVJn=y?nVv+#Z5 z^6^WA?#Dfq$N_0*Hn#FGEKObW=ZbFSh++GeK|yXX^8SQGD562c2=I*6HXfXzO!T$I zQ+f55rOq4JIRe8!vrWLlv8(9tyE>yeJ$g`89*s&8OXqqgF6QGNedRUhTJC;qx!DR^ z#{KlLu?c*0xJL=8ee}-=XWsZRb;O;;ZW_3*x>hnL9ACG)@512mZ_Zj%^J5>9h6ko) z_tXt&I@!7#hjx9E{w3V+r+FpepnO$%`hbAbDj;xZQp`KhH3bZ9o<3@&g0~Gj6-(^g zk@uL>v!L{qh%%6T&pR((S4qqd*OaDgG5p$o71hO2{1+UF{ili>0&N_{QF{!&dL6fa zHnr2P4K}qOMwGj}>H*y_`5SDz9=AKHm_Km5>z^AvKWXs;7Jo&v1~?SXr}o=_?+q%i zZ{-Bg;3?Iz>?+^J43_80YYV(zm{HZG%H(chyXOwhqz0FL^A#+nx#wq|;9~@b K!TH(!IE)Fiq{UA^!~P$u_R+{9y^r&+4<4cOMq*jhS(;A@>vfjpB#=v?>+nTUd7A zi`DzXS~TR3=>>z>icQ)C7QC)|@WFMJaCfk*U|?b|L2wpFt^d5!7{5)V18aFiAhLM> zL>k;7X0%80Lhq59)yOjHq{-u3NWYiQfB8z^b!2`j&3Dp0_9&ULS(e^q@O^CXK66?{ zeMG0( j%eHOb4lsUXnRnrHDh!#w9{4gwYo& z%EK6c ;%><--v+aZu39 zj?<|>CRk3uf=qCK1}y+j;cUHaK`@kant`x@R8s`*7}@0IO4n0# rh`v_tC^^%=6P8_NqX ak+;aPa$jnxoYs| z1*(PG5_i P;HYS3KSY*Ju17-0)c52E%V>;unM&dv7tVQNO?$6oRKWc1e?en>4yNxDnp$SHT z3qzH8?vk`AidxP6BY1RdosW*Sgzduutqr#QI(n3d&W(dPJcX9HRUY6Mg>z?mc0Q^% zz6uplT 2Ck8~0=ii+=YJTWF^dt)|XN$qJ7`I<;uAjfkg0{jR0 za`q8E)bH~IJHrJPl|Bkkm6sQ^S6+?|o*SR@K**0+dfv`RgG7729u_&`e(>9y!ZgRy z8J!<|Y!S<<4^#t5A^qM=a8D>n5k?2~qY0%raVr+e3y@^YN&I{Vab!!Mms7Kiei}cQ z;t6jnwK2LULSb1MjiG++W)d%NMFpuOy(ROwZ=HUu)V)^x%k8Ggc(@YLG+ElF+g1<{ zYF7Z#zW!Ls0(@anA0o7bcyz8bMFtaT8+GR8JnnT7%T5$y4Za_cbGzC(tu)>|#Zx($ zzyaYZO$ena^&4z3JPs2 9KOPnTlXl}vL;$7*M 4F=opeukyc{31Hby!~rGYbXbWU(yoo#>fWnf zB@Hku }ra2jZD>APlI;`LodxZ^lV0-q_gGS=R!LLD!sAi4QeBV zcz+u=)VF-qg*vQpYkr;ixunmt7*e2*#1vZV1xL=)Z^@rEcG&D~H~LC0MYN;IU0mL6 zTR_Kid2(`JQ0=_v)?*R$Rfyf1h1@1vs)b>%E0*7f#_yA}FZF>qyk1<&r6KZe7%Z0z z(Fd1|9J9FtS&B+dK*-^pU3QT(dW9fz03H9i_mJ3z%s#}DwUjZgXr5}#mpu*9RD;q6 zuLhDk>?zMDx)39;SEF{v66ykboR2KC`j$WGRA+eZR54HBZjo~S1hO0%>dlFufTXN5 zVPsHOW<0Cj707Go4fAP5y~hGkkcqB(R}-Q}vqwLe>L49s{L`oNawxnVicKS*_yEsH z5W>UnD2gXu%JJmki@JT)L?C0%UC>ls_IV|xLT#q!W(KU|;kBzU%ZEcbnySY_$R+@K z=85vE&h5h}Wff}M)%l>J)>W*ty*8#mmQcal#lKL|0@ajH-zEU5G#j*Jyb0yb4Wz5q zi3^*rc9ghx^{gs(EuB}+mI3NNus6cIV1qi?pA(2dk=xW0I*@o0E2|Wry!&Ab=E|RH z6?wZXA=dsF%vtnN_W8i6C$wj{6miqwdY=!heXyRWFwWx5wqH^jc0@x9PApF|rT_8I1JA zdv~s`G>}6EfAbS6=;aAvkn0s52)`o_-6g3%2#!(eo#TGhe_wdcxtCcT)B2V>btG=r zd~mi{r1!gGDZ^a3J5eWSL9jAKXsLh7E^_-+tAUd|dgjGjvcsZDzK!iDrBDDY+w35k zQXAq?FCbyK9cOF5DAchqPi6`EdVXB$afB(%F7*%&^~SK? gpuAqu#|+g!YE9*uDjs}vj&n>weA;=~>+Qgc zwPb}7on{SWk6|79|3PF>jQ4TdttJF)>?w!5vlo11aWCU-&)3Q%@v~DaIPG%Ic3asO z6VJ(WNWoj)zmUjcwJDH|5DK@>fB1&vPGxA>fm^SZ@?G8Jo$9>%ER-gdFWT^t)j?Bk zW_U=Y<^>{%Y37b|E^JI6JJTqAN)flemuF;Wfc>+&5H+Yzjeu>|-bU9NhMn6sAz{=D ziZ`3kZ`?2b(>N@mf6O*880zRFXWiNudl9bX3qw|mEvt^>Llg@tHzC(gvPWL0w9uIJ zxtG`<3TaMzoi@k{cVST#M!Zxl@}CYR{ndez%n-FmMT@m!vcp?PAGJ4kgqW)?iF2Q1 zdt&c-LLFev6E+WJwwsHBd^NMlc&&M=bM%ojD`Dq_gF{PRPK4)YDAn9+6Jt!p> |s84 zgoF)&7@1%2`NIt7HX(t;Z^B>p#R%W0G9Or&2+wvH`eO&hd@Y*OGZ_C`O9hpr=X9r? zL%AA{Wmwc;$ST~yQu^pR9>9t|mQiuU@0iN6t&yA#m)_+aC;19~HqZFVL{8JoM^Bcg zujC@#w6yyk2d9yw?YxhL*>zUN$ea>F{SuEW@Q{E1U8?P_1-0EJUJ+u>VIbydkm;Ma zBb!XZlt)uH^KxKJ8XRkz)EMdUCDJ>P_PpVK8|8>osWI&*68cJdQFL)EEG9&w*ZdZe z*RTI{_z*(IUq6H9zW}*bR9e=Y$98Fb2tWNgP=a}Jep_0&-QG`q FPF$V1YOxQkSfa5l-sOC}d zqKjtm;?CQA>7=_@p}5cNYbE&;oMyvw(KH~|m&BJMC`X^)X@PP(1XgD?YMHCYHrSqS z75UP-dXx2<_9E?+xHjL_AYu9gem%nukhTm^KduOF6FeMvUDR`|iJT52a7W>Iwl#5) zv115V{!81@I{tAN^)1Z{3U_CdofR^o*}{ufJbFrDvRf5PJ|K0K0P6Ql=Y){%I)IQa zcD_D-S3v |Kk zzW;3vr;Q@SGjM0MQWIpg>V9b;+;AZ-?Beb~G?cb8rmv~GXWQok6V9n0GK 9+COZipI*CU&V@583$X-y7PaWEkmwdL80&8ibSb<3ovW zz%eXI6?5VMMIK$tS>Eg8Yt0x)PJ^CT=h#wf5?qV_gC*Q`Rb?|O4|U*&s2gZnKa!s4 z_L?^H%3Ym$yP6Lq65;FJRNL3b-gdkhmf-w z9&E)FF7?C qC|%u&U>nmEP6G?||?z~*2^Hdz`OwpATQ5EByVD{A_2 z!1vKLsK5G_d?5>@eGLe>E19f1zOR8SvWmkf@%Jpr%1SIp2-!p)Gp>emAlIyxQ0e!0 z4ZD=yLRZo8(Oa*YF(Pa=Z0y-2X;qv_;F$%#qFVC;3&+wTo@qWLst9Z(5d zKoLEpjgywUK0iEuZ(2ZyC@ QKCIpYJ!1Vh*f}0|rH@w3``Y7JpBFoJNRSxN1 z786c(?d 3 qt=| zYNiu45lR^?No0oQI_7w1>QF!-&O@;IqP!E*+-*O>jo(t`?#)u&Re!HoHVIS_c*5{` z95X3@Z%N)?`P`quf)Cj|u_J*j#oo$5suvahIwM?su-woi*`BR3OlsMO)rMtB<{lCM zYaIu37INL9e^T>Jl3@xYES}V=!(o3Ndm|m#l$_sc&{NuILaF(WM+nKFys-O_RDU!` zg_ryzbK7Vt-uiPN)e!@DrFzqcR%ULnw{&&iZ_Frz4ftRxnBWw~f8^h5E6ZC?dh+(j z8>Z(7)8+&V?Z62GseYeP(hujf3iru#(8*qx6>2Ywe-+LK1F`O$@Q>~gE`I4Y4GzjU zP)nRPETHVQQEo=WEY!){~~<5QhW=f$(oo$uSvZUXbPvRd1thPUA{@I0yTD-0700 zFP^G=BtfoqPqrUFu_1vHt(hkI2O^?k*QjO%?7qV-2bXNxR+F}79Ek3v z!oVKzW`q-s{JBr285dM|+!kMh*ugzlyt74*OjcJYnIFG(|6r^LI}M@;B#9!eFcf)h z51Qw}MWGkUb#k)(qu8&a2=OzOSt(Q+zVPf#lh^0J`7I$E`hVE)R5Wp!MLC(#ikyZ2 zUcncWj!j0qq8o*!K>pq8g-N;3ShmnWV}oEnVg`KDXtuCP7^2@5`5OT4f$}D97R-7^ zzrB%~PcZ=Ho;YpZ2T`MFJ8kfn_^?`VJ}FjU4djh-j`!GIXg&^)1!58h3S#VjJ1B-e z8VnJc1?&9=wo^XnMUSRi0UlB=^s169`{S6zK7HDlwBz*h4(N zvH@t~qdLW8y;t9DJ8NHZT5I4gHq4Dnus30{kd&H4;}NXL&zrCL+-OSn>~waQ*CGEF za!p(a;mpAjyj4g_r(n_@H;sb 2D&VAaKR4IG)O$ur6L9BXac;~gnk zIHXZe#sB3MGgX&6R4_BH#(-W*zGy<)DH09Z>4G@sW}0A!q_jWbBlCVYU=m&f?;?(9 zww;^P>BT2DqtEB{n>9<2M!N~zDS4sextlFB(*52aSesMQDB(S->J>P76OuidMM3%d zqbHX1IA#Ws!|T% 2Y-t?HT&B^OHC|l-NhagHyFUXbJF*L&vDsr%Oc=Sa7bhceKzCz94 zY=mZOi|M~}+K%9 W6MbM&b!0s~ch`w^LU8rAU3H ztx;Y$PVm ^)70M}0C)a3IC4H >$OXz3y8m5yMLIz!%f|v*y`C&+gh^3x#@I)GIyP`we z=-acmp+dAsa<1^zKTyBukZFn+tnw{c6N9Mzw`%;N*hQdNX5_!aI>gZALhqy0phIg# z!-(aNbWAC%c8>v*!{2|aVz2=k%^fg(Lo-rR>1GyXyKNWU3+U%=!~O&()Nu_cl0s%+ zRIO+KoZ6$T&ZKae=AFC9cr+F7Dcu6{-t}4p{{#DEAXzv;at`gy8ukV%H;*>)ZT|l( z0CM2_2S}Kr6s%^GbqTV3vh!N@gF2zY{pDss+htint$v> ( z^YM=4lAa_IQGVLJ3sXqi&PvnAht5rzV3rI!!R0t)d)ztO&e&9cUjGiWV%c^=3Q;On z@S>}Ijjt;-cE|09f{l9!;BDP66Ns(=B_>ECkNoswB5+ga%kS93+eV)o1eXPkU&!{W zOiRfsfjmpjmrj1hzo7 k4oiHhe=qds$B^aGT+DPnHMM#+sr*-=W6QPm$g>R#5 zc|%3NI^RRubyQ&A$$)+n_R4I(WA>aA8q=@)Qg_YSaza1w&0vVp;}Kvub~>o*#-9g4 zzjo3;4~a$&w*09e(w-{+WZLWfw6Vp9&$>fre{L5)+<`4muqcz58l1?-OxDMg5Kh{R z;!xEKW#@D{SlhGI+}Tf8mD1~jG)+42_id&MW`?%yUUAaN; pv?*}`q|y6S22 z7(kCi5A}P=GbzhIjNb^(N5z^f#y+FRC(pf_?P?kWDcry<%FZk@7f*Y~aXkL>?KOR0 zbzHpnu_$~wsl31u{wRp|eUn 1>3il0Lxq$zu~a+g->Sq@nAEBwfD~YK9iFqxED2&LHK@o<(4n6e zrqypT`h-{RClc&U-aBQZ^=IkVR|W8SCK^O7sYTbTVog%?hrTg@#0y>YC5LWh!cuvG z2q?-c)4L5OcWM*%LXax2T2#QYZv*;MQpLqe iX+wiYq`BwJ0v-SIPBFyH3I185jB$A z-q5oY;yLs_-PTVnk0o&_F@{OyJbTL4oUQ$rL;~c5CU+M 6|lBanITK}qzwU5xMf+0oAKY=yz;?^{H znxWneT*^{M%zjJY>Nk =>bC^+7%09>3MTR+m z7CspjZ3Li(<-W&ZjR^x`^@_IqQ-m{DCd%~KM(Y&236Z?1ZrBGjkd!-M*CN?}!5oa) zFT?Phmz_%*R#o|#9Pa?p8CI_>a}Q!-re-d+iUaskU48d?vXK>_=n17d8!|B@@1!LO z#H0+|fwANS+pn5j(3p6b_%f+rPv>;93Yv#;8yh6w(*I{0628!AxcMK$%}x{n#Ittf z=O{h=cEdn!RH7@J9l7p1 ow^^piRU5?;;P#6wG!^X*)Fm z2#UX{ jbsSI*Z>O|Z=#O7B|ccCY?WjKUXg)t-SV$yC2 zH9~+C1to@&qHW7fQR^qWtB=^NrxMr}>%O&tNB!mbhPVPY|L7gAd{<7nij)yupy_kj ztn7b$HR&P;bv)wNg(nYV_g+nmb}aC+Gy43*hg8x=<>#sJg3&9 zCq^mquKxQ`olO;j{XVNO1^Q|SBYEqt7)9^RepW(ZH8+ld3b)?R4s45Uta7TN2aPaG z-Q=%cltA2ppj;0J%A~1ZhNIeJB;5PaQja{P%TfWqBocq#II87ij)XrJy?r2PYV3Ep zQr=ZB-&EJ+vEdzfR#n5Ajoqx7utm4|YNAh8>gEFP{v=N6x%kPi<{#s76&b&EJU?GX zbpAH)UTkWPtB2{x(|9=w`lR<_P|18EPSGji0*`rBmD<}F_(?Y6QtVrA^9gBKFEgX| znoIUnPGM3q$8VWR;~HJRfX~SL9cAg+4PmjDhs2LB<_9AjBy}YdBr=AdR|c%k^!NX? zI0>=v-CDE2FuG(Q4lCuxNreu){K}N)4NtH$zccW2A9kvSWnP^~4^=_)eP?kuy+ZG! zJQ5b~tqgckoL{#18OG!f zvC=h-ckW*XuFl@ILt*m}m<-f~NjqYD3iDgzd8AwXhtD zX@Vv5gi`&Jan#-eVpDv`T=R739dJd@G^2vID?MF^dkjvUL7faSeUnkYcJJ?7FVy|| zy?{$pyYKqb)}@)S8jl)TH}-Yqsx8&3StqeP$|qTqJ1&ly*f$6)O3rJ4teE`%v8i50 z#v-===IIJV_r^^lR)lR@Ftn`s8WwTH3e)eh0vVb28Y0Ry%tVAYbOG{8E9+nkarhOU z50=whWXUzXLsq}GhP@v!{%6uIs_lTYw8oAck%ZLk+M^=*1a`}tD|od(jI^@-bY&`P zGA*s5EGd7C%shzQV=(<_Lt+ZkecXQ8knLw{?%=T4CSk*F0Amtg9C&bgNAxM1(wzQZ zyieql-h$S%NwGnyS>8a-Wq4q}P(xBTBr%XSt}ZSr#f1K9!u%<|&G>wAs-ZNr#x5#5 zSjK%d`^BH)kE^CkCg*vQE*s70*`KmITxUZOk=F>q7dO%0XEKKu?VhB_oxNB~em^DQ zOwSoqaBiA*9)H@A+PKqxJojD*adg+?iE%^WUwPLWx{AM0^y|)n2j}-6NtJ#HUMRB4 zeaf~`q3*95O!he|Jn||ai{6+vVq`IBbSXGVA(Y_YU$bS^-%g?R ~CpUIhmK~8Nc5!3mA zJgUv^MJFN$)ncLofL}@ggkCg+%l@TQx>3B`;JwA1>AlB{l>;$mQJp)qps1p9HWv!J zG~4-$vcSZ9SzL65OvIF1oS=gjCEIp8S=;>9ZP#y(IjYpOZui7gR+yh1V=pe}QNd>} z*pcHw){AylwRK<~tF+N>ej;m(sI3+4h6@^`v;2`}V7H=h$h0@qI8EK57Ve^uB(}Mn zb pNE@Z? z^rX*)Urts Y(5*7VE_}sN-1>nrv_Vzt0D_zV_ep+1YAXb*0kH2O$hWOcm#1tt% zT3MET%8fo}4R%_V$4+1NeMMc==A4F}4rdqvL}Gu2*$<-YleS0yMN!q=y4ulkkZwxB zkj>*EW9q`dK>bR!uWgd U$B{d7PiNJX`2XEnQjIAQAbf}9(e;>KI{Gr z-r)R45=8!T*67VYRHBT?5~;x(P^veMm0$07p>G0P$`+im?A}DR0dSzD<5&xPG?yL6 zG{+}vR32x#v|x{#OXV>O8{9s&b}Q%AhI?kdlYAng_2p@PJySIn=lk*qwVd;raII|X zyVrfiCSPbR2~`Msb)OQyh%8=O7UL^~QY8{l4^D|mEA53V{1S;tYXUPa%1p@VeaEUs zKw0N8WXA`kKEW-Ca4`oqChcOgm@}~~d+P~r-QOgq5wjFek(P2Fn6EwD|F`LC`7zpJ zT68!w>Z!^Ug23VS zxH=g(`RXl>@I_(+qfF~2-5Ng0JQa4s2-x)w_TOKco@GUw<~=*Ne?BTE zu2no@onw^F3#TfuN9bDIA+)qq(-bC-a%j>xy0)a)+X1ZYQQ(;I;$&$dJrE{ItC* 4o-Z=7ks!pBqC@PUt=LbP?&*e8?vmloR)% zR2kf%!f?vVW=V3edf3M%3bAe951ws#DYNfVXD5g_O@EUfkNv4F$&uT6-RP0`)Vt|f z+q|TQI(maa>&!#aT~$f`n#xh{XSGo3{y8oT!XaEKZ>q_p@7Wa6%1ss#&M%1kAdQzx z{5&AZsG#hKlP!0;uDpO~+An`b(&=5v4L)MLY~ht3lDn~(b9{;4^d U Y``6^nG$ehM17p9L2 z%~Qd%RC9B~*Y eVI;?XH1 z(Y+?+ oa|b>zgepYrUkmPbq+eHE|+U6j!zJF}fQ{ ztUGJ9o#^K8OY&iprQ<7QoM&REr?k?;z0;!%Z>VaDd+l@=dT6;hCLN?#lYijfy<%(f zI?SxG9DY`;8Q(U$bwuH6qg61bS?wtz1WrKu#l53}%t>x0PE>kq$f}qW!*UZ5Fe-)Z zBjPJQkwJy)H&XzqJj11zwADYjlx+U+dXg_`=WBzYeD-=%zWK=^_%PZ~K9~5AOk)^- zQccsjTy*#Kc?eiOl(wepA9@SBjqR#8zQ376tBA%WZGIyf|GsaAU--z&U7JDFR?fql z)K-hJde^kK`}AL_*#oMQ(a>DN-1y9Pk B1$i^)k+=CEbfTx` zNF5RTX%Q07_gC%v=L@eYKEF={!E#4aui*W58>V1(PN1d1^S7phz@8{_&!uZeD{GP> zZND&_2D!fq*;(bLC>qu^V#uI`&znU_P^zfu7^E-Z3tW {6f=cXnE z=biA#njxtK7RPdplSRfOvR7fbk9>2RtsG1na+#KXKZ)aZSvl#3E#->zHX#QBcRy`L zl0i0$z0}aCSH!>#sHliD83Ja2fl^yDo9v~eq2FSTP)VjvAWieSP~YdLbwc9j7ulLw zdeq7R=AGBaIqx8*k#9^aNho?ZeNLJE(>%3()9%SM!`y#JMY0D>#lElcK+-DN+Pd6O zFmScLiY&eX3iJ}LNK>3g;apw)Dv5QVk _= 4jabc$_`oCHEyFG?ecmBb8W&~F&Sw%Gjn9JIM^O5cPtC$J+-6)p zGunTg)t{-0pAI ;? zWyV3(HToJ!nEOPs<;_ j!hb< z`RK(lI`+~(*(sOudIf(`^uRj(7org>DA zWgiIVv!i=YR==nf+I|`)$wks9&m*1D-fA~Yl#AUAhZ@h@bXW7odi5QyUhtzIBAN87 z&o%SbihW^H6cgpOu~`vvVkD5wb5S;AaYrf-WPmf6XRR{~;)tv^X$>4RXNMUt%Y=h} zat^7C*G|QmqBi&CihuX=M%@;FQvL;T#Zo@=GC mj)BT7ZG z08vXkI%TDZuR!bFy)I8`feVFGB7HGa0qUxjn3}b1uEAeN3|lHw&XQ(%PMq~VmQnxU z+87?Ha($jH+2plq?}r+X;iGM52fF~-wi++hS*+a7V&?B(JabdJ>E6pF9*<@;8rpaE zvj}=0a1O-03RWL6IsNLyzJ%7P@c us zheY|TFf~h(d-a^Nv7htof!)C|qz0!}t{5ik5llOnGqQ{v#1bR$Uj?{fck=#t=1Wz- zuhO|q-`D@7X0>+5>2vYea;gV7X6?y6J$r9Ou35vsVVa>m3aAkNK{-xj$vl%KRI5r1 zAOVL(6_G@GWQNO a6#fS8XHG5t3&{A&otWZky6fE=pJ!!`3{lMN4S&Sx_Io*% !4uXY @ja&Kg|yIJSmP+%s{xy*<{ z2tGe4tKHaJg*|p5-i>0^O_y=_@Nh_NsBd;PNrt;Xg=;~Gbr%9|F*|pL91H|)otX7- zpu|>ktY(eKkIq#vESK*D^!R!-g(YP0;4iI$nF+Z>Wk1v9OoFH0i1?{<#G2ftk3D?d z^TYO$bLqsEitM!P`c6&NnrR77om%}rw6;pQHZSKwmU5_#>|_1wp!By(s`RS7`hE7b zn`k9)(+`_!sc$v>1+2$57rs?@E7(!$Ozk#8mLD?5gt1SEAxARM3c#^?QruW9tA&q7 z@P5$Pb_nKV^+MuT;W<%&v*28tmz}p=0AE|pPqB-jP;=Q;>K+wm2X*@q8>w5L+9lLo ztp|Y$R-j;rxnR-${ !7dR*JP<51?tU%@z-Tp20xH8J|>ECLUmZu41f2NcXGfp1L-L9Z{uN3vckx1tv=* zlbE0li%$H-tJ~x(`I)1wxNYRXIos>F&SnV?wW32&msvW}REB4JW;Bu )kxzr=|H9>x*$ #88f?JO9J pQ1)P==*G552H9BVPt&E=7lKSiL&WI{~k_Yz8f( z@K$ypBzyXs{_iCquvYiQaF@J##1F)p0ba*9H!K)|5@l1b?er>RAG#z|sQCJ?|3a}S zN8CUa99pZ?T?pn(t^%b7eAv5^FpV<`(PXg!V6Oe=Xl({qJUj|9 uGkLyu<86*Ai8>76;(V~5*O-SWj+WgggxOh;1j2p}ptxvyeo5AmFQP`MU`9{Q z^1N^8GOFve9pd7CPIB!BA(>@nzZ|jDH~`T}yfg+#Z58vvA1Y!7Tfh|s&QoT!C=_G+ z^L2hQ(c-$)C2a@CXJb49W-!2znixdk>RqPBXT46pb)T3H>NS9b@xD?c;Tcwd86*2z z(-<Sq+Q`Rxep%6B0*g@yHg9qZDbA_1*P6T5a-f+#-(J(2KEpsfm4&)EHZ}pT-Dr z*}noJR~1C41_Q2!Omxx(j(ce)p781=h0wdnbN2=11= t2Qn%6H%)-n+dSE(YTQnU|!w;eWJvZfj e}5(QrA!lu90NIXVqE)R3Be+V`tgN(RmN&+oj3)^6U#@4|A zZ~~b82j(AX$0U(K;(4pik}OghY---ipV-H)3$KUwQ9kjgVCPfsc66KH+I_0}>GY=- zKKoVP2VY4i4r?o&HVRT21X(nmf*ndk-M`fwonC6zJJNZYj?;b1|9VRy;J@$>IPDop z#C&zomD!=xcQtEtp1-z&2n-=e75V3!`Y*hOU!I``gLjKRqOdjcXDN?cu_FTm7qb=O zQN~e*cZ1HjbDFX07N;Rbw&~>&Dosk)Pp*J(cW8S}Ugt6+AA$t^ouU=%vPn&3<)4LZ z$RXkBw3OqpB6?il*#EPrRf0WA*yYy+`5@XgZMq(!Cl~qA(RP-e`?VMSIZ`e&;92MH z?|+*_oXBIRJkaaMC^H8ynToqszZ?F`|LyS%^s;Y3@P`ld>le*W&m`;6m&4Ormzz6S z=E0rqwqib`x`QvoffK9%b^!8ytY)?RF6u37y{RQ=l|Tv8n5xb{25+EvJqK7q)ui_s zw #om=gr9AB2Nv9yJg-Dx7CqVz1KN)h&oLf+GKlPmZ=JPWC;9*& z&23no>DqP^A*;)A^b(q33nhpSL@^=L`*SX3XJGgGy#$iv)&Km16;QS1acZtXL@Mo- zrFIoEh`B$FtF~=EYqNTl=FM)u&t^8iM`tF9ho@IDM1|_wSx*T}%ez(Y??s@^T0NKZ z{FvphJ6I*`U^)@zwI)R1_7#;4-^enS{{#{X<4{Py!o4dd7>qpQJdy-O&>NnbI|(8C zNm6Ot#agnVK4mC9OVyQm-vKnPe*XRt$B}X-^kt@L?Vy{n82HQzq^=f5*@xtda;JS= z^5>UrM<>nQ{9c@V1@Ug~LwDA~BCOZPH1z^xtGA9T%*~{{R{j>Y?LU9ay8EM7>2oKF z79hQ-%|`4FG)IwEccuC9P$4)8-t;A2$dMZA=p6i~7dA9LEp)pWf|mty@P>x8rpGN8 z9Ytr`EzaV9qAoF}mo+)l4OKOF_lIN9B7@$l>OGRP?y_?uq(XtY@|e!)vjlng=?0{) z7Swz%Lo;u3a%GFh{Nz`vZTj?|`u|#D8Td9hxJ$FCy%?kFGVE3L2?{YgL<$roZ_by0 z-9DANN*^F$y^TpEy}ApcR|Q9qR{;DZC<5su(|@%?;B;SNe=kXE5NAVQG PPI_b`w}JAKMS=+p2!NY`4zOa16#v z(%m86h!oKhEw;ASon (eh zZ5ivP6cA~{)B)YdRDr)bS1{yEi+{jt4jgEwdg=e|uB$psTh+Q0 zx;&9=J5Xy!JhOANuR^~N_piIYL)TR}>pbI(5(vK7ilD`QM4v &*UT{cYL(@dEW8&+Yeh$-WRn5wct7 z9ADNdvW!`8fiqLA#qQwqp%ATkfODRM8yQc64>%}ep#k3GSKW?eo<|)vRy+|vsEGqK z^m+hBPdLDIkGAUMqozVk!_Pt$#F-Bh`@YKPOL&%6z`#_JK=GD4ql1LwY(Y2eJzbN- z0u{+ B?0)iGl4Lq&at*^QuFeh|kBX5bDA z#(2m#eLn2`B`2rt#rfHw3qQT!^f=)K_uX!(KB>OVHUGN-?bNG?E~&-aCK3yf`_I&n z=%*V;=3&;6Zr)_|)!lTfnQnq2T$(g}y`d- b?b=9QD~dJ%(R zHk`XdiX)&`K+t<7(jaBylfO=X$k4IzQK!CCqM()3pbKL#2k94Qz{EH>l-zuMRkf+Q zk@#LZdo9VbbyDvW N$1CHG=V_2%Mh6wd$$BLnE8Q zmzuBN{OrRtTg0e48EW#l3#BegJ(S;__IL1+S0PaZq(3mDbJi)dD2wdbtKyu!zj0jQ z34Y;CO7oJcsJ+0tH~<>=AHPxx^EEQcoj{Xbv3G9x$N4o{m`1-SP@{q%RHQbWzecCZ zLAlvwMC`fKY^pSq(03WG>bm&%-q`59u8eB=4`}UzW_+oJGWC*l3CV(5@w^biJX;Sm zV%phBz}?M}if^%cKj^smM!LSJik4Qf*SMEV)lhbnm!tS>4MX0#XXMmY@9bo)4~kA= z4WE+9TeQ2YO5DLAE*lYiNorHM;kjQp`m r|tJ39#D zO_dnii9m^L?(qwaHjo!?wCPzM7&V?votbuIFZu5|ur9 &oP4@m2TB>IA8}m8zcToo=^j ziHySO;}j*U$oO4DHJhm6?d^)m`1E>)!R3QAJFT^E#e@lkK0*&;{P}mY*WcE5mzRA< zW6vawyd7(<_mGcnc`5Z&ZkxY}jEnzVsq)d@+i_-mvM2guJBCjbE 93;NW19?C3UTm=qoS zyVhsUB!+6DMv$5=6OmwhS?>2p$NJB)o=Kh|H+Hx{eSf+q*)DynPUC;*de5k)x-M!o zAc!CW0g)ntL<9w-2-2$r6)6E}(tGb9y($QyiNZtg9jVfLlP1!nL+CXSI-x_tJ@I+p z_ulW0@%b0W$T@qjHP@VTt-ViW{pptD?ymRiXwS9ZYq8fClh|Qc|0{Dg#f!n?7;z>+ z`zqbWg#|CvS*UzEcErHb0c~-8(X&3Y(2`f?Yp28A{9%e5Q^hj3oK6a4c{ZlPE~RfI ziv9i#@uFsOgArFE!;vI_S_Ry>0jeYVOWCOdbfVWgW*`sRtm=%Km^XL!Yw`=LD}!Bl z(6RRZ_<7}n+Nvj%qBg6m5iX&;R)udgxN7^7g1Os7F8n@bXj?Su*BKtIaSzRVth-qF zUmN)EY|`lanqev;@0GD^79(~F7RaxiWxnx$De-DfGcB>IGFPk|KO|hvgp|6p4A;-> zB(2Zt9v!Z6gqP`IEZa>9ryWaB$KHWx?^6!Y-g&dP|3dHY?q{PZ20U+7M pg+H7T#~o?khf)GpL~}s->cT`f|8y z>T3LHZ1p!_g`5V0RkAZ#6#U&-b%{nY*MOsjl~J3){@l&p&&mY=*TimbyI|b9x4!vt zoPKL9GKsG1n^Q@i%IqKeR<==uj)~%^+MM}l3v#S!Y^$W{Je6i*-XGbs(|XBqovG2# z=#aFtW7m8TEb8p984$)y6k8Kyrc~Qo0Stidxe-s_2Y|T)0OlKR{U8PboU~3!uE2NH zd3{7`xN!cwl$0(>e0G1@t$s3Xu=!W*aybn=yGSG%#s-_l!mwi~hwFAG-7`VWvXsWk z29X)X(I<+kRIk5 D8sLVdgnJS1=j=7RX|F4G)0WF}l)qM22xvr`A`P_@9gUv9 zJ#Bd>>aoV9uMzF4F>ziy{rH(8mE3pwNTI8}+3KO(3MUpSt?B*e->)lkFxWXs81|Z8 z;2i>{z%6IHfUw+}LTsn&V>V{@uFwmuU$IB9vd!804zZ3zGN3wqxYeh6LD$v+yk((b z8X#SXJ^+wyi?dl?Ytg(^^}E47VMt~Dk6vx@sNhW3eHd~NXtJ}x=$~=xRG&Ctos)Y^ zXk=BaP507lY8Nz(-}TZ8=Q>ZwmX2C&sHR(6n($3mzJ26eS*cN?v2FS&-j^jtVn0Ki zO{+^KXQju)_qgb?%-LPD!B2cVS6+#R`}uQ E@ zCVMf9L~L55X$_;w&pSJv#&}-U!|utUUaOc22o9aBSh89RD3 Mqf~{Og-A=`Kz}h zElH_)n+T8Y)G4tozw`K97P*LNbZNB9;0O1{h7X&;`W^=+=nL{juk*E_mpplIvVr9} ztdL9h^V&=X#?`3eEiB?wt0xlFc6VE=h-mcp3|N$y&ak^inoCPA0dpA1QeFYULr<~K z#wI0{Cfh_D@_qgns3Mrp$$9HZsh)OAc1I!z{Q2@);@Xzy_?L7{zx2umzP;s-_%^^= zD9qSoF{!(US0Dt0J{c8m+CfD?hkHxP((-88p=MHZozBYJ_dtHacMXZ0b&)JTUlDaz z^1-adOP)`JFp1a1 *-uA z5H8n;Itv%u cwHjL)I=fEn*N)9##WG9-^*QCyyp3&b*)*l z_x*|4IqP?YZz?3~uIASluJ^F*L$1b+v8)*WO*U@{hwNeJ0hapXBNL1HvuzmmDA}Ur z%0+XawiWXc+r>0Lk&c!7ZD2R1>-x%QaDeU^XVtvdX=<0LQD&@&g%>6bqO)g}I+*)B zZ&orera!e{y5VTJ`g6{x)pUJ*$F{i*U|Qxq5Vjl aoM7Sxloghs`k_;5_ zD4Y!#w`B)TzAW-o TP~Sl{*wn@dv84a4i27&uP1psFNoxXOD}@u**L~(l6v` z{4TGtfvs0G+`fB9ue(d<-i&-M7!SL|>_7dvZpff>>?Pi-J!(IIFfUpYH3=5rPDT6A z+Sl47xwu45E?gTPFUOK=?$(@su0(lZ<`-uhfadb))qHd7o+)+LvzfGXLAj(P^QPMU zXgi<0R~1U@US*<})tUw(_vuz_88~*_Pn#T~^Q=W(TMtG~2cL*}E(UleMGclNrNg{ur{8yDv zktq#xyUm1-7O|}FipHPM?dUc7ZpB$K*wbY{wF>taNzh)+kV9rHMR+TXyldZP*okTP z{7NWA-HG!^Zql%Wgg5~hE6BFJ(p4St@zD7|@PXY*)4TCeSn7?d?aEgM=jZhtFmc}{ zO@GX!|9Y|m=IoPbi|~SA*oZ!itKyYYN0ic? y;#Uy=km*60D>HPyDk%AHSrUCT_8alW3RTrynGFo3-0wjhUtqTyMH_g( zL|DDZeqvuRxz}5jB$F-?n>4VIHyXOtJip%Pk1bK%Yr#xx`(sbBX##GohkBLOuJYV1 zzoxhxxiu$pN9I~}ChFCk?mks~Cmhc%r~2YPQE0Gtcw@&Tp #1+#w@Bk@U9fwdiNjflRPBuV2+TA>g`w-xuY_u1G5t>7JzVHMxfD7lThycW zZgXOwV*ngz(n(>E;V1|M1#r^qw?Mjf^u3=mz$AKZ8s7F`TDX_wxhk6 WO$mLZ_x;gm{_&HO`7(#I z{-vcT8d(jDe%6z)aa(~7*ZzI?n?eMu8NXLEmiPkto`5Xqns8Hxh1ric?*W~i-+x7p zBLT?uZm$Dyac2ttk5$3WlrT5!+Y!DY`qQpfvD1=CebLip@)rL=`?M5I$#UoK+cFXr zu1lOvKpES`Q(D*k;}<>EjX+(w>-( 2{r~ zuUzYS^jd?<^;GxqZnFXzgO1*KzXH-;Wt_%{a<0WyUS~$<(x-{Y|H!^J|MO?hXIxxC z_M&Vy_gj9gq?GE`S0FJ=8lal)v%z(9RX#pGZSABoL~Q_>p#qz;a;&qm#LT@1fnT|S zmlVStC>j4_L<~|(1 gXzs~6!u5*I=GJK!NjXijx`N1+mVTh zcTDW6YPUFj7xOEWPNyHvUAHz~Uy_&UHk=*@L?!Q`yr(8b4+TfGg-x=O<-_m$U;V6= zjPY5fD$>?_OdhDK{#%mg5prbz_ux#mJ9qq`uwJX5jNFK3(fB(C$) Z@<7}I^ zW@amSDF^Y($xI6q1Ie{!yZT9c*KhY)uBch9I~yvSOJ;Ot-bSh~N4(P#rrK&IpN}t| zMn7joprao&rIf#2HH8#GzuVi*ky$Xzh;Q)#Qz^WuzogasrDd5u^tXHz0GMB0@Gu_W z^O*zCt&VF!c0h5~w^=gG%vLN`n0`n{mp>^vx&G{ArpV1GGX|&^*OK0+6Zd=L) x)efW7OxYZlIZuX1lk-tyB928Y#bUi;BOaU=24iP_XJNacETu6fU zXA6A|$73e&*pswMFQi!CvJN}*@?E9{2QD!;vO(UAk}?NH#{PoApJiA{@{*yn8L9?y zmEs&abz6vI;2Yl`?BAtOndHS&fHu~9lyJ``fLOC6oC{_K%sgg0Rdw)y&(?xcZan#s zOBogAuplR#T%VAWb?@t$=?+BzyV?MK(x*bsWK@-zO(R5*&1zz@s(7-qqx)EpX2A`O zr25uH@3p)>6IK`?T;~}Y*(Q*}&L@*(##7nQwSCc9CTvMiAr`+}=orr=@n-Od`&e_2 zvMsP3B&*Wak8 6yy3C8Zu0e&Y#I`MGLT*|Z=b~SCgyG)3GxB|D>&_;n5 hv&Gc;smD9?(lCtq2x!Ed#?^w1X}At7&~tG7z8U25Cqk35o8l$ug!N{$c!zntm &;f( zGuC^swtIh|W8WmjZo >dWC8YU- zcx-I1g@kD5(3qBg44vfke31+a)OoJP^_=pgH*Z|EGx@bn!y0{4bm_Ub-b!d)7;MQm zyPH2SWDT%t 8c~OXJ63bBDjtEIo%ge8ySr5g(4Y@BNB9V7p=Xj zo#y(EOXAHwXJ^YWFfk42)QM }{G KHpgvVaqd zuFy{DF!(K7JVhvGTuJ1CaXHz(z_w4xLq3^XVBU$)JEv`{L5Z1#Kd%<#mchnSx0cdu z9P~9m2e6OLy^-~4<}!$Yx9@+QqXOqx1ylU&CSic+_YCW;%%;_TLE40*9bYCp{jrCg z$JLCMUVHyod!GW|DEBaV06tibg5OdAQK|S>6EC{mF>GI%k&+B;Hw?&nvOey-`!OaK zfROn{PiJU0WC-m!^AjeQlq2_vU(Tq|abDUa2+lmD`j6RphMl_lXLbVkt-}-!@;~}p zYo;-9nIu-_F}Wy#^JPc*+v_Jbn*I-72BEV0(h}P*3GD55<{Cp>im#fIO0Im=)hUpf z<$jDv@e!7fDC_Y $&e|&71G0ig@WN+@9q~ zCL}EUv%P&IEtWgHL?nKUm qMK$kWDjwRD<{(G^j5>q|-B5c8}&GpKR9 zo5G#bJlsdH55OXCvSK`Co09}jX;W%)n1NNxFlzuzNy*X8?WPm4`8cUuwBhsmpCRN- zJc$bHy-}AWyvv4S-N0%EXR9=G7Z$v1>oWaxx;HPao@u^sk3M6D6ugv5Vo4Zy>*I9t z$pr+3!JYoZ^hnQydCw5+JBukn#|Uqv;X_c*^{>Fgr9Xfga`D?p#cqEJWpIN6Pi??r zXMTxmC)!qmHbcpa<$I$>wL4#{v-J$|kQutSZylXq<@Oli(p)T1S63&M#QJ80Ad}=x zlC`j&cX;idr$v#0|JgoXV7sAy7jWo)^RAiJpw178CqjypcV$0rerR|DN;YzHeF4LU z-5MdP3LQvdIa*tLtn`I^YoZj$!LdgXfi)hGc$4{_`Ln6{uZaQAGC~VPaphcTrHkpm zWuS$wgORUtLPG)y;sYT;B-=cAO(LFk7gZO(s!kxAhkrVThZ>>}^NYJ)k5M&m7r)cY z7Y4bi+a 7owl6oM%) z2$pZh Cw-LdcSBFn8bg!aAI d=M=-+LJfr&mgg={e^mf$C~oPWax0p@9oTpNZqLiHPBtOhDBk1&MxO{- zm6uQ+2GWNR-5Uw;G!up@Ml=>2KqbcIIa3obDEtMi5<==p0x#&J