From 51992dd437d90321877d11b4f8ee1a497a2c3800 Mon Sep 17 00:00:00 2001 From: Sebastian Palencsar Date: Wed, 20 May 2026 10:47:56 +0200 Subject: [PATCH] Prepare BearWave for public repository --- .github/ISSUE_TEMPLATE/bug_report.md | 36 + .github/ISSUE_TEMPLATE/config.yml | 1 + .github/ISSUE_TEMPLATE/feature_request.md | 23 + .github/workflows/build.yml | 40 + .gitignore | 38 + CMakeLists.txt | 35 + CONTRIBUTING.md | 68 ++ LICENSE | 21 + PKGBUILD | 30 + README.md | 255 ++++++ bearwave.png | Bin 0 -> 257873 bytes github.png | Bin 0 -> 30650 bytes github.svg | 1 + globe.png | Bin 0 -> 35569 bytes globe.svg | 1 + linkedin.png | Bin 0 -> 27741 bytes linkedin.svg | 1 + org.kde.bearwave.desktop.in | 11 + plasmoid-bearwave/contents/ui/main.qml | 106 +++ plasmoid-bearwave/metadata.json | 18 + src/CMakeLists.txt | 36 + src/bearplayer.cpp | 191 +++++ src/bearplayer.h | 69 ++ src/bearwavecontroladaptor.cpp | 68 ++ src/bearwavecontroladaptor.h | 36 + src/coverartfetcher.cpp | 82 ++ src/coverartfetcher.h | 28 + src/main.cpp | 55 ++ src/mprisadaptor.cpp | 320 ++++++++ src/mprisadaptor.h | 104 +++ src/qml.qrc | 9 + src/qml/Main.qml | 938 ++++++++++++++++++++++ src/radiobackend.cpp | 668 +++++++++++++++ src/radiobackend.h | 108 +++ src/radiobrowser.cpp | 153 ++++ src/radiobrowser.h | 41 + src/radiostation.cpp | 162 ++++ src/radiostation.h | 89 ++ 38 files changed, 3842 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 PKGBUILD create mode 100644 README.md create mode 100755 bearwave.png create mode 100755 github.png create mode 100755 github.svg create mode 100755 globe.png create mode 100755 globe.svg create mode 100755 linkedin.png create mode 100755 linkedin.svg create mode 100644 org.kde.bearwave.desktop.in create mode 100644 plasmoid-bearwave/contents/ui/main.qml create mode 100644 plasmoid-bearwave/metadata.json create mode 100644 src/CMakeLists.txt create mode 100644 src/bearplayer.cpp create mode 100644 src/bearplayer.h create mode 100644 src/bearwavecontroladaptor.cpp create mode 100644 src/bearwavecontroladaptor.h create mode 100644 src/coverartfetcher.cpp create mode 100644 src/coverartfetcher.h create mode 100644 src/main.cpp create mode 100644 src/mprisadaptor.cpp create mode 100644 src/mprisadaptor.h create mode 100644 src/qml.qrc create mode 100644 src/qml/Main.qml create mode 100644 src/radiobackend.cpp create mode 100644 src/radiobackend.h create mode 100644 src/radiobrowser.cpp create mode 100644 src/radiobrowser.h create mode 100644 src/radiostation.cpp create mode 100644 src/radiostation.h diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..8cef1af --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,36 @@ +--- +name: Bug report +about: Report a crash, regression, playback problem, or packaging issue +title: "[Bug] " +labels: bug +assignees: "" +--- + +## Summary + +Describe the problem clearly. + +## Steps to Reproduce + +1. +2. +3. + +## Expected Behavior + +What should have happened? + +## Actual Behavior + +What happened instead? + +## Environment + +- Distro: +- Plasma version: +- Qt / KF version if known: +- Install method: source / PKGBUILD / local install + +## Logs or Screenshots + +Add terminal output, screenshots, or error dialogs if available. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..0086358 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..c484d9b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature request +about: Suggest a focused improvement for BearWave +title: "[Feature] " +labels: enhancement +assignees: "" +--- + +## Goal + +What problem should this solve for the user? + +## Proposed Change + +Describe the feature or improvement. + +## Why It Fits BearWave + +Explain why this belongs in a KDE-focused, dependency-conservative radio app. + +## Alternatives Considered + +List simpler or existing alternatives if applicable. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..dd3632a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +name: Build + +on: + push: + branches: + - main + - master + pull_request: + +jobs: + linux-build: + runs-on: ubuntu-24.04 + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + cmake \ + ninja-build \ + pkg-config \ + qt6-base-dev \ + qt6-declarative-dev \ + qt6-tools-dev-tools \ + libkf6coreaddons-dev \ + libkf6i18n-dev \ + libkf6kirigami-dev \ + phonon4qt6-dev + + - name: Configure + run: cmake -S . -B build-ci -GNinja -DCMAKE_BUILD_TYPE=Release + + - name: Build + run: cmake --build build-ci + + - name: Lint QML + run: qmllint src/qml/Main.qml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8fce981 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +## Local agent/contributor notes (not for GitHub) +AGENTS.md + +## Build directories +build/ +build-ci/ +cmake-build-*/ + +## CMake artifacts +CMakeCache.txt +CMakeFiles/ +cmake_install.cmake +compile_commands.json +CTestTestfile.cmake +install_manifest.txt +Makefile + +## Qt autogen artifacts +*.autogen/ + +## Editor / IDE +.idea/ +.vscode/ +.clangd +*.swp +*.swo + +## Runtime files +*.log + +## Local caches / user state +.cache/ + +## Installed or generated desktop files +org.kde.bearwave.desktop + +## OS noise +.DS_Store diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..00b4a15 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.16) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +project(bearwave VERSION 1.0.0 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +# Qt6 +find_package(Qt6 REQUIRED COMPONENTS Core DBus Quick QuickControls2 Widgets) + +# KDE Frameworks +find_package(KF6Kirigami REQUIRED) +find_package(KF6I18n REQUIRED) +find_package(KF6CoreAddons REQUIRED) + +# Phonon (Qt6) +find_package(Phonon4Qt6 REQUIRED) + +# Add src directory +add_subdirectory(src) + +# Configure and install desktop file with correct binary path +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.bearwave.desktop.in + ${CMAKE_CURRENT_BINARY_DIR}/org.kde.bearwave.desktop + @ONLY +) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.bearwave.desktop DESTINATION share/applications) + +# Install app icon +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/bearwave.png DESTINATION share/icons/hicolor/256x256/apps RENAME org.kde.bearwave.png) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ea7d6a1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,68 @@ +# Contributing to BearWave + +BearWave is a KDE-focused desktop internet radio app built with C++/Qt 6, QML, KDE Frameworks, and Phonon. + +The project favors: + +- stability over feature churn +- minimal dependencies +- readable, conservative code +- Plasma-friendly desktop behavior + +## Before You Contribute + +- Check existing issues before opening a new one. +- Prefer focused pull requests over broad refactors. +- Keep behavior predictable for desktop users. +- Avoid adding dependencies unless there is a clear payoff. + +## Local Setup + +Build from the repository root: + +```bash +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build -j"$(nproc)" +``` + +Optional local install: + +```bash +cmake --install build --prefix "$HOME/.local" +``` + +If you changed QML: + +```bash +qmllint src/qml/Main.qml +``` + +## Change Guidelines + +- Follow the existing style in each file. +- Keep changes minimal and scoped. +- Do not block the UI thread. +- Keep network operations asynchronous. +- Preserve MPRIS behavior and user state compatibility. +- When changing resources, register them in `src/qml.qrc`. + +## Manual Checks + +Please smoke-test the area you changed when possible: + +- app launches successfully +- station list loads +- search and filtering behave correctly +- play/pause/stop work +- favorites persist across restart +- resume restores last station and volume +- tray and MPRIS behavior still work + +## Pull Requests + +Useful pull requests usually include: + +- a short description of the user-visible change +- any relevant screenshots for UI changes +- exact verification commands that were run +- known limitations or follow-up work diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2c40287 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Sebastian Palencsar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..94edfd8 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,30 @@ +pkgname=bearwave-git +pkgver=1.0.0 +pkgrel=1 +pkgdesc="A KDE-focused desktop internet radio app" +arch=('x86_64') +url="https://github.com/bearwave/bearwave" # Replace with actual URL if different +license=('MIT') +depends=('qt6-base' 'qt6-declarative' 'kirigami' 'ki18n' 'kcoreaddons' 'phonon-qt6') +makedepends=('cmake' 'extra-cmake-modules' 'git') +provides=('bearwave') +conflicts=('bearwave') +source=("git+file://${PWD}") +md5sums=('SKIP') + +pkgver() { + cd "${srcdir}/${pkgname%-git}" + printf "1.0.0.r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +build() { + cmake -B build -S "${pkgname%-git}" \ + -DCMAKE_BUILD_TYPE='Release' \ + -DCMAKE_INSTALL_PREFIX='/usr' + cmake --build build -j"$(nproc)" +} + +package() { + DESTDIR="$pkgdir" cmake --install build + install -Dm644 "${pkgname%-git}/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b92811 --- /dev/null +++ b/README.md @@ -0,0 +1,255 @@ +# BearWave + +BearWave is a desktop internet radio player for KDE Plasma, built with C++/Qt 6, QML, KDE Frameworks, and Phonon. + +It is designed for fast station browsing, simple playback controls, and good integration into the Plasma desktop experience. + +BearWave currently targets Linux desktop environments, with KDE Plasma as the primary focus. + +## Highlights + +- Internet radio via the Radio Browser API (with ultra-fast local JSON caching) +- Station pages for Top, Germany, Netherlands, and global/genre filters +- Real-time local search and filtering (name, genre, country) +- Sorting (name, bitrate, votes) +- Favorites with persistent local storage +- Manual station add +- Playback controls and metadata display (title/artist when available) +- Resume support for last station and volume +- MPRIS integration (Plasma media controls, media keys, media applets with cover art fallback) +- System Tray integration for seamless background playback +- About dialog with project links and embedded MIT license text + +## Project Status + +BearWave is usable and actively evolving, but still early-stage software. + +Current priorities: + +- stability in normal playback flows +- predictable KDE/Plasma integration +- conservative packaging and installation behavior +- keeping the codebase small and maintainable + +## Tech Stack + +- **Language:** C++ +- **UI:** QML (`QtQuick`, `QtQuick.Controls`, `QtQuick.Layouts`) +- **Frameworks:** Qt 6, KDE Frameworks 6 (Kirigami where available) +- **Audio:** Phonon4Qt6 backend (e.g. VLC backend) +- **Networking:** `QNetworkAccessManager` against Radio Browser +- **Build system:** CMake + +## Project Layout + +```text +bearwave/ + CMakeLists.txt + LICENSE + README.md + org.kde.bearwave.desktop.in + src/ + main.cpp + radiobackend.* + radiobrowser.* + radiostation.* + bearplayer.* + mprisadaptor.* + bearwavecontroladaptor.* + qml/Main.qml + qml.qrc +``` + +## Runtime Requirements + +- Linux desktop session (KDE Plasma recommended) +- Qt 6 runtime libraries +- Phonon4Qt6 + a Phonon backend (VLC backend recommended) +- Network access to Radio Browser instances + +## Dependencies + +### Arch Linux + +```bash +sudo pacman -S cmake extra-cmake-modules qt6-base qt6-declarative qt6-quickcontrols2 \ + kirigami phonon-qt6 phonon-qt6-vlc vlc +``` + +### KDE Neon / Ubuntu-based + +```bash +sudo apt install cmake ninja-build qt6-base-dev qt6-declarative-dev qt6-tools-dev \ + libkf6kirigami-dev libkf6i18n-dev libkf6coreaddons-dev phonon4qt6-dev +``` + +Note: exact package names can vary between distro releases. + +## Build + +From the repository root: + +```bash +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build -j"$(nproc)" +``` + +If you want a clean rebuild: + +```bash +rm -rf build +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build -j"$(nproc)" +``` + +## Arch Linux (PKGBUILD) + +For a clean, system-wide installation on Arch Linux, use the included `PKGBUILD`: + +```bash +makepkg -si +``` +This will automatically resolve dependencies, compile BearWave, and install it via pacman (`bearwave-git`). + +## Install (User-local) + +```bash +cmake --install build --prefix "$HOME/.local" +update-desktop-database "$HOME/.local/share/applications" +kbuildsycoca6 +``` + +This installs: + +- Binary: `~/.local/bin/bearwave` +- Desktop file: `~/.local/share/applications/org.kde.bearwave.desktop` +- Icon: `~/.local/share/icons/hicolor/256x256/apps/org.kde.bearwave.png` + +Note: the generated desktop file uses the install prefix chosen during `cmake --install`. + +## Run + +- From launcher/menu: search for **BearWave** +- Or terminal: + +```bash +~/.local/bin/bearwave +``` + +## Usage Guide + +### Basic Flow + +1. Open a station page (Top/DE/NL/Favorites or quick filters) +2. Pick a station and press play +3. Add favorites for quick access +4. Use Resume to continue from last session + +### Keyboard Shortcuts + +- `Space`: Play/Pause +- `Ctrl+F`: Focus search field + +### Sorting + +Use the sort controls to reorder station lists by: + +- Name (A-Z) +- Bitrate +- Votes + +## Data and Persistence + +BearWave stores user state under: + +- Favorites: `~/.config/bearwave/favorites.json` +- Last station + volume: `~/.config/bearwave/state.json` +- API Cache (RadioBrowser): `~/.cache/bearwave/api_cache/` + +If these files are removed, app state resets to defaults or performs a fresh API sync. + +## Plasma Integration + +BearWave exposes playback through MPRIS, so it works with: + +- Plasma media applets/widgets +- Global media key handling +- External MPRIS-capable controllers + +## Autostart (Optional) + +Enable autostart: + +```bash +mkdir -p "$HOME/.config/autostart" +cp "$HOME/.local/share/applications/org.kde.bearwave.desktop" "$HOME/.config/autostart/" +``` + +Disable autostart: + +```bash +rm -f "$HOME/.config/autostart/org.kde.bearwave.desktop" +``` + +## Troubleshooting + +### No audio playback + +- Ensure `phonon-qt6` and `phonon-qt6-vlc` (or equivalent) are installed +- Ensure `vlc` is installed +- Test another station URL (some streams go offline) + +### App icon/menu entry not updating + +- Re-run: + +```bash +update-desktop-database "$HOME/.local/share/applications" +kbuildsycoca6 +``` + +- Log out/in if desktop cache is stale + +### Station list empty or slow + +- Verify internet connectivity +- Radio Browser endpoint may be rate-limited temporarily +- Try another station category/filter + +## Contributing + +Issues and focused pull requests are welcome. + +Before opening a larger change, it is worth checking whether it matches the project direction: + +- KDE-first desktop behavior +- no unnecessary dependencies +- small, maintainable changes +- stability before feature breadth + +See [CONTRIBUTING.md](CONTRIBUTING.md) for local build and review expectations. + +## Release Notes + +For an initial public repository, the recommended install paths are: + +- build from source +- user-local install via CMake +- Arch Linux via the included `PKGBUILD` + +If broader distribution is added later, Flatpak or AppImage would be reasonable follow-ups. + +## Development Notes + +- Main UI: `src/qml/Main.qml` +- Backend orchestration: `src/radiobackend.cpp` +- Stream playback: `src/bearplayer.cpp` +- API layer: `src/radiobrowser.cpp` +- MPRIS adapter: `src/mprisadaptor.cpp` + +For contributor/agent workflow and guardrails, see `AGENTS.md`. + +## License + +This project is licensed under the MIT License. +See `LICENSE` for full text. diff --git a/bearwave.png b/bearwave.png new file mode 100755 index 0000000000000000000000000000000000000000..15b1335b5b36b7415b98effc13bec5a2222b2f10 GIT binary patch literal 257873 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ⅈTjiohE<_=4iSqLL$3pZ!D`D~X57?cZnNQa$fE z4osq;PZ;c&5@c&CGA7KM z=8zRdyjQaLw-sL{4I94@N8&BWE}%FCw&3 z6jWLR8~YbcC&Ka3nh$^IF`j<9#mX^gM`{@&T3f$0L|ZGDdJJQ)e7x^Yzrqwn+Mf#W z(3nZ5)wPWghPB~azop^b@00v$B(3n{?wPKf6vM)u@Mw9RjFX&bZf1Y?P!*x#tR;P0G&j& zIPs(`(9zVyaVAfYoTZsPxvjMwXP}O2&QdMTcw`Q%@LnFl;jqAw0HCXve}s%`UdJ{H(sjF+GjU_%sVs zp{ilS00Ny3G-kpIWulIE=vh*EU&6?1+L#eB>1ZjFu&)GownmEppV;8RG z>Wd-ZW6En5XcE%OlZTqyoI*i zpxPn$m}%!iZI<_lFJMiMsbpDGKUXCT@)nnzw@|W#lZU8TDknzqS}lt&KvC*QdU4-!Xr9BuA3`cNpfsqyqY%&9XY#EjpPl$}V~7vf9Ixk{X9#juv(Ia>+L^(WdhQDKJ} zu)}7#`P#R<{$Jg!#X@z0KcxU}XusT9w|UAO@R}TQ#VmMOrZmwT>hVl5AzLKt_r!KA zNJYirtKeXLkdL%u9gD0Snp;Si${LfpFm?nmCu^YA+FQa-qSaWvE)H|PFx=#2cZY$V z_sA8_GovF|X(!roq#JsM7^I8o*}##mnM+HL=WVjjE-u8Jl2FNLO~UZQ#vjw@NQ54$ zLFHsO!Ai&|8(d(pP8n}W2#8l~ly>#Ta6bHItwoF?Ca9u*2(1S4fy--9;IUM!sfkht z58|={L!gPVDxZoF6?W#Zzr*;mX`QnS)FPxs(b!&D$7iV$g|QH`_QWczKQ4M@wU;cQ zq=53@V`7FiF1DvormeDC_I&)~&+z{D?}FY%Sfe=-n&Nj+aB3x#C<>+s_+l;Bo@Jel zRg997rIi$Xo+w{ubtyPsykP5TrQ_Q^VmN=^gv`P0kp@-)B_%zi46&rRO*MDPE0WTL zF`dnnZcW0Hs(4OronAe5>PnhUN8O%Wedv$oQ#x{bwrH#-U1h+li>>Gb448;zHNuBB zW>$vUGE)zM)I>bZvXASbKDLjjY$AgTaY-!+B0*|}-}4IPgsq^Y)A~oeAwZBZ*iV!h zCa2{Wc(QDkB=VGx@;D~ec!I|$ST!^nvVeOZ(&+om8o%zCGv>!zFfT%!IG_o4oAr zu<)^Uj*RzN*<(GbLK|t}oZry9Rg8Z}45m(TPg%;*IGJM@BDFz>a+`HAB~r|@I(2z{ zwLTx|ePOOGYjqKIGQs%}IM0-YS?Givm8Jjrv;t*yD>)tnfqB)?9KI-r`gU`bH~b0r zwZp~!As%5SZEiPJBRw8p`AS<5P#QeSJzYlfL61@45{q0enLem_cv3xWt$b=FW#do! zSnWFni=;*PjDIm~JmA~x<9L(~&oUCrhN+CipJHe*3_3&}JY^;=Z{<8!nC7gMB)Dp) zK3K;!#Ymy`G2+>qMnwZ5+fG9O(VDRA-B1Z;P1c|m(rYT=lv1DtE*T2(S(Y)qv|&GU?46B9&r?sH|4rnpw+X}RL{xXepgjgMs9h3jQzc#<7dC1K?A zTo@>#tH zLo zNS%r%QDgRm_{;+svmP*Bec)&Av1H|46#tH0X%l)}O>j6U*32mVk_<=#(t@;zOb|1V zF6;LFir^Jm{u!_EhOTiad$QoI<`RPl&1^s;5=MTtn6MS~duwO>u+aA~Qaq zmvC%yur>u^$8#c)5a;x&49f z{X;F@2NGGya7hpptP;U()zR2B+1sp zKTw;OOL$EYD2blT5XTqxvvWZ)TN`3k*}#c6s3Wji-MFSNs+ka^`ebe^qrpQ8wN6Pv z6vlC>6?;k(hfpt8Tji1pwUbQnJSP{p$UG<>ALB5h0U3%4{aDsG31(oAr?*Nwo$wR~ zOjSS~ceUrUdV@7@CRLMn8azQ`CKxlREx$4sTYpQhGqDaT$a&?Mj?)`7p(tY;n~f2n#BuRJq655{lJKt=)@C%Eo|XO3_Rkt)g$Q?%Lt` zn%*S^_O7wd`F=)YTZ}QZ?F6IBj+rtuLHW#?@VXq)i)U9R%xGw7IAOyl%p*}8R|~6b z{UvO6A2V$mYjIw=ecZ9^%Q5MFvYdt0;By_trZ2oy$+}L8C&ewq7@oMakMTWtc>VU0 z&wt|<#xyzTeLQ$J71P! zJj(uxF(;+;oyrPEDa_oN%dNV0Ru;7|D8c1ahZJI9&@>wP}FPvt?3)31t>6s;hgoV7+)5R!LjrGPU{6p?$6c=#RG4Sd&kG(7gW zrSGH1EcG}d^NA)#@0u+kj$5LZj><;8tDxL^nJWdAFR;y?620?$eW?tG3hEgN>?(t< z5(gthB*jZj;8;uS6205d+DRCVtG54SjSGNwAg9UAJS-0^i!yM`(7qQHipH#o!)SQIYkJT?+6uCmZz z%miy@w06O)*<;b}uxNJJZFbmi&oD7lgaKk)U~9_8A-ov!@^GjGdiA)I-bxy-Y*w$^wATl{IYy*{b=KE`hnglM;k{s_?%*$ z9cmGBvvpPGZHr;+5LeIEi{Y??ue^SU7olw&vx#ta(bC!kD~6*%RAw&XaGlEHbH%^@A$mN2mOBMrAe8+tyDtzR#!IT^d%R7qQe@lqnHXV`;i}qUFtldE!tAnR_Si9JSjaw8nPH?2bxPV)`%P%Y za4v==S{hb3j@i^a9A#cAPRVixZb)Y~#QO z94~R7Rwi^2zH1_m8NL;iUlMvoTEMXG*Yv)p^Buk4upSO^ehsP8nQC%ITP`U&!)4j$ zeO%?9KVgQ!bUkL>GsPmRY+3x3_iz}ynsF>hI;8lXMY;ng#E&)halOeG{o zaRG^NV9A~|Da)?f-&T}~kkfMuj-EV%EVbg3ZnZkdz5u1AMJ~Kd%UU3na=zkyjNz0w zG`fEMPl<+m`MWh55*(~DZ37j`C%)rJu3cNvnAgA`1#(~S1J9jvA>%F=!q!fM7Tz`B z0cSM-Lvt^xF}61blQ?}HD1~78{di9wqoo_iAOHS_M;~n&hSb7JO4d_S_|`It>EyB3 z3c;Tq#3<#x$|4-klGi0=PKtA(xyFY$zO;9&1gP;XoaGThiv|ffvKW*Z zHlsF!hK7R;EjL-R#^LXXd)azJ#wCSukoL|%V6IR0^D}Tt+9kKCiI^D3* z6;3yCZIjg#_R$Uvmt>A3#JpCbtgHIc?X8*RYJR)kzk#JEh@o&Fk77l6PR`(L1M`MK zmY@52>^57!#>KOsKfq6VH{&I{d*L9um1mr zp3u_bfVr8`Vl%d!P))BZdUwQnxKFQZI=^Hy9I_dXSoZfBmvJc%n!wruGh%qFT;aTL zu~>Gb$u{GRhI_i9)t04p+-60O!>M9yi=9rQ1!UQX=Y3q}Y1w7t*0JDpoJC~}5vvYR zl6s%xPR@nRl!Dd?=4oQOHNdVloShiF_YB@KG zyK&QvA+#D=lqi_IM$24^v=G$*^@*^}8&(4I^#X4Ry?jG~>`BIzukKT}PNkq8uxDzE z_f1@~g4~G4SW?JhoX-q9iwPh9eOH(^H?XnH&tY|a@V!UF&EI{1 zKpy>dJa=`T!-(Y}-rx6u;o*;ea*kIbPh#*0Q?g6AZA@Iz%EKLbyU94&hGgXQ&qxq% zD}%IIlFL?vcs77^>zNZ2TJ;m#cuVio*tgGblqudJ0=MofhfAvKR5D2v51Rmc0e%C1@jkJZq|A(0x*Bi&Gq7JZXD zID+x33P-x)S-H$U3m7%|d(a*#f0LN(;IzZh(X+&{!NsPg8e6p1vphxEkp@MXV0n!b zR-Door}j%xQ1N`nG1>^I1|GzmI;bo>@zId)rsAF;p2S9eTq+w3R)k~g7n7) zv-t{*+`ck@NG_SV&dr3@ro4}k0GB{$zp*w=LGBuIJY@}@#v+p%d&yl#HB>e<+OQ*2 zYL@HJ<}P$=RP7kt3922c9b@M3Z7EXrR~eFE1ttRT! zAjLu9b&l}_D`FTnESE<)IYAMoBK$siBwKtbfS9s`$`KJJHnIT|luk0J2j}rFq=L^H zc>LTB2lEiC>AYvvI|d)=H)j9Jx<|%}FLz^(pw_GIpK6yv4+z+mflulFA%+5Gi1` z@N3=PqFYdzYzthlO-M6t8<Fcnsjep$q-L|!my(8>$z=qIMgt7M zSc5SJ?*?jRsj+S=mor3|NE(};H+!k64sZNKh_yL;kp$tTHBaC5RdR|3?=)qLmSXjk zE*|L9F3T>@a5fkY6b1_+7!*m*Sy7A%2RdVcc!3AJ9-x#yrR$@c-{}4F8y9yj$W#6dXSAX5$~9Tw5$;Fsy3uAnH9>E7 z62t2@OS}mX;GC8x*#|TaDCGIM2VCPp*OSwK&!$i+a1{=8%F~<;4COd(4=1PyzhZCk zbNVuGlWVN#P&^NDh6yI7Z^DEIs~Z0%Y_#V?T;efiaSCeqLvXIZ1M5BrxTYhDrtw&Ge6~-Ax#aZd zi$_otgw_STe!#q zVbG3^4$PR)>%e=>W0bnA@w7wo7`NACY^aZFvPQAdFvn+^aljl!n9Gd2Z1QUSj<3-{ zh!CYT!AlCQ06A|LK*J|^Or2?D=(?{R-@ktS)BM0G9dzms0(#-gfBD$i{gYh67GO#9zRG=;borgLOds$)|0dV256%|Z+35aht`tYl zu1?s~Dc%ZqS+UW9mpI~YyMN6e;8~_VF!fptb6Q%{Flic$YD7f?tGNJ!D(AJ~{c;|3 zC~2Tno4OLLiR55#HGUli=sX;5JYEBR{lrQjKuq-(zHq7upF|iPJ5hq8Vuhd53!HZNRuf?(9@&xK-UM(tBDP;l~Sy&0B^)i;z6}= z-Ib&uVb%y|=QjSaQV3Bfi7HMEudg=*ehp=)k`0Q*mkzh#D>v`(#_^7AM2cXk_dBG*>FNljduW^xs%zI@HtE?@)}7BBan8g4@-IBk z&ioKGrpfyB<8x44Dj_qL>m$D+KYo5|%TXvl=MIax8)ISdA8%XYL6||v1Nf@r+gEyy_MxwJ`k9-Q{kv=r3KdM z@1wFPlG3i$At}(*Cb%;4j5wx~?9!I*E2GAQ8a$&6>m`Fju-0O%Egn<4t4L&`D2lfv z<5X$j`ENxr3uOMwaNc@8#x=a#MBcaX(I#dTrU1ayP9smZp&|4m+F=d||Be48)@I<4 z6^9by+z-nE!ULL3j`oy>wV3;noZ+t;b?2tjy*dn zdy9@w{;?Til%^4^@rdznvQE{xGg2gZ`g^SJ*=uqIOGX#!xfdfelL?5@Scf%kth|UY z?J4-LP*i2;GVQwx_H-G_i<9Yzo?WC*63^aTc>9wVX-s4qFvSF@z`io}oEaC48t*;B z(8p&ijVIM>sAH1i#d$4pB^BjtV>oD&vUAy8_Gt|fJdTH%@)0g^#D)f&6VolwC|DJ2 zWGHE60$5s^Fk#N%4e!uPd{b}pkK_wD(Vf0v}`ocwYJ3aZtW5E`poXLB9r0Hz18c#`X-O_ zW}Xr}@rA$ghM)4w7xu35?ed5o>xP+z*1Q1sbyDG_#hAAwP(6JN2V4pK9UkDFPlS_5_+KY4D{+y2^lggb>M~X<%xjCZUy&~Y|zYa zR(LBGla|E<_NK6Cnmpd7u}mi>Qm2%rTt-6U!QLw?2M^kzsva+frAjOWgdNkwvD8#8 zaq*+ow=-+lpSI&g8e?u0FR5DN#93yl&u626>@gM|xnyW+hNME=EoHz_DI?0wwuE2y z0JJE+#we}zG{(_b&wM`NM}GJ@oV$sU4)JRwa-fBJq}aP?)b~o?^x&7BE2AkH<5bn} zZ-(!U7!OW=Q6sBB4$$YWy+HzsDzX+n@?PN+zi-B79onT^QsFSwy46;F{r7sHfEbpl znP_VqTTC%Q!?5Wv2Hx}BRUWy#D335wM9HI;tnh2ELh5^u<}U4@%EJNbTB-YM&#!;= z^;mFTW&UPky=0!%!P8tnGeRR6v^?lx2u0-cXqjA&&m~@@w%Kam7sU;vkFN7BM(Wc z0atr|3!_i}{D!}e5lfHboXnY0vSz|UPY`Lb64DE-OfWLRh(*QYbcN~$WkVv?)YQyu zgt>--u#4>B7`SDY{FlQoa9=tuo3p%C&az@dcmD{#3OsndczOv9uMXH@!$6`t8q_m2 z69i#{IO+z*m6PEqZQFuZ&h5_V#h_j)crYl$y=lXuAp!}ZNb}LP6CX>GX1d){-64}N%# z8}1>}gX>V2YLj?y?NJh<6k&Br0lnE7-To!*^%}~R0#)UmneVNP%+RgQw>j<=YjSq% z3IFRqH)lQ%(66KWtgFYV3>u15PeI}lmP;^=_l7ULc$@3DI<}vtOhEV% zh>iJ#LT*YW#>aCtGD5bl8&F(>^Qk=sktQomY^4}8*JL6`j>=ug*?NVTH8RIgUumps8G_L-H#@_@|d8lKb0L^^06yCMae)x>F;<~c!%=b16!nbGn! z4(UlS{%>cdZHG^S`detjlAhGpcS^$y%RAf0*=r9t?hgOy5AvDgH@oVa!gm1c;nqLf zTTJg=onGXMv}%bYf+DQgFqekiSg!=Nhf<%y(;GJ-qhItlA}OlltjxJ8I}!E?lFI7_ zryX7$J!>|)WaF2t{4pDUjMEKHHxyokZ7U*ONqLxaoM(nX`3L${Ug8*h%M-fCd2Lza z=rvR&CLRh$NY@P1Gs)_d7_3yLrp1b3(4HTaw{a10+HcQ5fdwiB?p4_I%B{mLItK-= zT5cS7j@BT88yv&X;nlP0dKQg|OwFP5P;Q??Xt|NbIc>vVtq@ur5K@RcuWVe{KHdlF zk(b`M&$8PvZ<>+Nl9H0fHY@RHOX~L4J*92(H4;{zi3VaIS=Cj7p_-5F7)6pJ5MvK1 zhU76una_l_Y52bHdy<2*YZ|iww?5EF&(mb$oajnG>BVjrk*VcLc?L90;^I8{L zjvh77rDo=UJkFRNu0AxO8&;kVePG}ZfA0e4BH=6^$t0~~i}=(at5zjaZhU&!S{0^7 zL3q-6Hm;h4Bp^qqK>Sn1^EU?O^#OY(?c>@*-r7|WZmc(8U`MYm<&#kxl~9_GD$6gi zr5CR#?MJqDVaZm@^hVL^vr*v&GU+wn&Q&hx3?*dQ&9cV?Gc0qpsQSo%C!w`Cp`mHd zK*vBQj`#5>JM8d=uK0}q3J2y4JATGx*{9}99}_GWcq%}iLp0PKq1JSRGKTO|;#7n1 zC<}&Im-JPCV{2tfivMWhN1q6Hw$bxivcUqoGU2>TxgrbQo1Kwvy6#>%{L=sDw>vU# z3f}?rdiLd^ZGOw_oYQB`IUd$IqApe_!^-#U(;}JWc3ZPnz<65x{4c{Bddx<9dOUMy zc|y-*cQRbY0|TDa^1O>)QAZ&P)6@4GS!H1ZJ!vkoK>1a9gJ0Cwn1~>{;c50USWXD( z!kzDFV#?;Lauj&))aF)#!OBTbE0L1Ja|O%4EsrrbFf$ECLb|6REPK!4#?czX+(xf5ohLD&RgM>?^Ommk<8XuLtm z$b!<0hhNa2`mBbwHp-A2FKt0qQpT!o5gKRj zxOiL=yVI&_oYNwLv!|0NfTA2yE#A4R$5h(^C^*_J7d&y7Cl!xsZ zW;D#TVJ1^<$O#8BhulB09`tW#J4#Fw+;E~HOU!A{CE2a!wRZN+=)b3P=j8!E>78($ zx9VA5;gG+tU*tpwy!Y&hZl+Obj3+)TM<_L)SNJN2vASY6Q#kcW9r_C^gng7A;DNm00oD8}?W`RG26T;0Q(07JE{%?lm=alO zPVUpPHc4!x7*dWS#a>(KGl|+~8zxgyy@{iy#i@m@L&7FR5=&-WlZ1v)hI)RP6R?FNb=hQn3*GHzj#ddsz87$VPya zZ^c6Nt^Ut-j0zL7WAUgc6W07NZ=-d=Xl)2N7!zr-@v-rJHfKWtZa7aNMn9nHV>&{B z>YtZ~5Z@ze`RDu=zsQSRVlOMw(;Le$GJa1_8QWGr<`;5f8m_n zf8&|~~e2+dHSp$;iQJz^f2w3k2o_hEaFJE8s<*y%+Ac4LcaLz|v5NUv1j~imV zOg+7GsG2I%FKkn<1Kw>g^lW<1rt2`Gto%TyV@2*Ynh_D6QyhDfmfgl?dP(Ae9dW0P zmN>3SYN;Jtmj};CvI6o|(OyjhQ+Rb!N6-pN$wwjy(rC8klC(hMG;M{}hE(bK6xN%b zKlHut;1l0@4*X4wKSqWn;s(UKn86kk9MVs?+$gqAp4sgqxn&MX^_5CzZF^ZYpI(~B z9KqOz@alXHDo3aG+Tt}D3p3O6$scHW0FTdEYv*rQA^V(}o0N0x|riY(E3f2!sflKRtT8KA%;IH=|CVCAXQG&Drv#zC8 zgVErsZ*<_pa+SBqF1@&14^*H?M{9%icmHU~@p51ow3MS{D@P(L0y&N#z;rU9_n|+@ zq@5xtZ974=#~8ud@NBEihQ(Z1%)$YfSgBzDG*2PUKo`R0hf@1%H&`wbg`>y3bK{;q-iUvP2cj zdte`_JPl@h_|=-0rk<)13z30m+2N1!G{?HZMuvt-Ou}w7G(`0RPC`E12FF@l;Byee zvDxrBc`bZ5jwJhc46U9{uSJ9wuOd$Sev?o1EnbjJL?hj(!%c`T)(CRmzwWW8!W=q1%V9oEb|amv{p$0kzXIdsVdjEyo#5u1o$D_%1r zF`h*5IJL)!r)k2^Fu)K0@VD^DqbqQ?Fn$SrhaZNjST?om)~z$9Mc`{S)`XUs=y|01 z$PgZ5EmR?MIg`0Q2o?I7>Z_6pmiX*h&S#w|RrNGQ$;8iyD5e|uQ-7l2BOjQt-o$v5 z32`=wKZV)Am-W!{T&E9?f*)%Cn(XbS#*fh$EBl~&z$%;2n3UlbJnJ!$Y7vjgdkwlr zih`~cvyyAM>M@5}H3_wAiAlUxn%P^@Ty0z&qJ+a%iYkv-%4dks9UwRs3g5>wv_255 zmQR!(bb`T(VWnMAFWRuwo)db!3TI@Of2H5x3-$(H91g|BdAQ1c-cSP#uW-W21976r zLz&w62-G~HIYV)4Eg?XL@3NOz0~2X^L)Ig)`#^^KbhUcVqb$U7A{_@zxx$=<3eR(f z57{TRneLvvI^6u3zjW(wE#*y8!PDz^@RZ;uQGd_h{TVksbMphc&(mwCkI632$Ue`? zIab=SAG?G|UWiIPRdZ46SRWPB*WEn^bsVzc91|X9r<$~|{FW(G_L#B9gdG}Ym{>TQ z589RnufeU?IN^}8kv+m(raZ5gP}RWf8wEdN_-T2Chva}ACWtX~3>>jxEh%?DK|ir2 zmWK4pHj*(uq%;1EJWESd5;6GcyvOuU<4T%*6W;gd(?YNIxI zLh1-Tj5<=w_S807eeslhqJKe<#$wtw3MZFY8;ntGqaluBg(sdk&kz0JCA#(3F|1>9 zLyx$=&r*MzMDLg>K^4m zifv}uiT)Z?g>3Wb#GqsVV1&;F;OAhk$7T2s=o8|*ikOG6_@A6h)aV4BaP-7owkpL$c+F1>z7r6h>nI(+3f zPTbv}{m9u5$ouU>y3!TB-|)1YrN?oWN$y!#CqkmTNx%{ zVjPYxS`urVp5S$jQm2Fe_D_+l9TD(2-oi!ByBS?%@$GR8;`p4o%`NG8o=X^G7<8bE z3>J4~jS)j2qxacpO@(qq3;C{Yc(0!4gK~jVT$~uhlYtdXd^LhFjK4kjp& zyc?1rDpsh}%mG!s$T)5=KKz12mTgxaM_5RJ5-mX`6Syrnd#x}GadN`hSp zObq3_W6e7*tW91n6sM~Cyl#t3@_lvmrIdvijWLsGg327F?@FZ2^2vjTz%G(H25DmM~K>}IIf80yLp_6S_T|LG)kuuV$5yKW>a7w7`~3sX51rmxR4Mf0bF}c z@9|Ih3ioVJFUpdhtDNNw3rvFY^Bix@`Ge~C9<WbJvJvfngq{{#E8&G%Z)ml&9@Aee~Qr`g?lx(=T8D^4ESRFA07ZN(tb7 zul>#COY5)ybvvE#_VyWhmIIyQxuh+V*aBf1DK!$GlS$62Cg$7`G7izjeS~ zz>}QW+M0@Iz|qm^2?Lwh6QrhZt})ZC|BTiug-m-sCXZnVU2q3+blP!<@(=tAJZCO& zpmQ2YF&4PaG54Zt8(LSiG%@S2iEQF0tXXSEC&3H+Zh3@9%`6|#By6|6A-&hf z789x+-}c_Oa^cL3QKnTIlTzTYQ?J?+s5ZF?n?A&ne2K4Q*TQCHtG-8ZhzV3^#)Q;o zE1pTKtk#ZidCwI-`9o)!Hn$MBgkc?%8N!@K zu2RPd_4KAJ%pKcqYz^C$aVNO2rr?^R{26(keGS3=JzAzQ(=PN5Y6J6&h7d!Cqf-~N zW5LAul8YrMPs#-p;kVp%eobFRXi%}7VV83YS(i8QwR4J6)^yKYRSSzyAmL zA3J^*uiuqY0{E71{Aa&-PgeikBj?|)@3xQVhvgw%2)xZ)0N@dJ*`ejKnKRGiKsNhL z+wfXIW#JARZm^<7STk^i1)&jm-5oPw-$2d^NyLNOSt7|&i(6I0cY;6(WQ;RfJ|d5D z!Wxy(OlwZVKhtmWIlaLpzsnShcO62IX?wom?fxMMgrW|NJ()GM6?yE5>aSX!TSO7oC$$SC#AcN6+?i^sus}FV5H@1uO9Q8UpoO8 zHqlO#aA#jJJb+4QoqVqwSf(sLs`wC=FMaK04o|u~&vp0C0_~5_m9Dqnk0>0lBAj+Uol~CB{Jma zFhywB75-y#I*NxAy(E$94@O4+-qu~EAD+b6nO1ULsdW%lh(qEtWZ2L9(!xE)%-TkI z{M?2=^QWdP=E`guQszTOp3g#P$XCxRf%^_+VWegV&POh%tEZLElUh9C zl54;nV6~-*FkXX23Ez9hTwuWt9l}3$pX2N1h`G+# z(OsV78eSbaoqQzeq}n9Oz_ewPZDlQP!_11|tz2Rizkgdg*0GsjibGAXv~kSA0B^GF z2qbX9`8X$2IvseLefDX1R`>N|_HF*TvmfGx)i?j%AHMZ>|Fw)2z?;5)*GdWC_2K$| zHr-jg^w{1LT#$X9<~)z-lnp)aH0No=F;_T{Hq!s4YG;iJgLUlzs0b%Uxi13?EIk9) zSg==dG?iN698IZ)oi^Zu8vczHm8M!0geUC$0y!(!1!fKO*IY2HXwTKkJRom-*ie#EDGwK0qM2u+F4SpFKRf=Kmh=|e%;PE0yGQZa>( z_h|8kqJm0H@mltP(F9Ycl&FvpG!f+!<{HoHE*?XpFh#f^Gv-*P(l9tT+WKCVW9`}C z1L=1iC&JZg5?$MQH6p4J`SZLaW+Gw+kT zdgIGK^YTCWKl6Kd{a%!keEG%CfAM(k|H@OB-hSsod(ls{<$2DtOT**#fQOjVYme7~ zxmYGb&OWozV=7KxSn5HQZ|E`mOz=3)6RLu9JLA0ZYGIf<&&J})QwoXd_X1H#^b($z ztL$i~R#)lyO?#K0@V~@8)|`_$XPI!qkgZosNP(YXm@x^qL=>XN*o+$w_(Ec+$|Uwj zdcrUGA@evFX_85vH+v2v*3TzkCyOi>G+RF*4Yp}_Xqq-ANEDA!1iW^<=jlEEz}pXa z*TXHlli+y_KFz1%)Q$M~L<}1Rl_uP)I>N;Q*2=Ps?~a7i_?4~O2XCbZ{GP^_yr?ub zkZA2U*3lTxWD>l?ANV7W^2tx`pu-I;D{#xGkX-02n}XG;cacUfZySQEv9=6_O7UQ} zl~fG8t7L66zK)E)Gxiv3xT@^a+M^mFX>~_jOPl!=L|iE#LXE9lFlb zwuS9MGB#MVJ=CZ~y*%-~%2;xvN6@XW)lgnAYU=1rhU^lVY1J0JzD~XO@}JZ*w^8xR zR+@bLY9GT)N`RDe!EW*Zx0F==eok*MCo{Lp$Y%7ww{wYi`EwW#Qx#@0{o8uOJ~PzA zAPN!^ikyb**G4Uhr^7L5>@F-s#bmh1F5fDT#xd=}p`I4O$3@gEi zV`eMMmPArnLq16W)=Daq?~S1s7^gCa0Y>+sSaT^DUR%DYcvxbeq{b+X9cZj$ItkQE z?|Jtb{@kCx77`m+!LWp(3!H#;<324hijg;0$2??fM{O&t`fqRYyGE~$8oJ9+Uis`c zh+U7Vj%p+&N;MSX%8hhKf~s@Fy3lv%((W;T>%ZRRoo}1sou_R8Lb8ZSzG59LFsF@+ zGW0Fx?$e(fDG-hDRbr+uj2&SdxgzIzt9cC1CP@mQ89m&o*qLl^(9<530uSpB za}7>{Rk*Il0Zo#y-YuatV?i5=b|LnW^_-U}mt@A070+_OtNuREu*<{j>%-H>+(Vb% zzCN_K|LU#lFaHz$9VGPj%l=+I4Desy`AqkD`_7-g^ynk)W9G?spFLVlE;7~sUcbV} zW>0f@2xVLMbS)coTroQ=jAf#N5sMMegq96`KD-Xkcgv#yG}7{tIpOnqD>{oQ>%VNa zu~bO^-oj7wdx=>$xc?Vv`FG8Gu-+ju@M&J)XY?C@#bJ26T;St85;Jcd11?w+VmX$M zITQAnvKqSJVc_DkgqUz6Hd`8k(2M6-)?Be?nRw-Kv&)zD7Aq=&E~%|@n2+gnjvM-r zY(Rn?p|LIKfOo?vrBxM-2~7r-4(C00?)Lohm+!G0T70Ay5)>crV`2u90)uy)pSRra z98S~S${f~+e|^A9Og!P$$>KK=dNhoUhixlQlUW;=PqPCS0`<@|9&0^q>zPeLYVlj1 z-Qg$x^JjVbNl#;z$Z!I~3UQlIB&)u-D%)sbzJ5>|Bacqv7^Qeh;XjfUj*Juz-hYN){H2b2hbeKT62+p` zqt}pY+?N?Uv-zx!#=a`RE{Cn8f;3Gr z22w^|T!)diA8i9Edmx@un^`4lLpUTge6M|k59(QV?Sx%g7TVI71_UNC0&Xx7DKW)k zB>F5Ov`knMIuJ~xiP?GK?ha2UhM(sZx@fcY653C^hbOopM|{D51H-f$ovX%K*M8M7 z0QH8Ce+!GcWmcQ{6-+TA(p2(Y9GY@?Io|V#%1Ap`AGyS_i z`29cgoRJsy*xP%`Us?>t&wkZkZ=N=nwDq0?nJ`u4JQE(49iEmQ4$O=Tb{FqGOG4_S zU|5UegK~|_+A<*A7soH@^*DtIOHC78rw*TPg+BJGOx(1gfKAl%PPxeU=re3s@l|`m z-`3ycL_IDhXM9v1<6HG&s4u{v0v$aKmVrR7mN%LSoD9jjtL^#PmaJzvL046pdoeM~I>ex8 zma(I=6aSc$R}}7nXf?!-Y@9Bf&aVzLoFl=DxqnDK2 zimh59Ah-KA#X||QwD7y-M1_2oO?9ZHD5*$7n?IAjkWz?iSTGNuYWSF35hJ77J#Abi zWnBrF+N(GPsfO|S!E)uI@~(I9@RhF)eDf7Y(@4~lRa!y1_Ng&!DXKa&lRd(^$zK_- zXgm;g93!?NA1Uoo3`7}e=W5LiGOk~vo`a}h>H^-RRMD7lQ2U@^-=&CdVUa1nD?Qhk z@?G)}Z`Cub)pNF)GuMU&%dSkAYfwpw(qOT%E(s0ebqH(GC|OJhIH+U66eE^!TFLD)oNbILARZQFhY6qHF%Fos zOT$ZY#6RIhVlQwmHhZWla~htMT^0!EbOJaQV!6azugVVJ)xMQq)>rg<%vNuenrvvx=8VFU(MjH<^_)MSggQ~v3#Grg(r0v zJDD>0AyN;y2oHoSHv}swDJ78r*;#BnQ-%!#6KU|8e7%r5-bV)AM`ectCfsJl5q&&% zML39rIFgB3M#eT7;tGA8492!tV>22S6qTcM9oKeu=$4*Wj#qSQxHy@D3io6FZ_4KL zI9ls@>(#Toc6fsKmDLr6&)7ps2O-5KYVi`hKdmtPAcQI+&=H3Ym2mUX+l&Eu6A~I0 z({P{NUBkcsXRh%d|HoIkbbf>JD~w-9Wz>aOk`}Vp?J&v6ny-{k{qOPTqQ{p8TM6OZ zTgnt-&EjQA6mFFk9v35xelk0DRyxI-Eb~`Ble{g-3Lz&*=f@2UNC6JUdmg%?eBgsS z+`iNB`7f@q)?jQky!71+ml;arKaN6+vK<*EBa1wm`6Puz8D|aG<}8Nl_iFx4EM(6~ zK~ceMGmmE$2`NuM_A=|hej(2)Bi^P*6C48z;2m<7kH{q+XBP-w?yjG(qf=(mM(8fY zC>v9H2Y^B2xHou?Bm@9jf-Jbs5trDF2CvX*;8n5G@+#duo&*M?iX4>|Mbs1`?Y^Kd;6nLKl)ZZ^OwxM_4mKqUu(X2@--f1 zp})=>?#tYjp4Qx9!xbjn)lN1VH2%-{Z}P|Ov-m-|%7Q(aa8s8gC`q&Bvn?REHg&?- zAwUb7sD%tO43Fy>CNkx(%dhbp?q!5ojHw8FSRT<`TGPgB1b5s4P6m2lqCS;w;3L9HA(U;3narRV<^IW;3FIs=GI1qG?@y=Cj*Z?+Va2q-#*26{r)MfSz-MK z{0fH9ybqsP8&XDLn8BRh`#>)wDV(ZTR-NjV5+ZW?ToPYWJs5F~s_SQdwO}!)YmT_{ z;(sN@KaxR}dF1N*Qy{>4eAT7$cWQ4mdfrA9?|PoT>iDbw$9>-Wo(X^D|8$po_h3FV z^u5w20(+l`r+o0@vhvt=bJN|oJ+xD!iZQT|H5&Rv1p#Sfz-uaG)k=><9>w?vYnw2x z$cply+M`kCo`BKRrnIVQ8b|B!<8MWAJ@B~9`Tbnw3{#HjL)!@jL+HBQ5@Nv}0}Tx- z9X_29!hu*?COj>d_#)TCXVv3X_)Ymb zzoaklLHjgc(_ccFkT~vwVv13)JcsE$w$`D%9LhOn>}V4b8;tN9ydKaRQ67^s^f-29 zL5tDnbr*~1RSxta_W1q!c5`-qNnV>Tf8}r7|LosFPw|E258VFrR*To) z`|ICWDU}ToDs=TT-{JlPSn4-F^Tn_K=->X6kNn!5|NHLh;E(LBFFebgdk=lb@bu3A zYxs@nE#J3a;htII*zt{josGQ69r=pC$II;r7lwvC*YFXp@eg<*ZlG;tRBxqXy%+GH z_%s+3(@!l6X?TKj{Ia>hPY(Zzme7Vc7X9JyouExE?qdbY7w?ReE(umAvrU{UxE= zV-o9Gwq5_M>Z9GYFX(R31u;7j{1Eq78@$pA@-E=Bo-VI&we zd6z_m9XKSEJo#?_Jp24N?w@02&Y(7LYKP}63wDUgL>hYC zASiQM{%`taZs;+M7}n}?$?kwM2&@^{vvY94zw(+WjY7Nkjz0Ed3h|~hEOf<<`^jhYN45HFgkVNlX(YJLV+@?x z6Tb5k7x@!E@(|zl5sP7s^c#$JF!ZSJf`{a~(g87!P;xDZDMOU;zmq^ua}eI%YX6)C zL;b*}euNCO6z{xvP>PL}2%6u|>RghsQ3Yv?mN}~gbAA9#pMm1JYgX9{7&1G5 z<#R^i_PrHoGzjye#Dt%Cmi^FgJy>=E^Su%cP+8Y47KsGuNu2Sh{}rW0Ij0Rz${F6y zSGkQE$3`;t8WD<#uO)ymBO$P=fmXU_N-4Hs=3KO%yM&m@Ca3nqd zfG_f1d6Y+W57m%9zE;mgIm?1sloKgy(Qt!9KC3TtmIXKTB%U+LYn0S&nX3mO0}2w1 zE$Xxz1g`!XmuCxuzHWM8B1*_a2e`m#)||uQ=7awprZXwB~Eyw0FN^ z&*-l__2R#OzZSy38~UK%?d$(D@QvdpRHzNB{%~fB*;rq{IQFL`t-*!J=r{rUnnP<)Lf2YuUZ3 z>~@#S_7c>VW%sgcxxL)(a@pmf?6R$vJeF)p)<9B}#6cXv0RRagk@NWGJH~L%?my0n zxN%=5Ro%;y$keJJ6Ysq{#2jaz{q1jmUq?uW*BL+iEy=xq{slewhUfK~eyqGKe=>a& zMLFSFPH=)QH<+_DYg>8{?*!r1)YVYi@Gd|?P6{5=8N0-c#@ZYk{h1 zJR6-p&T`nJY1n-%={k3Pxweg6qI)=CU>td^h!>T>XT3`o^NLa4oW?K(-64XP=? z-V5qvIZj{}<7=JaNb6Vy8tQlh{9`(K576I1w^DoWRqX}~L zS@NP(s#rYhB&=!1>!i;aGoVl(TR|+DT29bqMN<^$C0$lKJ#I|)S)miTYo4xzp|hY2 z8I4x-q>CUpsYoSZUO6mvDL`4HLysQU8S&5cQ~X)^CQw*QR>3*8fB{|hWfp_Gqc$x6 zl)n&b?6o>fN~Jls2cfUt2)df6oudL}KZ15la3olL?{q={c z{_|A+)`|8rc zirzo4l{tN`+P3>0&!(jGyyI!M_<1f9(6AJaDlJe8?0B1m$zY23LIl(H1gp%L^RZwwg=17t-adY}* zgx3&CDiSOXM?e zDHCxKrt+9ZD@-B=4M`Fnf@)rHtEh0KD080OJi!+ZcDbIH5COV6Q?kI?$_k|`F_cj; zxL)d9tv>OK+R7p~Xa~9@`BYsqXc%#|FH(S{jByxKQWX`s^E_~0#`k^yJ#4I1Br-?H z1Bt=H&qd{7nrGkF!F{f(cH+#-yM`tO)cIjN#a7| zX+1DE1N{Qpsu3QM2$ia$YU629tQ1fh9yng{mZyb}f1;u)N)(GRDI%dKPPGNcnRtDb zrEML3_S(U$-Hf_iqg(`}+O)1Vy{#uOq3xkoK%u$Lb*n*LORZH+OtY>4-Fh4qC8C}c zO*l@E)Lz03Ygq z3&O*l$HAjDc!%dHImtZ?0K<%ePgPf0A=B@cNAPa`kwXsu>;DgjFSefAdeP@@$4h?G zm*1A4bYyAH+H*W7KeF=Ye`R(4@J|$@*`N9Qx+`BPx8=R&lvHlSJLEXOq*nsXvYjny zn`IMcOHC~{oJwsq`&B4wx`s0)&vUC8W<`>gbPt?nHJY3$Q(uBuK4tg#M0FL5t+bAo$qk&lHuxg$MqYY z$v9fui&7TKY_1dm9b`WD6otoor7S&p3Dv^17DaHCQdAyaf%l4!ay5Y|uB53Y%Y?)V z#tLa7q$zYV!P;=Hj0o03nkXxM==UM(K(`CMuF&aPdOc-hE#dgFgnKqU_uNykW<#(t zW>FJcB1yy&6amEx_9(U5w>1sinpnkq;qga1bh}fgQ%6-foO3{d*aR_MkYJynUYF(^ z3n;jTBkKvuq7TSKcz79HigmA=Iv?S>y0%+?QevRJtr;PH*SBEh21<>MzNvVQNy;XD zPM99|XrOZ=hBZw=I;@c4J#0vZN?^~fYKo$bQD0sa7!tY!v(HqLMu<7kzKhs8FO%Dc;~sjif%yp>SMJ2ErX(7s{1Z`VkmO+NQKhgr|h}e9I{? zIYOu%Ni_>KBwr%F4AlO%Yit8GE->~0-GW+p`LgBj{J%?n;X?;pz2+&)rdY%6*t=;` zjAbGRv~|Z8|24~>X(mN6W2^TkzTQ563*gB$B!C)%S{h^&j1{sD9N!e)@}`78_<;`J z_AXCf9ad^RI6_9$noZZ6Qi+oZ(ZEn_L6z!+2VSQP1~8e>I#wb?IwpvGMgioS_8ysq z29KK94;b6sYgKJ&f<_BYgr+GRX!?tqIpxwgSWkjl*_G7ueNUj}Ko83rDH*UOT?QC7 z$XKUCNl-#xHyt|8A_@Z%aw>XQEQZV*GO_f?uwtUKfn7Krh>0o`HF?4`8KA?2wh&b+ z39YaiFG%G}R4ginL!YzGfHfJSOn{V^*ye^zSY?9>8-&foN5-CoBj@7w4xSo%*4x8} zn%00Q!6rtPOF9`!QXZDGvcWAKvt~Lt=Q&|lnfr&PoEi^qb`j z=h$cL9a9{0DoQ*)PCn|%kEsJ%JYo}TQ?)oy`w3PF?rDJzSYNB)@N6-3Ran7rjEob~ zSM8}2E6GTYfrdw{npXI#fBYNm@uYGG@*VbmKB$*DR7al_#Zxv) z;cYCn{K5<0d^b!4)z)kwr(eW*8E1mD8jb1H_~!AW?WMGd{sBhInz zDrH_Ut>z3#nNe}C*8L#JX7~Ni!te!;nq7j3}6i!)eK@dWfJ*)KLO6DkfM) zu3!}Lca@-Sg?Nl;c&H+sv=T?A$|?zkI);+*23g|)1~}k8Ryjc*v|u04-{jNGTA9S6 zq7bv12;U?Y66<;R^{bqHutQmlNhm_y2#2^T{2tBv7CLWrKN?{ljits4y;}as|Kj=e zPZy+VfaRLOIYO9m71S=jE&H<8J}I{kZbd$kpEguvo6h8RnP}|+B2X7-n0H=?89(y$9 z~FbRf{=Ik@)K<4Z)Ore^}Rm~ zKk|2uzt6vC>pg#Ra`RmJPJNI^cu79PO$u@{ELCgv-Oedu56=PQL z1F5v)tl1*-mR(9V>GLv&{0iq$5){XV^kXxoP)ddM2@sfe59tZ6$pQP!uqr?oC*UNA zGg=MAgfjM1sCp7HvD)P6N2T5lNduD&NH|HKYL?SA33Ff_LrTe93p$Z%z9B30Gy@~} z1P-bx$8?2+ka?8|mCPCHfT8gezGMr-Iz6^y9%E6)lpz<=@E~=uoRJ4-Y(S%%-73p$C_gQDaOLBz+4QpR4Z8$7kD{CR^guwK+w;m(QJX$D7 zh58b4EsB38Z^+3T}f}H^{t$@?ES6CQq#c#B1ya|K~gW;vGRDA5ShTrpc zkDmsez%T%}&b5!wUTx{nD!qojwh+X7UEv$Pp~FxAry157d}SIKbaCBi%HBqTy8kb7 ziSN`$NhRYHYYcV9Sy7&%;+V;}R?={$C4sqVuqEH)O~63{+S!4s+2PJ%6Uo>lh89Ayut=6v3)&U z;5o|QlMnM(xQPjK3NbkE@V?G~6O@9Zu|#mB(R|PtD4p=Q+2lQX zKbeYV-8J_qdHIFUjlc3oKg_MqJqPBwuY-UDUq?X+Kmy`@>mN+M z?do@#*YjC-T|ACeLjR4A7tlqmgvC<(-bzTJql0SwlrMm!a0Bp8R)!!L1;$K@2qv_~1CMvp}I+6AAjM#gN7sjFci zDJ2zYYXNWgILX*{Qw)9fbjJPCqZ8RcJu#$ed6JAN z6`6!%=+I##1(lWoXpFT2gK&=wunHS8;H)ZR3Ra}UVVoGOkulSXt5itb_X$&a^hhP; z^K4UV4=ys=Rx@U#`dTYw8T7jeZ-3hc#^hj2#FZ?(e!`$EwbV>abZN(?*5VN^-xRiY zU3BxVCo9qBS&s@>)<5gXO#So7`%7i0BY?_npKmQ~9k}-Qn>eL3O59oxO0lxnh}woM zPhzH6dgW7}Dfq5$TIPB*C#9)x5h^`*=(P-sL7niHr!6Kb&^I^fQpK=_1nZ#P;q!Wn z?~pf8Xhq+oBxDhiOE~lu_sS-HoklhMP=Bh_b3YkFdfZ^jz@$voF(742`xp^QRc2Z; zG+D4)7ufYPhGYz!WmN(TZe98~h14g^DOsnB61470JRPy9Ix;M!dQxnJ`Yc23Q$*Aw zjb(v^&|+bwmJKqP*mEQjvMi5M##(WWgQO&Q;Fga0AQ$)}<{gN4h*%6l?n@*F+GElu zQDGh@5r%}9{WV^e8@x%*uqnd`nJ@g>LiSoV-4Au)AxvyjN;R!CDjj;7QXr%x?8uDG zC^~6S4ot}Yap*vrgpq)XEN<= zxAfua6l?j*G=L9R1T1CBVMX)$gx?VV?eM<4n$*~&hmARH2Ls+95Cyl{( ztZzEu3Me2wtU_uM4&98t83e;QRT2y{sZbUA67r~2QgW0MM~-Jrx)|>;k_MzGbGFZyeI#$M(<@-Soam@7G^ z5n3EdhSip0e7uLhs26z)_tDb~kxr{0Sr8MT!kTfoxb5rAIl8AvjmB~uZs++UjF}bp8f4ydLRG6^X~ZC5BX#LpLr~O z!2fvfd#G@3PVQDne1U30!hl|s`4Bo{*)&}Yo{66ZGrMR4n05xZ+HyNWA|3*|ErCuQ z`jRq!j+Yo|5uqBTV=NEJF{}#43x$@HxZrJX48LryFx8SQ4$@`pRWh;Im}r0p>X0c> zP1x5e<2b|^(#ZM2hy4i{d&IPTfHC@#25ek~o}{cqI_s2zLc+jsOa^R9hjmicC8g_y zby8O2{AohTssvBTK0#V(RXg0PE1agsDS9Lr5|dy}nB%4~L)3eAeG!Pjgfg76GC4uZ5Ob8|cDk?_cGfd$Kqv#XcnO5Ert8CYgXmY=h8?rd88g{n@sE!O&5mCzeEl`QA$O2Gl zbB6K6;VNk|jXGjW?U@v5=wVlCc#vkl)GyAV;Cc7E2NI{tdOxvhc1?$ z8oHX0sNmIMu%v3}kg}o)LlRCfK)jNXl6u3s^hiY_^i5+kA%x$3?Zm8M5@|KzkTD*j zZk-JifjA)v9N!?+Tx!UWP*~9pLs{Wve~XXk%cu&*Wb|!6u0z<+A&=`RV7|C_)vzlg zKF_64lWvq6mXm9*O647b(ih97Bp7_OP_-(ET8wt->8e`)PLBEG((~`{ygC2xhktb2 ztZ#kRt!IBK{owEYYw!8+k9^Hpc3*Azx`Xf9i-772f8j=7`ElO#H~;0I+4#06&)l^4 zKEM6)`hVYj_L)yq7vBDbYVXvmdSGu*a<5sFn-m;KNv=Mc3Py_wzpx1QZOhB3AfAR~ zmoM3CT(0(+R&{2hoG?R%ny|+#)RL4a*x`7Mea0I4m{Jl-st~+l@iQgCsNh^6H`L7G zj80_orS!Fn$5Awo_hMR}#5r9WYfG8{*0NWOSnsb;lm&w_1He#lNKRi8dXXwyipSEY zCkcg?tO6U_VMa+3RgV)4E1EUiE2CR&pNyV%NCa}N@T%YpP95V&3r>*eIprA8VVfBj z86gp8UkvDVZN!D(YofS9YA{B5^P7*6q>5+}*md451te-G*>KTXKVv{@dFH4plc`cU zZGC)ES6o_d`&(N9L6<+Y6nNs_jY7rI&$dY&cfProwt2@lTi9W=jtF(8Xb$IzHOCrJ zZ1+OZN|~)_~d!JSC(~@s~r!X8Erjr(%uzk+z+E~nxMH8;em_y0g)IJVR7NMks zj1dVld|-f?ECA^)>`N!Y>K?_4QfRE{5Il#xc={4Ds7if=28p$ty1-upiIGqw2CFu< zj)Y@Ku_WH2#!_h&f%976N^$B)BWcJI*sCcC>#RmFI-nM*q*PjltVF^!@J1Q=94mrT zM^O537!3bGKg&aMij!<$9tJ4y8I?lnXo}Cqix?VMd7r42`t!Xr|0a zD+Up|?8T!>5Z#h4r*&Z7o}9R_Q|)~I>CTfEKhXbOS5~v^3y0b6=Qe-s#aeOP|$tO2aogowv zj;j!@8s?p}6bouKfZIwmb=}3oywG5`tw-*ruNEkd_OG|u19IdwY3)cW0Nj>AEv<{i z_wIC;*DGlhx$hLz+N{#Z8q^w0QkIf4saK&*P_Erz>vLsP@!lf_s@(I~BPI7g(BXwI z6&Qi)He7IdpA=&^nqh*OC=UF)HLbj|fH}6SydLm1yWCtjlr^ zM};S)gN^kZqtG)Ml@GzkL^hm@q@s)@Oa|kA)kCfo2`w1jlSxubouX=@4;qp6s#HKC zaWbVuMqVIJse(~kgL**)%7vb!ZT9I)FHE__V>IJ}?(=E6$otqLk)&=bW==&?*EQo< zRA<(g^d_&9V~F(d3f5+U>FBEFyw|M>9+*(#CD@j4X?OfM8<$?E!&lFm;YU_9{lrh| zxmVB5?%RE0_Lp;bPC7iNa_1ZH>uUMB4@&iNB(nRJ@yhl)`H5TbfscNP2kbCQ-~ZRk zm)<_p0;8FzI64vV2}XHJt_4f@e4G(m30^5;R$IWA;|)0|YcFp|+pGpaHtFN-iQ5*NHnP{ul^CmD&_*sur04)V+> z+d8JND>!w50px_9?*yh%?y*_}WTD~jA=zLoIqDsm^a7(#OsJO;dQ*atS*Tx4rC^wJ z*)OMol%a}~pdHqYg0nfqMnOfW*w)Z8_z)QthHYk?Vg-leqg(>D=#c@n0VBj-w zOQ9$$o__i)_nloqbp%>s>W8%%T-*IRF&Ak3V_HF?g^w-g4DDc~NB)-94lWgr7C+k~ z`ET@0*Xqr6P+2+!+S*3z@1>-y#Z;_=Q(WhQ0ap_m>it;kQ=90ZOUJV~7Yn1j5W&O; zO*>H-3?@AF#*`Od2>rE3`B;nfFU~w ztfy|yj_b){hF+7E3Jom{KDJK?it#bW(SVqCBkQad{i&akaC9Ndv0AH>gl1P4GoSjF z>6s3dS2}dbB#YBD&s6608HC;?NyEAcxlX;0AxlZ|D$Gnl*Qb$n8>+*fl#9HFC$Uu? zoU0`mhCVDOfvUMnQ`@0*Q_iuE(=Vfv201fd#apS)3B$2xKy-K=(BUwPDj#svj>J92t7?% zqZe!ImKnhbSGA(l0v9betQhXqAzd|i?^*E~eUs70kVTS$C|HFIVJI1W()j2I)(ag; zNeFDg4efG|UkUiT#y$=VBPq!w;~rV1z)_)`mjhDCxXG9+I^u$kNhE7usKqZa8?_Sp zlG4=RE6+E*>kQTw80LZGprPMJR2M4X@gZDrJ+~|gk5Q9Ne zO1aZB+)jtuHLp5&ncHLDl5t=AgtY5M?e(|5UsLB=pajNjHgFRR|}4z z)S|ep`rD%SN-@S@b9mcZ6S|!cl#(N(gSPjbnxU6)Sr0K7G7_v>a&cUdF(QUM(gq;3 zGdS@Pxu~f1<5CH24n0X&kq%pC$cE{IhNkm?7>0}|t(7Kf`JA{PW9A_PiR`qVN$E*O zS2}^*U{X?(;Ns-Wt6E+{^Gk|^9P(VJvn8&xLBk& zve2o@T^VoTaILCpj-cc^=Y}cyh@7LM0Ekx1%9>=HF{?O)nl_LC=go|d>LpYR-PmGAt`}NMi4XC1~@7KolB_BUVkHlodKm zaeR^+jHq}?_Artl#}@-v>IwkVhBUs#RxM z44lh6wpO;=#GE=~2z2w?Y`%Y^rO8;d34qOW-H7|P@UaHEYo{jd8Wyc}w8#$4ORXAL zZ8d(h*Qs6mX*Jl^|Lt@w*0zF6>o986?kMpNB{JxiWloKNn=5a6qv6DU&?_m$B9!9TmzDlgp?U&eC)&V)DKk}Oxfv55`%T!WwfZXSqyl!&hV*C$&}G5!PBALu`;pNfNyeSRwKTK;AadK3e_FZH?cZrF7w+(+vbIkSI(zq2HgfnMK9(=%%*cgzO zlDT$fS-)tQ;`sy@=n^biLMw*nRoM?RS2*Ue+PSJdG7VIPV8FQuJsQ9$JKnTsmK{=r9OCt~! zB!sS{fl-9U%n5GljFZ}DNWxi$?E4vC(VI*uxyf|lWz^8Wm+K@(YOTAVBK^C+{eH5} z9Q?FV0@sFZx6ry<)JWoh5qDO!_29+! z&^E;i7UQa(13%$oyo##Dxr!ADqK&9<%=fT9%yOnKM^yM_JSVV;_dTdCCFDBcR z*3j`82BDJBMC*OnYN0L~g{5TDL7OI7rP3-gmweP>wx|!8+8$#vNwE@|^ru>2yv2}F zc+a6$d`2%L2saaDcXluK_0niwGqC(vFBx!_1+d(l><7FwEscS&A_CaFSNdxwXKw=DU ze#VkyN|uG7v_Kv25IGeD%M}iIO>g1FGoxUp;ol`WWX}{7Xk^rd){7wN6BI&FCDnv9 zX6C7+bR{8`P|K`~{ene&%$lN(WIzZkXaMDN3HP~IA7D5MXhklbz8yCD<++xK3dLlK z^B!wp?&suGjH(H_D>24U>lPX@p~b`mMq!O!U;=f!RN*F5wwX05={`2^|3dkt$af7= zPKj7faV++cMJ4qn@F;0gE2@Xg%=roftderZ^w{x-Vf~a0#j+umT{rdr^56>({f+BC zzwv$i)c*nBeeIU#Wi-ERHPZa`_c)0J0?)4M^f_3T#ihg@QpL9G7-mlJ)~b{tjiE*EG7xTz#9pMrqQ9) zl7)s|z$Y-1IPfE2LW80;p?*{v#UvS1!b9ZL(NRlB!>p@7Ims$R`b_cMr(10MDQcvt zr+KO=c5w%5lidE&>Cj!3+})YI2E9+tTw@8 z8SYymFx(*kv};NVb&u3hn~cTh+b^_hQF@2f-zh2`dFyDFbtJfi*?;(bZN1LSTA3ir z)uP2QEw&-;VpEea#Rg?9dEyPQu@T53MqSnQWksPKH5ZT898r(ndK5hY`F zIIm3c6h@l(T-SN6SUNVy`5+R}1Em&Yt#{8z=+g^&7NI6p-wmPH$;5D1J08`rdWo0> zC&I+f7)Xy)G7zDgcBxem$JLYyWgfM`3#meFC~|G;oU`&SSaC!FU_7w~W$0*vQEfCD z!!)nQ1s!q76d@?{*VLg!=|>_m6SJ?fia~gB*?Mu@+SVefM+EztIR&3|m+7dL$Evma z?`8M^3%bo+x!mPJ=|^CK<;` z0UvSVcJVkoTwXn02@2j_Nuoy#%(dW)a*Ok_M_HAjnN)=VJ$^~g)1kw|vc-LRj5!`- zGE^k!QmG-4gw%9NvmU{SPASWZ9LJOrCxJ~j)dKGw#=({jx$Y0h2sY<)aa=Xy;OB&8 z-K@}|!@X>9k~M~OIOA6XZXai&me|csU~!E!Zw9VVa1N|74^jLvWN-+~#W5l$B_UJG zgLVT&`54!@E;AB=AxX$W^~iwVX23-#$(rE2Y6YHr;yC?5iI9T^y*pjXl6(s>)A(;` z3$5Q;&!H-5N1Na$_(evtlrFThr~jQrj{LC{m^5xjTI;*hwp!a<;xrr?KW-CuZGXO2 zr4x>CDiRGNmmtDegjaw2b!a}>&fr>qTRab(sd(shhN27^gsq{`HlwhW6^5a;%O~_Y zPT+u?5+5DZ4NeW)%-N%8j!TTtH5t~M(2FFso3TW~rQkI51R1T_f{~SpL|5mKz12hr zTQgTRyc#kM34YK~**w!u1Ls--sVI>Yje*q}m`RE8mdXX|mMU81lM*19+j8a3mdohP7!5o(Ux7rHO@|JvGUUL_nNc>y*SQ9<+0-YT z)J=}jCnIHzJ|i4MyNbn-`#A|33bzD}txfu@GbED?qo(Q0sBp~HN1KBffN_-Sg8ULe zlP?6S1jI7K1xs-)@uEDMoa8ZkoF~jCsxVPU*K|3@xTR>l_$LwsC5=dYP{A5cmKmOY z<`~`1m?SAcE7ZGCNAl4F$k$m>JuzR@jUbMTO^rjMwFrQcBrax3?JTDr1R~^hRJprd z+o|EZdb>44?&zY6&uGJvtKam?0prNIS!{pte$e=U_RO(2j8(?-dp}`!(ggLu9B98{=MiwT8j^GJ3(R@+gRK>Z1Oe}q} zrcDBTeCBE*hT$Xrr6|BGl#)|XE+~@qXoig{8WB^C#GMqw1ty$lg5a?Tua!G|POtJ= z-DbbaInP! z(9zH}UbD}JB)sT%c-|i%v6fRWRb&2VnB(!rGDuR^w1aARSY}3fRc;8ri5-n*Im7V*7i5ArQU_r7d+*#WkGLfLor3%OBb3ymm zW{MEhj=c!Cm;`u047V6_$c$7BGo53s#S3xfnK0FgxrR=05n*8=W)Ka{jZ<~(YspxG ziI|auSE^lBst)^ZPJv^a8L!GAmvoGhwCX3Zl2d05CepM;F`{g2WIX!V5MRzQQlbqN z+(%+VT{o(A`<^n0kKVDPjmLF&b-gX=KlC_T_E(Enczb%52_*@Zi|&9qLB!KZ5H7Jo&7on{ z)Rm`NdZmU70)^WtI2Q(dkudAKWXD`$!omd-z|$4Wl$@)Ku!JVnkVOT@&r*aD6^_t| zXGu^AnM$oDZpngkC6L9=_n8*tIBv?6ZKk2t6tVPxoF~k2L^mWd$tVQInzN?`r3P7j ziIOZ+9HlshS&toN%yEsFq(n;qRdAvdqRho3Cd@!9JQrn*ONlZo2B$C=<>Pvt0&S0S zOSAua6ciIOB@wvyz5!>>7=rj}VBJYGAh%|a@ptttk<%uQw1Z2e2*=E+-*tfquvE8c z|J{b%Xw6#N_~21iT)R%x4i>VA2F*U-zO6-?(k582{9g07UwW?&yC%Ys#=y$Zf?vQ? zi>xRdOX$@)vMiFxMKG`7v8b;juH-Fm@;v-VM&*Kmpy-iv$?_q1feOnx!gF^)f^~@^ z%p@r42aUv_#OPT%Nw6ls&!Qm{s^K~aq@5BMCkO!%$fNzY z66!VREgB!ATq+PlDk)Yil{ohOxH*>&M@l#+Hdet(tuV2< zc7HyJlelniI3P#)gntRavd64x{%s}*k+!cICbQIzaZ!2<@pKV3Oc%kiqFv@1dL2E& z7u>Eq+kKGtXAj)-#`M^GkKV0!({dLFC9r+lcPaPf#^_LbyzKT##NzS1ZSzsic8}pH zs5Ivd$p*(_V;ux2X~kFs7Ygt#c%vQ!tjWmnBr2?>T|OnRG4VxHb4evdP$raI;DFcM zEmAd9lwn3ELS|C7b;Q2pk$IDlO179J6IppC<0dmIU?$40%$cDaO39(l@hDTuU}mNr zx|(o9rc8~3SPFs=dL+4-RR*J!*Av!>sg<0^EPj0ZaSz%29t^{8$$PG0e+{Y7i zw2_v@Fx@Jm(3GPUR#${hR%bc2%&kU-UW=SmkH)%?!d+}czuF<){<|FcyQwL)Kiq=k zmYQ$3g5V4v>sjp5T zE7kWhu*(SFkb?|X5~k#_s^lZIA0gKUUCwxoo6MQBCo_(jHR`%iify;Z#Q+spr%4q3 z4Rx!8lV%+-tVu5_M+6o0OM1Yo)lL1J?(vt(&-dUijY!JzN7aLt0v`tzVSgmK06oZ8*s&qx#TCP27jPKmy<~p_)-s2cU8w)kt!3H zv%{1=852C8Dlas*rjIv$A{idfH74}Ma!OX15l9een&EM%*yz3)9#7{B=6;G2sN&l? zMLkTYnBdse340MFc$J%+FdG>4RD@oqiXgIzC>=@Iml@Ar^jvPB{pdpeEQ;2??AFDN2Pf!!go@abi zu)7cm*5_HExxV4CAxT<5RB>qPNzM`EuUn!vN`uY=N9r~#Uh}>gw7Z>zG%*XUHmQX; ziGx~;{II|Rn~bD&qj4Md)=;n8FV}S)vwZwZ*_SNAjbT{?%tf}ez~MBW0Kp?>v9C5! zR#qy!tNW2+;)owZg)yxbINbOx9)5pIm%BD70UQqd zryexJW5?32{Hgta%730b&owvV&E5N`@C?ZKUEIeXkcZjUJ%SxqV4Ha{?7GDae@F+x zkwkD_#UbLEFk@)@{Iq|8tA30jU6js6NHyiGoIp)bJWv;FM>wYWlu0$ksHZDgxQSJm zFefoxz_PDXkc2}@rl#UNyY%RBLN`ez<9Tqmq!%`7Vwq^zn=ix#kxq{ zo5W&M%TQUcybx6e8T2})RgUqC&#)NywaxTfT30)xVL8CG>pr*j1I5qRRvOa!ezRz6 zJ@u}{fKV6Cq^^a9eHPLonvBsz{OjhD`Gwkb}T!cd4Ym`!q59J zglAEe>pBV98G?z;`yC8@Nt^piFyuH!T3|EI#sR-zVGs0XRS zG3kWnJ%o`K5jv=Es?ca#Q7{+FPrK(KDsBT!O(!Mgk{@%^&x4VJE_x(Nt*CHJm@^`$ zk{~ZsX>hDWgeqFFAIO~CD{Hb!9wD_uo#QohOik3WLXU?yh4l$t>5xgv6wj*m*`&`7 z1*vp+m0eECupxR>xY$H%>BruNx+zfzlvNj-1H(9Lm{GCAjMRjlj$YO$70Wsuh9rUb zAte)8$m%a$q1Nw4L)U(4p)4vMePqb%9#C*oaI*;C`Q^cWi6F4ZI`rt^uJz=y9{fGx zmCY4+_;o4Hu^3R7YF$7b2$q-#t-4QJHb{;h*U_bh3L`;z$+eZmdT&qhmIGp)#nlI9 zVr?O2#v&oJdHm6olgAz2(e%?S;;1%s;-z}nQpUFUbLn#$>qk!5+AMkcnIH~eqC&*c z1nKCtS71&-5eYXHp$62qU0#+wN+aX~6LC}`2`tq)j(wen$yaqi6-kyRIuWac`l=EfbSoTF zDVb7452lJTO#Py|ztBm#4GJOAKg}2uC$fgGaEmp%T&%8gsI%r;7gWtP5((qc4V^XD zCHO1BIJ(kqka5PW@Vs7UkCMk^i*L3M@PIi^-}g3Jm*cKm?#iI_qwz^tD`ag$*UULa zY?z^VfgL~L^@G!#O*iR8$;X@I{Q1GRaM}*2y_5oQw;0Y`qYSXX$0g2RU*nKVx`Rci zwC2QxGOQQ4%pnuW8A_K-6AH@kPb&7Ak|&;-cy@KdlnP5iqQU&HD;;c-azpod*qq|B z?s7|JSS*>QZLWX ziw3(2t4wDV@A{@qdi@gBycLjKBs#PlQh|2%B}Z1jR3vU^XQ~W31;6LpLr_XA4a;e1 z(Eknp@f(BkNBxqTuic5Jb|*S{JJV=oWk)l=SOXJrfevh-+Y^4zx20rNiM1i1HGH*} z&RrAGZzCw^f(gHL*fAyb9wSOpRy^}2)6|pNREkB6j?Yc&WYths5gBOrn|1d6oLgFQ zy_$qNtypd`r;-q84*k3#>_{Zhlt4;KVl#{l8H^#pN)jm_M5cbYo1OZY)ddK3NFC(cA05~S6HJ@pYEcO-3Hs1N?}6I%X*779gvYwP*G`#*OIyB zc!bK=l}Tx!Q5P-Vy$YA~fS0*R%AhsE1SJ=5!bLF=dB~%hiBj+ktGrV-FgWhFeU7JH zUX*=4Se$2sC#T{w{*r8`B~K?O&v2KH?cA+9{v+|HCA0rgzrq<==bia!cIFfQ+UoD; z=dOK{m!{YF0FUr2r$8+Kc=}1M`)Rz$LHBK}6@3Z4)ka}OvPLG-2)1?r0Du5VL_t&^ z!ef>j<&*MSXqs!Z+=z+@;ilVRN=Z&f6B04lSZ}J-QA)|H?DA`Jkrf%zBWe1C>TdGS zyH|OTd&shhfP|kCi?>*=Gv*xo!LlO46cxh6%_*u9?-VbVD{c=}7|@{-n0e2xoAV`h_zHU* zXo1HexJVp0s*|!a%DPXeccQn+n&`XsdgJT0Jyz5Ue36Y3f6_ zmws$j@PqI7eD`-8qwDV+A>Eh z2KW~5y{`I63_587mGiv&otEGGU5c9-jMYUjL}+THzCK33xTlo}iL$6UsfmeU_>RV7 z5EMW4y!k25+PXFbl8_wLx*A7nOEEwc;@M`-Kod@y9*R&(Xf^0ciYQ!-P3X4tSQRN}}fnQBR{j?%!)mgHK|H-iwghz-4l zU^9bIif2SgC7zj-%q2R9`HI{Xs1dvfHVjQ>~l{Q3v(BCouo%Uv0i>cySxyDQ0veQ~_moK&Yd|7!Lz?oT(^pu^8_ zo}c3)R^htNskGz-ki{8JAH}MxA6;@Pj6ly=3?3!nGyV$y%zYGLfYGRl2cQAp7nB1g zbfn8L889YCqTPhEkeCj8#_^)N#Uy|kSQ4t}+T>Nahb=my+|UC`bsW<^SLA>f%??-X zl#X=S(L+=XbM?&Ck@^%-%NWm_?L)k#2Y8fk;!%pKq*CE!_PDP5jHvJe1r;ZBfEVSa zEx{zrsko;5lypw!zmuFAC#NxP)LV3;Ke(}9J_8cKD+!pvW5-!9o_Fp0u*hWPKs~8hh z!GG`rJ^qIu>vN*#$PynIc2SxsWSn*OABAk|t;HH${jT7_MVfsKVCp^MV&)YStotAG zoVnjLl0)tDu%v}2^|b*s;U=R1`FXgeW5&Kjv3LvxiYK8E&&Vhvt?*tM&<_gw>Z5)o z_-K`WP)!=JwWf-Db@9|HDuG(AB1HLRUXy(;GHxi|hdQCqirkm%$ds4Zqf}wLnxYtT z@5s`WEbT-Ui7+wBwZsqt>8HxeT=rv}fK{cUBqONyE1_jWj6@rA8_!O-FRWOMG2GI9 zO7-kihj)2r|Yl?f3ovtex~~a zYiC&Re@zDE--P9^jivxMlf1a*_w|?Dt8&TSB*n66)-b8ES6-rsDSp6!9Vf(+sbNHz zah#T89O#_A7%a;8Fd9|*Vo^=l*88W$DVY(j zyD^_GE|ZF-OB%Zxf;UrzCm~@!s+Xr&KEXx4+df4mDf6yDQqTE=ZMvjvNXWhtNy7=y z&@;5{#ylh^7?Xz#D+dLq*{{)t)@o0$zFdx1OQfSE^}&Xkgum_Yu0I8N8R0 zl6tJJNhrX=akjnG^Y_5#QYZ9u%>Vr__IUlHDgWa?m~igAlBP;oY9koYY^YUxk~pw8 z@K-zI(blm_`?%YIsRlJ`7_N0{?$pE7#PYg!6qMAJK*@gQO&Nde5BK)Bqr1-o&RdSN0imngNG?M4=T9PiXsgTuAomRhAtc$5vkpc|ad5wMcPjb{FwT)b2a*Ik{GJ zOfO8}lrUaU#=fzd3Kbz$1Y<1DJ1V!B1XUX9bO{EW(wB^hR;-f|G#|p`Vbk^)`J9fX zY?5%Dl8GyLXLdhQ!bkKxDZ=lz4|A?M;0wuia+VbX`@gjV@Ndy_S7u5-8h>8MZ}=J#o4AAgbOXA{_1dZZ^+o9(Y<1%K)f zEC1{tt?|3RHKVEmy*f=})*u?_)~%VpMiqnQdQbZxk7ifxJwNh(`^_bI?}!yfe9hWA za5}a&41e*@t@2O*VV58J-WfxaV_j6fXxHu9n~gsOX=Ipc8lwPr7Ckg2jmbZHX7?k4k$#Unm9};@fLQ> zoEa{9gw;(Iq0zmTE3_g zF#9!I?#iI_T)g5R9DQ>4mY?JwaNorL*!utj)8WVG{~Dv7m&>adJY6i`kv@XclB+t6 z?RSP0Skr_8B@@%+00N9P6i5RG?LeR-3BAVVJEHvpDh3TY4$O^mS!SV+M@n*0F3KT? zjF`wAml(RzB_W}t!k7eO6MA&mkQH8*Jx+Eu_}S`363IC3S9!)f%(LkejQxx$aR81t zc7mm(WTqv*!m9`=r7sZ@dKgwnSfh)mC&&j01;SuN1-`8OgPY-4xzp^r93ho)r_W)wMbZke>I5sd(ZEPj3)JM#Z$< zXj@CGt`$y+Wk*U9Ql{#eh@;esTRKO9d4!aS{ZA8}W2D1K%OFLBVd^Umqbl}93+B zlsnBBzy6oIGAI!rfqygp%6TVdw38n4nerUZ=qYlPn{LGaaO*$t*L&a3{brq?D!;&k z=?Tu5wSfB)sG=uXW$s;2z(z<#B58clb0ZO2nX6~4B?d!^iPqwl#Z1$3=tE!64pSV4 zL*|^9{a8Dyg0X`J8I&+XROT+wXD_nL%YKg!&d#Am7&D`*39j-?$_b~<7PlC2Qx3Vw zAy+uyitIC?;*D~eO<4g^E;2y`dKkPB_L-1G1%@2YHZv?;E{u11LASXiV+N$G(V?KC zpkPaeST$tQVdg7FzMyu|?U8`MO6;?`6OPl&17jT`iM5|c9v#x{DdKC}bKlI$MWe&4 zuNy(7Db6=5jlUeV|8Ccyq^>EoC5XIYEf`l)-8ke=eBYd(`KbXv{@faGe|v{x8-^q? z*l0eOm{@b66_A8b`&ksfj{Jj#N7JG{bekf>k-CzI$6ANA4r7#)Ck)^F{uO@WpB>{T z{*mReduI5(iZq%cHqE~cnZYl5jOt^D#j&^hteV}Hg{WxjP?}Y=H1ZN0PrSb3?7b3^ zzIc6>MvglW9*`h+B?TRu;zh}+m`K4)DpC=;CS@*;QeZ{;OkB<+YDDHJd2G$d0^vGZ zSp@EE;ao&8gf2m;JBk0gHX+5(H5nV7A%#?wT5`&4;G@FHRX;@}Atk7*1i@8DCrfe0 zF^@_Qz6v((2jpz)1WQT5xT~al)pNq+K9M89DT1pn@%kqWl7PmC# zv|VRQx|lE(W=_c$b+;LdGT=T^&btF%Dt1|Cg`Q6sY0jtJ6?S#XXXPB5>8f$-41Sx& z;@|Y;ZmucGHOi~^Yxc!N&B;e~Lo7YMD|sVBN%>IqDnI2u!wzE{%C5_qYehn+x4c76 z@EP5v6rlvxOqX0M5)5N1Qe#jRswkeS5_%xI5*T)q*w>`G&?hj3S-&v%Qe|0aHEb6Ms*D)yljkMBxFljW_in7PSNWWNLivTWJppg3DlB8 zZJ4x0C|f+^%R#VBh6{D42CL%ps7~*I{Rzc4b1@KpII6(mH2>s1P?^2boscOEnxq4RnRm8?&V*xvLK(kVyb= zu(b+LJ(cmf&y*yoghtnzfKn@{A6b;3_;E=OxSx~)7cwI}BNZMnt7HVlk$l|-~+ z5-lRG`7u_6Jl0$53`QU}dq>3*kqA8o=uV?wSV6(n;()j4Y36>)z@$`33K(v=X#;Uu zv8XyGI;Zd@b1J&ArM#pf)0B%GFu{{bhf=5P_z`mwyjZ3R=h;I@$Vh-3BLSIkag2ak zbsXxpl*Nr>@CZ{asC+O3+|wBYNttUc11l&MZ{r?5>u&L)+vZ8OctqAX(?3aPTJk|& z>iWs*VO8}|55(gbd7|^)3dxidz^n*ev+4q zkMoqAMp16~922dRJ&qjDrgXSRhP>j(9BLVx_B@p;-AH@wX;Ans;{Ch9I2c4baayIj{1dphH3 zHaV$%s+C|WI6as$)e<9?Lz(lU3nYt50~LK1mCW}Eb{vbPok1)J4#o&cA`FKqk3F^p zF2|Y*tzw201Cn^(Xq>fY?niqymuL73=&NbRkr2h|8dNY`3)a##r9UJ+3Pr`qp76cz zRo?r}8DDy#%TNET=Rf`YoO7=gI1h=ni1D~e@NL1_cDAI_)N7h^(d=-Gseva=97qU8 zzEU24w8Ia4f1mI9PT_%5Q#!Fn$W#ldiNJa2n@#y|PTGddF7fW!#FI_Lwa+j}pyDN<4MDY%Sjh=?E2a8C8TVoT57pB(h8?DyWCigh zuX4aA%}qwQVB|*#8tX}yxi6Sk1yc%)B+N0WR;>;`L_zL#LD8r4;Y~Qucn% zRXhCg@jvA+^uCLyl6(0>_8WPT*jAiazppQzmC``Bd zPikl>0p@NV9td^Z(gXGg0q{@?MpQsbiQ}3Higq*dNNZIp?^u;CGlh{>VfKgPb9#x( zGNxm?T;PC*IUSgKI^|dOD;(&IM1v&iS=mC>ai45pD#sr(Z{sWeIuo69maPy()zMSS z2?l(S3nZlMG6j@%x>PgAbe!X{?2|K=l9A?Yu);LVbLmI@i(@iq=Gx0)qlTnnFRl$L z4oPA-d1}C!dk1)@O@<_`I!LWlU7uS~p_Y29SA84xToy%lsmn929<&3LruE;RMrNm8 zg#ejUq*}7-9PfH^&fog6ieLGeA^-G$+T?q_z0cafV+h_%ruK_!*MzhkENbX(L12)Y z-YtYIO&q6Va*23WE)ybnq5Wn1~{N&byxV42EGvCb}Ab)rR1f&QXpd_f-SK zWhP+~<%0p%$PiWfWGF%0IG3PE|FRr%Rpv}3v`^%*%cu}f5mm=syyP{k>*L|{F>I)z zV9pf|sVF#P%FEe^ou22*{sw2e>%7jc^LjhvCI^g|F(D88trbq7q@s)A8l!NJt%|9VQEOt&~=2hCL1iDO+dPD(Et8U||m ze{?VKhgY8Ev|Zsk`@D7VC>N_;enl^`sy%)A(ra9+c3*mqR}R0Xqw{~ka#v?cKMHcZ z>Rvdh8`ncq8|4S$8RLbR}h*L(a-N`+mki zx_rjJ!U ztvDuqroLpGNjx8So`{)P47UPF0)pp}*ROHvxMHP1eE}{`&PP99QRLC! zQQLdjvYA+75C-vCF=786ex2|Ke_)Moeuwb%8$7FnF>dT}b4YC@p~wBHYncnXjvA_y zMK)P)vfh=W5NGRjwG&K^e6)e|YMOoB+*_N@IXHVy#nW%j_{6U|jIDc}?sT2vNsezA z2}%lq6&IeVOe|JmswG`gdRQtPeM#BVDLXo4UkWBv?7JCbsiKRJCyULdG&y2T->wzy z9aAcDJYIxd%^64skLLzCpQr6 zlnI`jeukI?v|`hAIiWp%E`NbjX2{G}e32bqbXWQI?&IJ+f7E^}Uzt7sm8;CY%0u(@ zzue8463>C2CE2!CF25;xfEWA?eL-$ujpc>n8ZTDYxZw8~Q=&K?NCw<*`n=6<@|y1R zg=(7>e)KfOH^pbVofo&#=58T+BaBjWMAqSx8i377pY zrGk>6k}~y0Bsu`Sl&MtAs8FjMO9xaDF*jKDnXv1}?6?EIgU6X^!BAFMl>z(A8ef`3 zEQKg3DJsfWxXBB8ldt$4&U45uCJ-Nk9tkr6Yf|2|_9(|?l@D^BFPnWz2?1$NfdE~C z#D9h3xE*2)oH47Mlp$C25TafB9T#0>N?9s6t$5;%$LV(~gaWPRVfOD^a9zXNf}_vT zVhC!z(Aw70fZMba)lIh1YpBkWTD?3q$pY_Cb)X)b1agK>9Z6B}=-HAV{(j}}{69Lp z;W39&#zxnpQbnF++M91aXQ()_rTjntW|zPGXC3c)x?;ta=(KK*UF=WI9#roa=ch@) zbP3+9`4o$qTZ_2BZ*+O&PA|4RleCot3F<9bD!k`gyNFQ|F(HeUJFmUDkfK!T8R5llcggYMnNyNVLQlFVaA0#fNvDDBN8}u8!5r9^ zIRPrIS$E;02+)x@9X7NGR8gW#J!1-tSiazPxTaIav32Dk>2roY8`5cjz5~q}lCY&| zX!KV&$VWWWeTWCTCm3d3`D^9BV~)M>UplsaEtk7GC;|FI{QT^!oVxKRd+*gJ%{}`*=D{S>fatWaqlkT6boc61a}k~POjLSif`DVO~=ila});r1Ry6=<>hw&0TN;qX|L z9x1tc9^wQ~^8g32dDohR9hoq+fkk*p_egAqH>VHK!3O9I^-qktF7e^Oy7)oP#kYh|Vc-_oJsf;iuH0chci*c3}?cuz#uQR4Knt$6IY(a7m zL!^TXX(~Ma#4(ftbiQETIfuI1X*TvEwQC*iKjny+LJc`BxMmIOYsosIfxE(B(Wrtq z8Cq+grzRqR7#r>jS0VYFM;xo$sU_h_IKKvFFUePgV!fU$6zfNA_Dlg)j60S#pI>ARIz#w!@2SFJ`{3a;f2|cxR zRp{cm&IBuld(8?JN(akH23+$~KJKpYHh&-QNFL<7b<(bq#E$^Fk+uE-W53S z5z}E7b>ey?WY|WB?KR!!#o{u8@N{;Tdz0fK&}qtwtTL30LtAm3T|UN3{EB~xLX=0% zX};(#@vriavy!f1NpZlYtgvo+RGH;wQn6}=krM8>Ma~!IH`%RnF6chDbc)l^0q+rB zm7PF_kYH|h+^$k;N#+v@U$HL*x=a?HR$Zy-XR0%WI!M(6b=+>SY^Z;aeLp_10BbH~Q}6PDjA1Bw z-TmPnux2SeSw_v8Os@`tA%Z^kXiC=yCgLLNla@SCowe1{KR)fK6kk+4^;p5{9ty1trafC&zB27A7ru|um4u;W z+>;C$n2dGpa_Hx%2nC+0I4Vi_lI}CoisN>L>oOs;2?si-Aeda1F;}U4=%w@Vyf_zh z^D+`kwvs`i;{#f*Zh z>~Yl}QdJHwAqdVXxS+c@HC*#!>O2TMnHV}jN|se0n(wXJI8p>VnXVWfPd7-^;?*#~ zG9=|tN-_+po-fNT*K~~FF(O>iG51NIH_LH$$+24SUlo6!e^`7NEemc;_VoYO|3l|@ z;HBFx!d()I()Zzf&qqy%qpuStYCRY`)rYrSWACg za6LcZlo`+`C5fIwkJ)t|v3(%NsB+TuaH`~SuvrX45#or#tZ`Q$(nzn$gfXFJ)E2D;vPF>A_Zf~L*t)7+Uc?_bB^0} z`X(hK;f5cRY09Sbxyg)|bUW&LwbGT=?Ig8JY0Q#l^MZFgdzKShfX=`bh!2gkHN|=P z(OJ|Z76tj%>7}0aE46W7>#f$_v|ywTQsg7>vNyrp1b13U(m~*1LNo>xs$SLTEyl$y=?%T&CEulwK~N&*k&nd}Il6Z1-W& z+E`$;C0WIzkEh|@M_O>-k%N}ji4X~@;3QP)nW&2cu>%R_c#c?i5@myaXgkm;dotsO zAG1r&RmMySnbe|@I)di1=owNxhJ;`D*C`@AR*B_YzQcollUo#=w3~EI!h{)fE$Cv{ zl9Ua}P&|F@up%8gk}{A!UzD57b%w=Lc^Bpj3VS+cPRaF%jI2q>fKJe3Q!-MNRgraOFD zc6r#Y^R3B!jI`tzs!!;7dHKV@q27t7f0r!36M~Ws?D}gz#iw=$+Tow^arW&T+wF3N zeNLDj_mJ`oL#|S?M?u#cPO*xSgi{R3qNP}h;hLXt(H(|KtSCDaOucUyJ`gZP} z^`3X%2TVZ=@U>lqqZVHkUFfz+oo%ta>ZM<$c3VBN+)e~+l*Mc12U)UQUj&C`D6eG) z;o}6vE8R}q$WcN;9r&cqO6p)xdk_h|o{1a_PvC>suw_fH&M!B@DjH!QzYwPVDnpIX z>Mc6TVyIth1+TV#ZReUD~_dN4-LYl@}PUA+at-WB8xnU5s%<*h9!Kr7j zoZ`KUz*Xo43r*#rCosX_(8fp)EV+2jv5zMhOjfcGnpKfT5wF69nv*)5@r+EtI+j9n zQU-iTE^{C`7ppx+K4(MvY|4Nh9k!V=7tc+`ti~s~6PwPT_ZP{GAvJ=F_J2k)DuRLG zJUBkFt2v6{rcSx3f!6-AJ0Ouz_v%Df+zys?QhanfvuH37)Cv`)6wgC;ol|DO(`+)= zf(+qF*4Y$`#c6`2s~OL99^>cSdHz86&HA3~@!by>Z)9;aN|D6Mf;djf3W<6Sm{aRud0((s>~kOmb6>INrqKh}aDxMk zSOzvDkFt{<#c74A@Hx524KwAMj@i>3N5W-xxxzlLnQdN{ZO-d9hdSe`hQ`+8tl}Nq zZ5i^Wf{#X41*O_Cr%a*J#_47cD#xQm>PSHoS;(!@r3KA@1=1jGq^kLtmp%K>^ zi)jUlpu(Lb;r$a^eZKK6>-chv__E1R#8;6*-O#_5n0L*;maJPth-g(y7Gv(wh_sw3 zwHK*tDcWL0x5n=!xGch4sE~DR>xnsvjQB;CMZKRj#AxYvCF-)a2@N%5=bN7mxgo5w z$(q`6<~B@5TeUTR70&l}Q8_nRH!~vL_?fZI@gAfE}5TNlLDc9vPN|8+r&a&(Y?>cydZ+ zRMB3-qVahy<384B=&BzxWzhs{F-$2CJnu+PF)#*$<)rjTymFw9FZ*52`#pY6U&EqI zspiK>t{>AZFRF^N%=Nx(oo`uvh7)F$o6Ph(x^KSlr+dHWobrJ?ORd}`%kPAsB*Jt4 z2YBzld9#0%w{n`_Z{MchBoFat91Wb;em4@)o&|Q+B1%o*Qb)CVfuX6|T#O9XZ4S zeX>An#V^PLO~$lPJTQjFuA;0eo_NzHCr{6D)f9YzxGFTVdUt2|u3e&tt8d~%Lu{ze zxm9@ zs-b(wKpY!m7i~n+ZYerKaG+ItY6YBnE_DYUg52pC+RVP1PaiYc+Unx;{f-l71QWff zq@J9#kb@>D$)bK%P_k;e7?hhj;wlqF63SYwK|C2kA)cug%w15xtF+*zjCql5X3;bd zAQeMUom?nE%wl7%MY!pw^d)1LIfqj41RK1OO{&P=d&nH4BPr+HHkWmebLA}(Z@IxC zl>sm$5+r;sv4{6CcLkXkkP6kDTkNvU7%w0u1Cnq*iqK||)EGd4a!N9ei7=)FJU4ZW zk(5*n+gh+o1>W)IzJ9P`U^u2pFNI#=V|Q!_6~a*u~z?2yZ=C6W8eSF z{L{0)I{m4CzqfsGN%*PuRPL@@?&?0JxG2D+Q+(`|>ipiXnyVX606*bA!BcWd-zvxS zQ*49Cj;jA?hJDl;edLOr%8TWWbP*DS&$(?L?QC*TR*Y16iW5w<%7(1*bG$;IAVT`Q zyTV)?A97#egsiY7hIg9RV;%HJDeAx~b22(ibbK) zx4&%-7-4-5t_bo%jpag}F&w>`N7^gefl7|d&b2-6OY_1~tfC$xT8y;iAI&G1h!pXa zMjfJE?7HJp@96ReR2A={G>?y&W<7Y<8m;Y}sn0>Q=?E6zH7Q~F*p~v-9Zp?)&+2v7 z@gvk@B<>T7h^x?+9IEXojWL{B^*r&Y@bdExYlNyMA|5^NqnA*HDLDldrBw9OjG}P# zWymUBh&^kWMu%DBa4sk`TxLWU%LLDc7&0*dp@`B^Gc7}J5!x8!ZOMQQ`gGHj*Zcwh zxq6KuJtPLQ8=8{>eHq~J9HUQ9QVw;_4l_2S%N2jXgo-I1LnpLh5Fl8KW6qpIW~f-y zhiBp*`pn7Mr6dv4x@JOZ;7|*^R%|654yqYnscvD(I4c9Dzz|py;g`w_+$RH8Y{t}0 ze|Zo6$N!A$GvLC92H*A4&-&}fe{uZcTMsDh51Xgi^|K3q>)?Yw{kQnw{LXj4-Lw2o z$dmx&_wN7o3qL*k)ek56pyRYv-&+|)hF=hat#ZcO>-Hd*<_Kasx684)&< zE<bKWc`80nl5Ib$v9nFJRb0Zo(|sUJck(qtM&5;Cz&nYXa@ zKs)z%4w$iSSI{KIsAZoyMzZE{c6ctbhnJG6PASy0?<&4r?Zl23<))i*P3K(C_xOhF zEJiIQaG*Iepi9Pm1ZK~7$iAi^F6hgveALr+o$(g_Zl z7*v#fCXC3LN*;qw-Ob;=ed_uNm{^_f_6%?ShAlMD5lZkSONM;)Kz7uC_2@IDi*3|C zMcV%CkwLuuy(QSHO(tmV_idXz8hdK?pDvtomOtEn;>FBNBr3D$* z))TFEuH}7eA7?w0y5m#Ak+`u4(rxYA#qKYsS4Ir|#PH;k36f~6tF~qdZLg6d*V72} zP0CO*dL$ec^QdR1O|McZA#mmD*mHTHkt4x~PouJf2DmOj=tOBAX~+&^as0a6#7fG< z=XizVIv~Turth#vQ>_@9E~m^oTddKei>PHn&Wn1Dj4l}omt>ErSd{Qw`&zdW!!C2q z%K=UkYEh_NoinCt>TrEYc{14`5yL7OxjLp&vSvG+&Q`fEUFVc^IM55GB;$VR6eFGgTc_m@KhMs;dWD0_s|5Ol7*3J2nsMnq#Qh%nJPnRa=p zx`~S6s*Ko3hPW0Ajd&_`%oWhk#SjX^Rg~}dteb?Qs`!b?r%@bRl2N&mn@l(X!oQv+WA@PKj_#8;zO+S2S^j*g;ta3pU-O<#4;Jt76+bvb2ht@s| zCLE-+StSh=N9)4Wl=|>pW8jfD7}9}~*jQU?0+BB5SbG%(75j`Cnl5Y71F;OE{0j zGt-jGZbT_1`@XcKn1}I%S(N$E6d59%JG3W-;QW={63-yxTSmCk_j)Fn~W2~HNVHu zbaB8hSFi9{cZpnb9_pNAE+v~fV4xkm!h`}ZiWkMIp)Xkg?8F4geqZ8z?FCey{P3(u zq{mCFu0Qd_2E#QFX=os=s(TzJ{gDB=J(F(+J6Q@6T5q$R2GwsiHK$hZj@}`VHTzyi zhjg2RmE?7F+<}`)h z+kMTg-Mtga)@I}hx-_KK-b#xz6ZEVfeOTDq3<9+^xVMC{##*Dc0=}x}lHcb*=X6N} zOt1{(4Vk0fVM%Qjn2gNO)Oq5Xj!1%X$m6;Lw+xD@Ujpj!B114SngL zCIqSAMn>FMMIz%aP{#|7nI0BPM{V?%`^bDg9)IX3d7 z{O>+Fy}t6Ud2i=muzScdDb{t(VE^;%lz+AOwd61J&HQ5VD(8|z9<;|;r_bsCFMIzT zZ`pO$_v7zpt-bfDx6YlpQ#F!Cy;zbZ_bOwI!3F{ZNGN%QU%mm-NJ5e?q!F70(trdo zflvY=kWdn^aqn`GY)O`^?vXU3=`(k3FQ@IY*7N&g?S0OcQ zde-wipWMy7@d(K#UcuI6SJY7KFTKfP&1*YIZl3H0@KWaV_jsHOY%*gS9JVtYb;~U4 zfSM%CNgG3gktld6m0?54I7q^*i7_aVn&Ap96l=mn6q@~&hFJLZ*CnPA)i|Zg?4iwh z*4Q!`R)CUUp&nw1h$Tq%Z)wIk?U9>;o8vt+#ByD-n{~HEkBmvFQI8{zM7x- zy7($GaU6FS=^CYDe9-3-VUB5DZm(imn(U3HFhQ27z))O2StEdFELTWlbH4NrG&U zSSD>kwXg|N$pKJN@fi#8cqv%(UD{ZtZGwn!z|62=m5cPSz%#6IFrH+8t;L$}^9}Y| z_bt41i{}qrhOM7|#kc*Zw;Z|k-~1>a+u*BYd{qUday+k0uO@#qD zEA-eGPjN;%tmuG)vWug|0+|k2$-5Lq24bmsL*WYMv_V%h>exVJbe^_LSdkuug!8Er zF{>>an$VUyE7D^onZjsTEk6G;ht;MCSP_y)*tIKR@4kAVBH@QnS&^}f2?F9vKt(S7 zp;f4`VO40XnZE5sWl>DZDN?FNe)a5*a#=a?Z%=w;_*f|4nbD2}#JC;uI@LBtx2x+h zs=$Q<_g+yG1OcV0#Tgy;gGMoKESs!g*W;)G9S@3Q)i@c?;*?SF8{h8sAIUHX@3<@@ z{l2k`aTvV}BFf8N7Gp|3qM@AA_H=Kw#c~Ip&?}AAGC_?k&FGVpYD!*yM;6#Zuynjq zslq7{i+M_ioU^jYz$jh_e5R6dR2|+gZYdT4*EyGOVhM{Xufa~F9mUMr z8q+3#FS=TgX%w7qRk^?_y6wMkRYPgrkZOTfLyo8CgH9eIbWF~T$u43EzHEk&Z3az; zf;ZWHWWK{|8wa>Ln&hr%p10a-IBaLgwBTs5%Cg(wefkWqn7-D0!%c6=c!6=#2Y&k0 z-+1f~7x^k0UyVWO%Z@$7n;qXz*F@z8*`v$F7N74w!!>3mn1x}u;5s~BT%?KN4R)UI ziH>kbw3j`m$(A2*y4b>%=(~MVW7bqvP$}ifa#~SsOr{ltAm&&z5s%4fQVNz$kH{oc z<&L&Qv`PhX9iL9MU`iqeWE_kqNr4S1n6P!Gqlo)@Cpea`a${?bGqT2_4k)~*t`XvL zz_3LM^@NGYu;jWVSSEeK6m`I`q+1Ng1CU)3QUX)mtFl3ckpvy0wMKUF!wjXIJdFWV z*t@sQ++2i_e5mC%?2w2l%N`?pXn`_7jn$Nf=tV_LIqeNgYI5lSHHIY!^I-|gm5Ns* zV}BqvC{ReLL@^`*SGLuLazCSU-VV#&o`F<1!kLaSS<7<(8G3uD1ekSoER@GLUTdrR zIpcw++5?O}1%Y7WQ(cdpc1PR54B^kKGVabj-1l&=m5Jc!Gd6(n1$W-oWOk3Olu>u& zggbhDWu{e>*7WIxk1xd3;Yz3p?Byt=n zN`pH4WtJ4Us3}XX!*@ovlpm!qZJI2^fes8QC;MitbxP`hFKfl zQxWE*RGUByPD{fX3CPoR9nkfCa&o#p0EI*>6C_Mh=hN;qTVy;mILjCFi~Q{1K@!{G zW;@Rt;=N>kz*;)sm3mM=u>9c3UwrDfE|n>L)sC;4p3%iyC zNQ2$U1jh$YFoEH4eTIgQS#et&*L6NvoZxCZgO>Kjt7IS%7NLe^Rr`dWO;`;%V5=Cg zZN?M@3J#k|I@;lkU!-MXdc^=G1|T1<#mb3ag3;ZKZPL{~>zU(4%l>ko@R+d(xw0si8vvv zIFwi|u|!PLh%oEfTOhY7zDTd=bI{Kvjt zi0Jlgr3wH(C}Cp)2^TH1!;%rZjRZV?t~*PWI}?&}``c`sF43mi`P}x$%WF7p5=dnw zGAeI|M9H8Y=I1Oo+)(HK&*bIXFMU16cP3$2^OK}Go1Lb#eyfW7c0G&U^+Ngx=f#;69TUYx0zX<@hhYn zGB?4q-!xfuj+#VV#RO00$MGhntu@{#SFu2s*Kh^5nS+~&6IC7+*_rNsm5vu(ru0o* zzqPDOYco=(Zwp>qJIEW{)qFBN&Td+Km)uJ3a&S4RW-R+2Il?n;jTOykQR9F#p)AUs zDb*IhRjtr+g|}Vt0X(T@oGsQ^^Bta$^PKVPAOR}glq5LaQVds?VJ#-iCJh`)orr1M zBo@n-W(b1OU^C(H%$r&6n!KJ=2MomFffc{OUSH?9F0t%3Fec%!ZBa8J^D@8_vOp*D zEYQKLVV};hU#HkFQ`Crg)~^s&t~xxI@t$inp;lRtS7CalP7+x}g1Ui&Qcmhl1tdakjFy>Vl`Uym!W_?-#^e&luI=a;pQq9=mPHLw-a8vkJI>Ek z;0;lB7EgzpuQFOnm0fFbnh+&Tt~fA>m*V-b{^1di2m8Rm>uXL#L_$O(bYpR4-)Mu3 zZk$nzgQ&6M$x8)?@a=PSNx4Xmj%G}`Ivxq2AmA7qENhnqBN? ziZ9d3pm{lAn^cB;)q?OS7wC}T)f0)*APRt;%D8VBt1Weey{3txOcBvk&qlt^4Q852 zu`Kw?(M>57X0^^=tlu0mLk;0@MRRVn`?<;PrDF=Zl5~c44gaO{^2SZaUKU@^e{+xd6Zsmqn5)?>Epl=$$QEfn;0jk`7d0r2yDD&MA_>#d z1Rz3~G!cdZq2QotaiyK)plvZhJVHnTm3G#a7Hs;0Pv~*ZYp2YTlvlBj8Di>KW^ElQ z3xtU0RJzO*F)y?G*wQq($CA@4QAiz94#u-QCl@)!5|)Tm3ziwMz<_C*ys>c`AUvF& zLSNPXnlf#2_(h zVlYt%QYHkapqppFmi?AXOt9sqM-#1#%2(sJpEpq(Lbg+>Ae9+XRpuI2K zUzIJXF=!mIyk@s$XV067W$emS<*@P*=LJkeux+(rUsRfb2C-(_ac*lWMLs76GEY?H}Q-tsNmd}W>rKV%xqpi~`7h8cOTo>UAnq@8(E~J)VkUi4ib~_6c zJm*(AuN`uPCyR@0`YsFFCDow%VzI1{@;kjJc%>XDi_7r0Td(8O`O~~Nf0D=b0uSqX zPU{wGWN9~x9^Ub%p8Wp5GG1&!2?6fQzVOf=Wna+05Zxq&s&1Jcg&0=pagTqFw$%9u z=h;*b60^tD*<%{KyuP2Df~Wi@MiMeSD{hPFsL51R8WEwGct7n z<%i*HzQW1D0{5;z%1h$|yt#e@JxyuT-~;|?28rS$;UZgHA6-R5>o}Aq4KhtRWcIL6 zrzt2%wV#(wxQ207xYltcTBtdM9 zlmUt|3lU`GpF>wLb26EEW^om^jGzhwDNK{ z5(0=VvzjR4%$f3Zw|$#-^pvWZc?_}UobvdS8L31#=gX|j41<$a`?Cg&EsrI(_`)YM%mT;CoI5khDlv#uQw9SZ)osneE(ldR#r!Ij*#PBAFmm8+f+EYYWn!>TP&c%fXrf%2p- zqN1Gfo27hL%Hy)m>*B*i+j;HXfI1|gD&z7|~2El#nC zH4#=uJ-!+dYd+OZo$xRI9yc|bFVCcQw9A=J)8itsdj^^xE}_vnCg4NyM9z zE4eM6=S}q+n2{#eC3|U^(C_JM#)V>o*{Dv0DJ=&Sk%)EIr{jVz%%)GdP;7BW^Dqsu z*b*+>EeiTBAFk>{-ciAB;T#<@DX6Tl8$`jttP(m!>1oEKZ2=6CWjT)d+GJ2sK(W;5 z`IJ*`k!$TdFV#KNq(CR3iFj}J#jp}Y8IW_W>}TEe0m@dh1MzJ6J}3Peo7yc` zbe^b$sxv%`(Qn0jrEp4~D^EPS!lyp9h?fT5)xp%j)*)&jCIqIcoEIkNvX8+C1hA8N zIyCef&B&u;87oVT%3x#fuO|9&5Jj1#i3!0#ZP>TiGRTz_9WMzNF4p+uCqwVhxl5!o zmq^nBH!6toe)Qu#KKU8NM>QNV9>I%*(xA1$6Wy2)l&#rbLfn?6Fv?uUds1WR(5Un_ z`p%ELTIg7$8qYX~%|RGujUr`mE;A&r7PW0Y@!560aQ_Pv*4#bTI=nlz&*P&g(v|1eV333zQS}HgJF+o4~a6S_$DP z773!S8a!2;RIPc(!FZNJVc88zsB(bA4k(z5+w9UNEfNM=uv_bNeTv4)6}p$F^eo>T zy^0g8@w6^b;91fQ3LG`5QIk3<1vfCyv^IuEdPX)_WQ#@C*(5C!0TZnBi-yU^Z?C63~Iwbus02sJ35TAbEafv@LdS<7Y9- z$c8KbGANhXYslg(*a)!}FA+X!@z~RrfAY`HaQ0LHM-*e+urJfM2v!^HA3dy5W?OfVJ|IiW)=%1fDy~@n`b$%!A8AdV&ki6Y@gdIT7rBFZp3)5{x!6q% zC;d82>dcuoxj42o$BA-9G|7C_B-MgV&5-hPMi^>h8I(%jMF~Wx0kcG*(Ms7%K!+M% zt|ag!CPAb^;{g)U*PNC~NO2THxi5W=*PE-E)|eO}CdT9GNX|)FWr@IU_t=ozJ+Co7Y6Ml%I>rc{ z^@5LnuR>q-t^Sw|fh8v-i0kZnHCN_Dioagyq`F3xb)HQNJ{lo>_!nqgov`RM*3X)!CN=_|>H<*^e)$82%#TNhcCsY32&usGG7Y3w*N{Bb`XP$q|;}E##KfKv- zJoHG)`#(J3+2`QOBQg7~viQv4avke&F$%g>f2S%znvuv|#Sf}@Sq!h#PT)p)(`?&( z36n3U>9Wi@%*x6Djg7!syoo4?Ik8aV@Bi=u4?UQpKG>40e!0rhXsL!kn;O@%hZ$Np zEtsLfl-6020l&$^s921Il2>9($!)4^>cQb?lW-@8$Rx!{&MCTlP*2hzW>b6Q>gcLR z#RQX1936@hEgNA?L_tB}l~@fo+c~`Y;lc|_xV!{&&$Q$hRGGRF$h6PZ(JWhZNPugY zVM)4V8sO@E4GIrVe5vv-Wa+Tn~}BSu-EixWpA!jh~J8Ou4lMG{4<=q4RfCT#<+@L=~i zLc|5P#y*{3f~2%?_w3OIyQwir%p?hvCT$}%?rOHHkY=HZ<2>X=K%Diqg#X`P{RkiX zWS?B7akL<+gQDbyjKpOoV@Ca*vHnIyB;B_9mx@a>>J!PZBvzH>qB7`|Uo+a(d%wHE;-Zr05vWBqly^p`gz*5ivxFzx z$V1KvMXp@9Q1Gk2+2i$Z>GAzPq&)OYOqxXGJ`O8#3CFB9g21Ythi)i0>VurRtI%{=!cg0+-D1Xt`y#ni4$LHjIyLq z&J01RDFFo3Bq0LoCgKrukyL{SP-HAtgxos{A4Ghs%sQnY!!aOa9s_|#30ie)+QTDk zQLsVEIo+b88KwjoHAI*YTY?S(sHU$u54dv}8xu=3%+`Ydtb@2#mY5BZ3b9hc)(wxl z1-3M2K*1WF(sydStxL9)06^WAl3YvFFk3G_SPR(pO;%_+ELL z-Y7Hj)AhHW`Zo41zvIt(vi!e1UX+;&=0EV&i zUxv+#afzEES3dvw3mmv&o+H<^!Ka8RjqP;QG%h>QjIty~B|A|n!qGVSHGmTs%YrBa zSeRIYdV(E8;Te$7A3(s_h^@57=N^Y&{~wN@_%|uP{Hq?wgbVP;Q6vl)R@T57foI3pE?Auyp@$P9Zw z)dd^h^{AvdbT1#4Im_3WF@S}!A&}dUC3$1;al+Bl3E%&N>)dy*!=S;1*pKNIzF^a% zBqEm?**-JL6m@pd<^XM)YKg@18~Pv%Y~fYOwW<*)Rx07HQ4w%bYTPdSsACz3Afr8=6-&e@+Q}Oih!-EwSViOianHHtBx}zd?D2B}CLx9AgsKvZASl52w zC+SF(xl5mG%`|nfbV`-TDkKjirz?4RM#^hvkI;-FKDc?5wYxi(^8|WDc#ZtFD~totDnI*#G$%3O__L&B_Sla&zX-KLH;mg{s+$&7b&WWb}kz?vB_sSUbi9Xw~8+U z1B|@aEqLsUOI&$mo@=jf;`0JyD*SSV2pdi8+e&w4)X1-TLRyszt8&&jc%kfzRB-DM zOAIO&rv|kkjfjqG@bUYEpL$ouFaAoGkAJeyxpR&@j}VFRJ_^C8f~{|tKNvgxo!4QM zA&iPwy6w5jNmqbgUwQhOoKJox<$;Ghg)tnwGNwIg!TF%ZJ`@=C5uKX^JDU5HAPM4@1qD)AG z{Y)}Loqe>JASm3g%7EYYU&Po1Ee$D#*NKt9Pxzt~B*fgp0SpBf= zCG<)V*gTqa0>*hJLD&=O0Jl%o7~Dawqg6MUSiibR3n>1ocE4#@D#QfHEw4tYtc zP-aYnnu)o>v=Px#%o)Dd-o^@j)<|iQu;#W{Ot-+p6qbY3Ijvg=!YMYjpeuhhdg<{~ z=HkEoC3j}|&vc^vGZ-&6MThYrUED*F^5mLqy?l2vBPt1J`}gt&xrSH7H&FC@JnbGN zAuLrCXd27wr*Gha{%H=|HZ=?viVj9Ri`r*e5)8$dvvkN|Mr3@)UYblv!gIPwA+{`m zgl7wcW$jU*6jCrREzW4hq-n6?(qZVDwrw&BR(ywBnddp#WX`t8Njcs>kD*24J(~75{XChk((}HgMJkObp;u(61Y%)K6s#;HxPIKS}Auj3oOZVyFol_)A_PR9sFEm~SyxS?b0wg6BC zys_TW$QNiV1Hgg_(~$R}h!eFUQe*ho$KgNxT$j(?-wQBpZ*k6|WzQ&NM&lrg^2CN< zjOUlEs@$b|osNC3mkeC0_(~zbE9>i?Pu)A<)1OOu*DojhogZxTo!{D`6=k?ijuAVQ zaiZ)+hKpUU%Y9itHRD1IVLz2H`{YqzN4A>HFm8xUEnIzSMu6Jzu05MO?ZAC_CNR75k;8AXB z%yX^oqbCD)+d95bzUWTyoLl83(P1w7EgE7NkaK}mZi^4HznB`XDp#e40~Y)i>jXG- zj~sW&$!9DR*s)MHVusQ?kyt+Xf#=wFa5qP;oyHo)7>AUmh*FXYAE*3>pWWoS6B+mj=Pk}xrMWWb4xxh8zoVcR z4r^zi8A}(2ntg1)5R8K8Xj`L;@5->53~qJ;OxO za}qJ^mr2%10XQISQj|4cu<27` zG4yb(yAC%c2dH_&J^52KO@n820f=cwP1bxja6OEpZE9EpSG(OLVu>ZDOTk4tbjjE) zEq2kSE;ZK6zS#DR;rXS!p^#|#f2WG~ArpJ>fkh^#Cb;RAU4aK;WUPdzqaNLV77{^&F~Y^AoKJox<8${rHu{#SJ%;J&D3mly*&7)- z01g9{j0K<}*kR~2TlJyFuUi?A5PW2L`h3FQ{d*ao`h)~GSm!8|GIOcU@r44>=(dzX ze-k!gk8d+6HTKeGl9;$8j((J9*(3|+E~Zr0-+qm(SSpcQi*T#XBPgHXI4#p4Dgg{N z3BFBG5o;@ugeNW~f)cSMf;IH)E@+QA+h*0LSS+y^GIClH;S~C0^rWET23F+Qo+?XZ z6atgPOi9c>nyk=AF`P)3S7fI*8Cw>i`rjgI4Pjbd>@lbY} z!|@zf#=H6b^bxkm`Tpe9417x6CcMPXbJA^)X-OL^LJlpiE)~R_J5IFi)F~6r`oA zOkeX-4Wds&Ew3{-a-VyKmNYr-mk}cN*Js&sJrWaBPy}BY4>#yuCZ$2FF-G8H`ZSp+ zO^qn<zL))x`6>8G9^a@B~haFPr1(!1IL%m#Mc~yzG_x@y?ZTW?V98Ec2*> zgBiY^hCDXLd2x;=39si$o@S9pxIj+}259L8 z7Lap6^Ki@)N=BXBDlmuaDLB=(ZNj=65Q!n9DEq-u3bzJtq+O;#S`v0sANYo zGFn)6Nu9HF!=i%V@zm3tH`lJ@c)re7G2oor;O^u)zGwQae6BdgX12h|Vwn~CX$}92 zFG=;6-oyHf3fwS0Ui3k!1FJLWO?9y^zg4c+-|Br(-eKRyZY(pt#v{cAKA0cnE#^AD zzIGGO`HOtfpQpgnBI3Mu=@a1BR-wlLPk@0RkqOo{3sblR>HapBnu%G}f<6VggdaR* zZzt27m(=!=`;h)`_>2{wk!e_`?KLfKW;YkvWL5j9iCHljsS!|9PDFtR1O*e)X+b@8V1AXEag5;-S)_`|1&Yi(Zjn!~sv!&*O_h(cRn`$@6Ja5 zmq+7mf9*~YUo-sk-cUHp%Chk3do%vQ)`yL^TQdBJ{+N5Nxj3Xj6uI&C^Nov3R#ng!_jW8V~(a;W~9zOnP4L5 zqHt0+xz8V`X4?#OfYUG+TN{^)lFEmu%Ah?nQsZmnMn1?hENh>-sgr6>Lt+%gm4Q=G z>c*C~>WU>Q*Gb`fqh*QE<5|-Y9Kx$(I%-lg7O%>*t<%?x29|-Q!{ezqO9sJ+Wx^!P z$89dU4uX(UFiXNDmdA<}A`!mR-ocapJU7-4a|3gHDu0^0n)`S*U(|K&e?G?j%b#a) zi5FonsTwc(paf`(Wa)&gfA=@mZj1N02JiDv$OHBwZ<4EN+n9Zg8J@|PSfIl*ZiyS1 zWld79j(2m)uaT1RV~sap#3Q8x!+?T$X@ht=xU#P#Oqm*14gIn?3LzYUFeQe4w!wxU zu%!iynv$ZVz8Fr_TiWLw%PeV^Lrf8?p)X+>sCYy?Mjb7qM8@Jpd9%NsCs^P)yTY-p zi)^?Yi^X}zvhU*%lpGbsiRC8d0mC9&3?yUK_c_8YR0A-gEfHI!#6;v}ruV|xL)nzq zl5L{k#)4C;8S|M>oukk?x8JcBYf3j$GmZ)yWkyQNO0TJ_5|j1XI)yU-FV9s3lC(ph3(h^f`{Q zOsa!15Vhbn4;(%*V{!h|0dN0};ADr|)yT2)P#A5X~@S60VaOk|^Tk@m?;t^&qD#ju>H63r@H- zzBRd-npoy+64c=l=HezxzQ<{|%x;?eVfHA0H25O9clyQjoc4XOV#$8|^K?GVi#Q;` z<)8$>Yk2$ekS?v&uaFtBalbk+|!)Ai6rYvhpCHZK|i6_Ey&^GC4 z&Uqgy>`|#)Tmc`zQxkY~<1nX+4FsW2;7L`_C*s*%AJ!eb{azwtYcAN%nh z?|E;Bt*tihdW+691Au(%6Cos_G5Q##NKk&W5v81B12iewgfMxouXpbe=;a0Pk8QY-1akxIqVi8<( z&-yJ^>4SkAWR5z9S59BUs_T(QhFo(xnsJTn;%B07;f!CBvn;=Rj^59mq-+$wh{xri z1U$u4u26saZT`qNo@Jx`QrXY14<3{Tmc6Z6?&&bJR)1uurFX8CUTn7fH!!)1YM<^y7>*pW?M3#nF^_$gJN!v0iFy2MWlTahymf z4XGC%dT4=##hll?;hHe1O2~+`3??2yjYAqS8FfDYsPHqt*ym?|uE&Qy)Ms(gp=$AJ z%B1FnN@L?aBX-=EF+4S6d@C41;Ku_{Rl3~HKYLzqlASl?636q$JwKK;QK8@j^_I1D z_`*YuPkqL7^jSz+5r+@QL=A&_kN0Mz;!y6VP>NlgvYCgJ92mP2NO({7Vz+zLzD*OG}*AM6wI-wtNPaZFDf9pZAGk@yI?5kj04oZZt>5swr@0NpeC+WUs&F8H6 zP5Fnlui-y!eTKdta7;HiNR0zB!85GWq{fQRSaN*?rA9l4cu+PlkePGh>p-qE?d8Rq*S2)WWO=Iax ziW*_oPO#|L!s>l^HNSk*ySiDGYAS(g)vz*s=)onPdTO25z42OFt)N%x0Hnay1=Fna zg$LoE{)=^f;$N@x`TJAWR+TIbSy3p{jn6{kDhx72r;SghquV?CLu0qMWk`PbCn(l< ztkII!>OuV29(ML%E&&Gla?kJVK|N1xwanAJq8_?k<%y>}fAF51kAJG5-mY`SkvgqO zg`&WD7f_Hm;z`S+N85b=-yU%EOQDC9yHJqbHjzIspl&}t5h)!+3>5{!BJ5?F8W9r` z%62Vk%u#2z*62#cAMrSaT2>g8;UVNa6@@^IDQ~;-)I*TU@m#ADI6MP9Oli{YCwhe}bp%nck`5 z!ry*^-e-8>$p4}mmxB`U&hp>C5MOilbDX*+-kg zz^f*%;^FinSJkH3V-pr!mmE(`3=Yp;+hU-3X(t9#G|7RYTz54v?4?O61$$|*MLJ|R z)FtAuOtZ{@0iKTLTrHF2k!Mos7`3d6!};V z$BSoZ+nB@gEa!?9>L$XKflx)b=sI-Ov5yHFSk@(DQd(r1BMPT8Y`X$h7!>7iIH08?Ld8L*_JpIf%k36!>)z{3^oNSX7mZde%$3Bts|Nh7_ zKmHSIJo0!!QABtz!NaNApH#f2@xDy;+;*|nk)rsRnuP8QLQsWJBOb(+ysGf8u^wZ> zpEaHUyH<<|eR7jx=|=kums2oUtQy)x%+aDrgM^4#(6$YXXK)E zG~?yTep1P~;J3J=c?CDs=Xo-{zhmGN^-4QMO3q2Q$^K}PJEH@zXjr&{DX#F-e3}bn)`0WuqK1=#n!rWhqfSh!18zqX5 zWK#y*B71pKF95=VZn4S$5c-;zAcD%P7q)-Js>epbK}4_;n)B9#Ng^_W^98%->)iH| z8RAGdacYZW$GY_T4l#k?8k88udmdxJ0)cH(*%kR!VVqPtEYXebRH<74jTkMtxw9hO&NWz~~rl$@wiZD0(NUar}PyslA) zWDJG3Ew=BRWOs6hNt;d7tM$OfV0rem6h6?}jDcws&o z1nUW-;nUwE4d%3sicr^t{Y=o3ga#22$|0J3kqdlCPmn>`nH z{nkt?!$~DFQ2R+X;iv`kD5;fiFInW(`>J5Td+bBI%Zl{FnOX&OvQ!g06EOXEY_9`9wH z0f*fLe~>B?m1CB_ixTc=ifDD z+x2_>2|d2GBCnD?_!6>uv^dWM5l?QN<#0UB--Ekt9C2(#4KlpX_La8f#?3SOi{ z!YPq>P{*d`fG1PWo~XrL@owImp5%tc9tLU3jg8&ZZHrY>pdPIJd_lv;?2l$SU2I|q z_5WppJ#?ZT$`XW9&=SiQjxV}1%$NpSnvrOP6+?odKg2)nY~YUvsO^n^RZjt!AbuWz z9VKUJVIk$>!eUUYE@9*<2JcFB>hXzlXK<-JiC&1~SstP(NvPv!I!no^a*Aq362ldT zBJR8`=C+%J8?T0a^93^v&qU&BCXT37@-Cdx&!C?RTd84fBjUL;5sw~q-1miyr=In6 zI}RnnlzMi~%dlsq$c_M11xonxYe@gRz~!|<;RTf8$|`*JURRcncOtD!4>5YKL{^R%w8mkG|WwQV~kRucgtV<>!3^tPqO zq4y3WLOqVjvSRp7)!^8iQv}t1VkRUwy$YTs9gqW*J+3Rv1WUe$7l+4iQMb5S+AK;R zLDhDj1~^?c5sp-0M1@gA1^ zChzWF#E9ipx{qsRmK$X+hicQ^MLqj7f3yCYC;uG}Tne(#?bLO6Vl)!TlA%%t0_WINf>pE;Q8gdOHZs7he@?` ziqg;{@-mWib3x`Utm5@jEBEaPwo9r(7%6Qngvt@ZS|y4gjsQ`L%weS9nyW3}_dOH* z$Pd-|(Z4Nx=Qn4(=Ej^OvyMGA$5iZSSS1l9lF}vBL&HGZdZr`TKdIbyq~OhO^nBO1 zCA|F`n(RFgv9hWxE$28N0%K%LOYuLpc=0DMZj3^$jION@oG0~F`PBRgw<(u+-H6h# zizY^dSDHg~7*GgIX~GN*_RzwSF%h+x)r1A@@M+G{r=U}IT1UI7`aNJx#U%<>>xvTD z0Qk;*Hq7Q?69p9rF(^UJBLWI?j0pQ|lfGBLmQ+~byl#+~8Z%MC!1uY%%rQmGhNN`K z=%{B?GrW{G@8Wnz@d%xf=v}R1i z6}~CYMk^RBkK`-FD*S8i=C{ogJQ}YNXYdyGaskh@Y4R?2KUbI;oaVe)4sx%*z%l6} z8q+30P*N$lIi4X?&y)E@q*N5&XC}$TvE)-!mHpC0Fr3pq;Mi+gbjYYgy;aJ_FUCtf~e#gRXrjj5Qzm1sMMk? z@y&=G2D3FEDhM~385%@K2vF%;x%vHSk7Y1BWNihJ8dU6-bhxFT!vgsgLo zPV!f{nVdeE&G`0Rck&<4f0Xyo!N8|0tE#Fa@KsO^nw~0$9eVi$k-5z^BJdDWv`jxYFDQxaIRPnydq-esBxTi65z1R zvB`j*=K z?2O?hH^OUP8FSYihMTU=*fW)3iUKl^AB0KR#^pxKltU3jHF!Be05~9}ayP?%R&}Iy zXv3uFmZxP>UVEeEwYMs#zBlH+hZ8>eS>=I;GLApz$g+Sw6Ku#1VJt?BXH?_m(XnrE z)f?N^p&7gE+wNT|limK9jz3m@PNJbFI7>o8D67SUQtKXV5tl}K101LQD!Xh8t4fBa zx5)xsGAV|qFDRyP9AT0*T_FYvm6Asoa?QF#q-t59$2r|3rQnF2CN_qX#WJ52 zgGj+yHh6_zhp6H8aus*6hczi!s--Ly1JMcYXK(R8<*~~F=~Clz`R)?qogh5T)_m_+8NI47K2JeQbG`NB^SdeLv+%T+u+*TZc4te9R;@R_J2|PU#B!%q)0Fh}bQ4!mr)Xp}>@8hTB)*F9aR`a**;%qxgm|DLFXf zg5gmlBr!DWhR6ze=CQ_c%gvU*`aO02;opk+-tWkH)5|ihnlG4$aw6}*2O-j-d+W}9 z%J^*=LWW1du*`C{37}H)fK6~`_lo4oWa7E$%7Qn&L3#6=THJ7Bo!r5Ng`6x8#}HY+ zgL}o;HPJ6~Uv~Vnv){KfL*n_jW#=P7Udj-3-`XV1NrNfVU{)Kb253dQ6gRz~ThvK7 zAX7vtJj8j{NlT6HUs!(Y*YzOFtBiPVndeYhG;)mNsIj&a~p>^ z#Tr*L89a|_hq+EBnTQiQu1|qyS5#wQ9lgTwO23QETE;oo;ksysSPau~o4$9YNRdzn zTE@`Rl(WSKE3ONr{|{wRLkR|TxmY3*M1y7D&8>L`6!bMGSK;R5AXZ|wd`2!FkEdY_ zUULe9pUgaM1{6%289?c4#*%FDB#T_jZYIP~mxu|PoYV~t&}NlBo8(MVqf1VwlE5%!|u_JYdCgIw>@M=L24Y4 zxZ{15gwiPHhAR{iF)0Z#!b~#3?a^LV@*W;#fMb_5=t=+|)I_-8H<+i*GqTJw{jrjr z;&7MPd-&Wdp;@m1gi^u%MGURD9@-yW|AC7h7Wcj zKve#|Hpl{e-$*I6tU;d=&#Ub`N6a+8m_2~gf~#egt8|ith`%bgGuhh3b8d;ITGlo5 z7G&Pk&HZ{oQh}yT29LNizwnX4>EGq~>FwoFj>|#m%Z$GZo!hzYLdT{P`+TkO@$A^U z3-Sjy*!tYzXiw*O)QdmQ`PwG^=znBS$fEDErag9Pi@K@PC*xHdBoR2~R^sy-5z)}eDb?J> zaIKxiDdZ>(D;RMYRqm|q;dH)524vonDy(ZtPji}Bj4ExLkZDjszB=AR(`lD8%1%a?^Jsj6>d z=!@|Tqf&VwynZBxE{q7c<@4L-cO7m2c}9hTv4$uTd@A^E&Vjj!%%LFJmL>(udHBC#tN=#psb>HK>UtvRfT%+@xW0N)dI8`Pj z!5fd2h(+IH%GBAV4f-bJS$zsJ9NDb%+b)y=}O&VV`8@vFVPOIrah_YFBSR-Z5n0 zcw#5R9aN2sQKM{BCJa-u6;P*;D${MxUAMts__~<8?{0A0%{BJy5p1M%dIeb)at&+z z(20I@JmX@oUyg)(iO)o~{WAo@95NHc0+ZA*ST@x$OM^Nw9?u!+P&0wj(AR&{f8CSe&;OylW$E9Xa8jOn-?cs{_gh| zCpO;se`3P=DjAo74u692y{F##^gVC9=h=IXGbBd*1}859A9)oM5C0AO*2DiUf6v=r zp6vI>b;Hcpc5!ZS6z3t+oL&+7K;IA@=1YEEJ7l^?jl9;+%l)#$z3WO-g{a|pIlIoapUf0NQ7?chJl2W$vvYPZs6uCJU1Wqe9PB+mNpZfK33z?pL2ZtlLH=q zG9xc4?v+7x{OA2bi-H&G?! z2#4nhcb+@!6+GjYh8?M(J|{zT-7q^6Fea$jS08!+I(ja+9+9J#Z<8CK&}w42UElRnL^hJlk7iK*2G$#yZluASJ;gKKBl)RgOz8B#4ck*^a=otACT^?B(A zS{b1!s*Y<-lihKX`?FP?I=-!SEf1vUSn?SO5&LbM=iC}jl?HWsPoEHi5!Y6T_j}E;ij7zneXQ zEBQpCWM@!IA*260hwfPGR-}MV>tB; z$S~5Rrj~;=Fyc9fk^OvLF7l1-{rb7Bi`v7bOAL}`t!2MOuH`Ye#QXAR`K8J4 z;=g7O@ae%byv1D0I~s5Ef3y2v)?2tAzL)NAFU&-k@h-)*ng4d0cn^ts;dp&vP-q)sFE`VyvHpX}%&>3^RD-9vj{Y>n}F z&bUpv!S7;Ib21#0Hl{<)Qr;!^Iaf!sbiBh##A};Z@}+DYqY=Al(3K385pWhfbquR6 zrH2qp!iBs~+-T8`5-iHed?g_JREcbasNhO&zbBM|3iTNAY|v%SPS7(s-h1j;vZ|Nj z15zm_K_sBA_R>a)C`uhQq2L-jgAqf&%mVcVu4dKi*xu}}9w?D$k--Suc5{pW`Ma;@ z`~Uhp*IX0qvVCr_5yVkh`jN`wyu@p%D=TPKxlV_)Cn@HdXmWubP3p9X z$tXDIHmPG7NI}o_!8^`KF9bh`y8r-a97#k$RKREyT9TA7?+VZ`K94Kb*wN>sT#*{vgRe-GhC`#mUX5{6_l=`2}{-l1-Db<$L@nU&|@I=s(~e*9oy7JgKWczYbk? z02$s1ypww_XGnj7VgB@+cyW(viaBqd{jFGw#a1q2yz0TI&5Crnm~Zf4?~JB+Hb|e& z$^LOf=SOSk4>>I!zUaH$5gnjK%qz@1k%0umg`&%P(PuH+V#YL>mOA@QorPkZdwZwD z57xj0mfQTyus$!UTpvwxeKbQuYD8j*RC#G_7n)~W7;JJe?-NThL|!={GL}dTak)|s zw49u?#Tw2zvZk_kVvcKSyJ-;=CPX7V9t(6y8Q@4M=%UO@qcj2Z+-CM-Fl_jgIxiHF z#+&aiAb3;Fsink2qZxq_oQrU-j*)~oNf28{Z4+!0Yz=IJnm7cgVUW?1Z=|JrXtjfK z->Rq&8BqYoKsdj+N;(Ew7!gyeY-Tui(6Y4528Omys@u*jWH2Meg5jI19+TM8d#Xh2 zRo+si3$IuqiUaw#=qePJ{rfDFla;#0*s%=Hu>utA2vTFO4BF~dk1JS%2LWD7O`@S` zW6(PcL1NCdhz0Vp#H`}+QgF;KuCLN*ozuDRkTk$q&`Qw;%8J?|{J)iA4}1 z6JYz*OSW8AN=6mDD!H25${oc%BAl*kpKoj4x$%za zxBk{ixX5K>-Jfb)&Xm3a;~l)i+?JUMzTkwemmV=5uYtp~ zNk$#RCTS^Fsm#g*=NNF_ciCs_{N;)3@Pj_j(xs=+R?GF#H0#<6o-*ob*@V;=OiDsV z7C0jcj*NrxEN8P7HnJ|)+dXU)eT)ca*`Pxx2cBUg$jhJ%D7Y?~qr-rvi8&x`p7rY# zC{sjqw~-{-cDr;;&E!ybB85fwwd^F>4Um z6GlO4^qh{prh1IAOsL9sbkqWSfn)o!x3^(8WDIRFju9_m1?BNeWllK!Gl7I3`ImVp z{|ZhmFUoN_D18OSJ=~)|#{>Rca%1h3?|gk~h(A-Dmaj86ahDwQvDD>17N36bn>h5( zKg{~(Q{X?zNwWB5+2gwY`ot!4N1~RQ(uj-NA(k2oW`NVcVE;}IGfl+fvPC2@1vv$?jT{6*pi*3)C2ve227bFbC{2-m;xB)5_HHKno-er-`Z!cP?I_}gc%JiagT2y5#B;ms=Cl438=7N?=!?>_37L1L zO?;iL68ydmRX2otNhzSD+k?^=r6y!9%2wC&p$}c)-G6wBtY^97_QTZMhCB!L78_M% zAsCj#h7A@O1}NE9{u~`s#mm_aUmoL34X>bXr+lqxN$k!l{ab`jpdE|w(-tr|ip^u}b8CYDqSI$E&i z`(#0WxRe_X+18hIg~_PJzIc{b$UOI_r)Wxz8EX1A4t@5u-1FlAPZCOR|7iY|*PQEY ze(RiT@v@m4Wwq{!#p_%Y$ z_Q@m<>mt|2Q_R~YS0uAM>DO5RVk~t$`|6Xd`97OI!zf%O6Nph}Y@H+V6lZ)FhoPqh zYxG$28Rv8mL{7^|_%)LUu?m|mB_a;+a?LOZ2h0Q=9RP*`gID2be}O5VFiFG~1#8k{ zNqa7W>Q;xhge@*)1({lm*`dg@%o2Nkm&})Ddzi@mJdr4xxWjg~ibr4+3F? zEWuN+NA&x`$3J^*jme&oNh5O6=Q6*X9h;U*Aj7Z@SMIaq5RK7NN5?P> zQ|0@ghg#pE?od5fw#zDiAQ=lzG7MOzgoc;dQ6)=Jk&jJjUv4aFU^$EV@TVjG-jDS8 zkMHVm=By)*BAmA&Aj$agZZ{bhOj#DxA*@}*5KEwG7ZJH8squs@Z?+x>%n`D|B{UnbRXPKprc=Q`M z2rB-ycKA+C$A&d;#h zOwe(Cax!i+^R(kSH@EllzRoku&_aNWg1Q)LCZ?+aMqB9>)U0Kt=#xl{r?Q6*D5!=c zn#3sgyP$O8N2ZMG`PYQAkM8-A=7PuF@6bH(9aGdBAi}wEuc)0r?=o%M7Tl%m8ifv$!+|I@2^mUL5^{CK z#O#qqP~sM$UpmDeVv2S8ID&5CiuTy0H3m4&)1xK{ea(2%FOm%%fJf!Hp>7>j<~CZK zLNxgEfaBLw3{{UbGx7CEL}3- zN@-J<2o)hWj$8Z;XW7)Z$bn<~eC^-<5=Y0O+wu)e>63BirncHUeD2L^-shaI>y^>u zXK#$!|N7SkPpn@KNMD(8IVgPv$2->Vaqr5PPX2)TR=(Z7;p>0f->YYJD{I=~=YA&t z(jV=7{X2nw!qrQfOuubGxAxD{Vx6Acuje?z47ahHzE8R6`^?#xzQQCiH_9xNrpB^# z%hjLbf(}^IoQ1rH^M(l%Q{WhoGHq(i*cz*TfC^ZY-Nc+Nw&?qUf}*s@R!Vbd+7iL6$+Lj+ zGUoYBei1FpW@A01@gbugMwQ@ipub=lt8B>GS)4nDNXp$g`j*9t;G>%ZWQ>gT{d*BQBIhn3h^uv@I7c5@bjt0txk{ zwS8>pfS1RI@S>dc9R?`7q|U4~Sfoo4^t5SXnWDy*G?<*vQRBO~jz_qNn7Awr`_c8N z0y&ko`e`03?imY8_psz=3hz$n=9|8WTPNmd>XFI$ zr75vLKDjx0|L^nE<$&}R8kf;`U%?@u_dxM|&A0yE1JToGpVSpeO}hC1?!DtFc%C)@ z3ex7+m*;K#yI&`VxXsMzb@3r2g2RnAPx)m~!=mr=V6o0C%q%yXN#5^I@~m6oSiVe( z#l4?dv3`Q)=+UK0>vOk_cP$FPbYNgn#4YXK+*p@3*u{brXd&h!H zgFC2tGR?qyF6cU&^ilB?qI9I7W$FwJ%$o^v&B*ZNcs6{WmKbtVprW**I#bf*u$`c; z5p`>+iDlL_Fbavp)J?>;-j4dQ+hb%&uc*@ykUSIxq`5H2AS)E-J%a&!=)BnBgB)_A)HbRar-gf*S@Jb_5(5%X&f< zB-V^FBU|3LHe^gTi1B85=!+#&hIO6bCx6~@=Ns1f7yoL&V~<0Y8e9=Lq+b2l^(q$) zJ4$y|xlBqJc;Ji0Q~-r=UKWeRsA0;~*d0$0i{)ItiK_Cx>{(8^btX)V3Z&|}pj{k6 zsoslcMjA{>9SEuvPJ~ZzmJSZ5Zb%N^hD;{}=?Y!D7gPqq@lzw#|fzx!?yNmdz3x`L~kWcu)E$z1;C8xtf1(zmX%f{T*`f z;&t(rADibld+*p@TU3Bqienyk;vyUVtgQOiwy%BfKWcx?J>SmnUq;(~1;=GYhyMdZ zI)7#9E%A|W`RDeHzw=3d{IUODEIb4|XeeX%KhS^t*WVc3_5VER&R)~5wQrXn&J@}5>~evZusLbG~5sR1e@KW|9T%p=#LMoMdf~;(^VgAQ#UblaNY`S4W02Q34&hWAZcGr4>fON!>^Q zwelJAK?H%UaKu)K8!-<)+~YgH<0!Y?QRnS%Yw*UqV{W)6A`wBfENdD;T@XJFwL}BH zWYS0pniytk)e>KW@vAU$u`PQ=)%!+j=BDb(GZd92aE4R`=M7$9HMKl-%<{pH<-G4h zo1AzqSd!Edr6|Dr9Uzd3BwJmUvNQ=Yq)!PlQj8EmLqUuU4Nk*tqHs6}nR*6ApN6Ti z>;}V*)S6~PICx~DVC~=|8X>LZAX6;Ur6VZ`H8ym>CIfOzNrD}HmX&PX?*-j*bj12Do7)=`x^3E10}%L8LJ;o||Qc-^-ui zTjQ5-$jwp!{bEs1vBcL$H$G9bjW1rRe5}Czv#(kFv8@Mw?Xb*l{k8bbOV^zL@gD{{ zf7bKOSKGK;zWYBg-T~%U{oh@^P+Q+TuNOb{zqXD)!3&_9734ZjcmHwowX?tH9)JBg z-<1T*oNY>fy!;=g$}1_qhR|{#458Q(%*b`TY@b4P4;^EPdQu5E%v%GepHz zyOkl5dl+OyLIz~2>}ecYu|i2wCr;a$I$^R8bR@bOO;tgVLJ z#;M>68J^#$##lngpEsAvC9jheJ5)p%74{4kp`kDnq92xfN}}J!Dx!8G~~-DxLI~{+^?1eL&ppeb%Y~kng{d(FZHuLrRON< z=<7LB>|^p>hqIr(M=tSOeJAj%{bT8I-+%1eCa%8s)va6Z`H9Ylm$*E>;zR!Qo47n) zXuJcGeV{)8e=K+5OIQE(>watD;SYVbw{-aXxKTbEFNsypOWFtd$<0sEv@vN>u%!im z+1yNS9QPK-NfA!d4U;fRjfe)8HM)RuZF?_kX@{+RK$yfVX=z@zTk1H3B~s=jp`$5- zvV77eW|+yzI!SDup(0F5C5cX;wUnpwl! zRmpBN-2yj;W=zuY-+~3&k*s%BHUh^=kxtD z%t%m`xTq-x%Y>4oU zrSCW8Hgkxd?thjA?V<{QA-M%>BhH!*j~7ckM~6*vY}x$v6g0(hl}ymCHE7y|noY=x zj7^_1Cw2BngB9&z5MC1PB{G(-czWtfxNMj-f`hFi4q}uzg}!q*5m3j9+v0e!Ol6ml zNazFgDg$&8nq_A7aB+^8#0O|foy9Vv+9ypWCBa1jAy{}%p&^+l)Kj2C4<@fr2tgUT z1V2=Lh|w5vheoKm@OTA;s2p6weW`e`XdyiQM9y#jPM3S{b+lU%^H)SPnoy*I$6zhn zNvsuy(FjA?2g6u7E(9ML2Q!qA?#x-Rf=h#13qk#bWs#no|}XNmyxp0+h| zit;|DGh74aG-Kd8s0XxrOnp|Nf zIOBWa;)*g*$EjkCpp&P}m_W=OP#|g;kaE^{nO4I$w{GH`-=yaYc1w%b+v_;38@#D` zEsyukaSOZjF&6X?ZQf!I{oHN(fe$FiJO2c~?LWzDE|34caXBdcIT-H*{r9~Gvq_s@ zIO)2tTG8(Azr)Mr-}rlF(e#8PHOdC+JB3+iXOXeN3ra`8jYwEMK zO`VIb7be>h_MM9kg*iQE+DQ6wBcne#{QPxw?ltR^D z4?&HyzRRZOBtTbF^71=TiL;7?VCU6Ql-{ovI7o{N+M_QO(=6C=#ix&%Om6=9du>5~TsWn8da*PKa-IVf#5H0PME;k{?dN4!?9z>%^n z9iC&2x)5DkkHA2hO zDTcNeTFSa8M{2v7(1?N83Jgph@*pfy_5;jtLi8vXiylph$km||g3vY{g6FAQk7r0b zC+)G<3?b!Vn?{792oq%CLf^@hYTXNqp3i=+;A8g`Jb4s)dBohjVQQ)rLMjORv}1}3 z5I9K2prv)UiXcf$C$oI+am#P~j`FVmobz9QtIxw<%;|T-`FLOPsMv81JBUu(%=s=2 zo~?8ne7Rr%sACCm7N{ZAWyBdW<>Dg6Q{dPnXQgBZ1y)(uYUOKNl}s&^S_xr4yGYm) zS0eJl>*^RHF=bAs&pS?lyetv6O+>1G7>E00r0Rw;Lkb*}HZ4i$XaOiwCSjkQV8M5Y z#WEc?NvvhV4=6O}W}Tsv6ih`E#46M!W=p#qET&kZ$9Y-nye66XH+Q=SKK%k;oXg|? z^0*w7{v3@9kl#k@i4$zzuv=zs{EKp@<}Q`D$xY14G{0Ef%StI9w2K;t`~*+<6*?5G z(IRN1QX(6ZXi)VYXhG%&+!-C9OU8!gU;^VKF6{%5 z5JZf?rs=a>+OQ8waU+jo;B(rhPO1fINwAGYSS<$J9PMSx57?jxB_jbx!2}5d3fj`Z z5mX^EUzxE7)=bE}w9Ib8s@q6q{tnf|DxzE|Nx6a^Z@%oDXGR<+uZq(VVK=BL@~-wcetSni+Chqv=LMya-MlT!c9jCRqBKcBf+}}q`|b%A z->p3pDLK(5;EF9H7NT&4`Go!rHR$QIuuEt~%OL!fe!J%Vo?aEiSq) z4HdfTc*d>LCgHDeJ0Il~V*4MxA!`2ghl`aCmwQBiF2?1c^yh4xWH7j$1NWVf)wh4E zec9|c%B_4vpWv7IoV+DI%mwWdqkNt0=hJ$T0We?Un0f@4&pwWZjaYLjbt064@0P1L zuRYGXj6#L3rVO+wOZ|qEZV^?_Ep`tVe20Ce&JA{woSZIsn34o0qdFU|Pm{9GFqG~I z6THI=36gb*XxRo2<>#=b767{<6y&s{pdw*4d<7kf6J<&wRtctnb(7%n7_~GcrYXTM zC$>>(QLwG^PhTDBxGKPKRPr^Y)?GDGmw_%+ET!yNNzi01OMRsvIo`p=CFRriW&Fnu_iin?&>Ld<{p9}$1!hkN|$f8FBPaZj4s&?oZMc6Vk# z+qLMb+s_-rhxB>RMPtdr3&2^$&;h8E$LXogKq>EVcgHW4+6nYMK{-GGwH>2LAHQ<>)f?7tQZk8wF5{ka*JgVLYBA?MiIx}IIf_S>0PK4BMUYvQ@y&d5=> z!la$Rh~ZmmH}Q~LWQhUa%MH}Ul8NK3@evOB1|QAO(55z=wi9c}F__4(;R<3Yg=Hl8 z;}}&E5i%S-QeGPE=eS#8pgC>ZV4y+uq3<&&A;1$-qpzX1e@%UkdE4Zo>r?%{GaOsx zs&HaS=g!wY;!nsiUE>>SH*-2)=290+cVsC9Dl1 zwM(m>habuK=sh_f_;6PCppa`B5Zjr z9RnP(LM(;>4l6S32|)9Rv3>hYh+TC zWXdDb6hw(4DT<^RzyyFKK%_=Dx`EE2a(eluv*(X{tGXHjC@72o2ycB~BXqrZtLm(` z_g;IgK`GEB!OI;Z3
Skp^uWoojBdL(xP&%Q%F66ReSL0Hlj%XFAFHKwG-igxqw zW%im!37C-zz6kqd1dFAs2@{k#D@_iX5#CX{nU91IlX@N_mAdYV2ITYU*Q<=5(FyTI6pP z_j4p!qJVIMCO0#{Dj^5$2nYQ!z7U_usv4K@YMJ7ISE7fqKtw_&9O!7Ae-2LbqeofS zF3F~#*pRAX@hIf8s&3xCi!`RBJ~5e6E)b=RrG$rvvP6eiHg@j~nhPm*nL4Z5*$kB% z_lhi}ZI+4iblZ)%0pa@M6sxXHTVqOi`KR`+Yl4qxo%74*gAqJm4Z@l48)-P_OGb}lERLN27(XrYeavqOu_(Zk_# zMV?ZWOsQ!Q1|^`FOUQ%#`|U)jsAUL`H9~fJWp>#LOD@6U<;3dPZK{l@#{xZi`Ns?) zrGUXo7O(NBF0x3Q0aN5gGlsaBy;|n$$r;+JG&Rz?l$lAqbHAtG{JR(73HpTel0%=A zUc&h0Y+^qba!mWtJj8?a?J@NTJ+zotEpFz}W5krch zO~U@-sHiV|toJk%Qf5Xf++c@!QdfCG*I98XJ>xcy+>#iwW=KkQ@ED5XXR_OT=212t z!$FZonotxk6Xr^GAg zHfK(#pkhc}CRj+_C9y;%KhNhxBG2QX`kI>f|z zZ5?m;FNqLqHouApDdT0YTqF;v%>3tzWa`FsO(@_ofiP-3=7<=V0?Tw6!KXpQl`>3^ zh#o0*e1=VlzZcxd*>sr&Z4nXks-bI1{UWco)4a2G0}r&H={3@&fAdAwKgyr4EbZg3 z34KG>moNlj_x8b$mJ8;So(r@mAs6kU{%H8S{Ll0Vzq0x%N@>bx%+q|{&1pjuR!H?) zzoNGX+ZafFJr%8TtC`@9b~__pg(GQ$niRN=Av`Ya`q*6k=3$tY3Uw*5+YVC4XRE7p zs=|7d$6~9Yj-O9;JUV1VgQj#eWl2MZyfP)RZ1?NbY_<=hxspKD(b1T?38;xjn}p-Z z8U=g?O*vay1-1t@N@7SzH@2y0&?90)rIpF5A#*G6H$UO$2ec|879*KrD^|@bP03>A zpKFfue9^Lc`QN81#7Ry@j=VC;_N&-x1)rHra@wuo;aJxQ z!4Q&O+~yUYJmWfJ3u(ujb8UP?hScM%u7fBurp%%XSYO3@|2yqy(n?Zpdl9AU&Fy0n3)J=zKvYCY28hw5l zp2I2PPqp{V^WSIF6X?12rVM|&DtfMV-g6Vx*0k8{pBdFy$lF>O0c25qZnI)Za5zx{ z4Ap!g+Q)9%357UfE^l%QnFyjHSjymc|_N$2gZXSa5CXCZLE_6``VLbIP?& zBvaIANRJLF-)64l^U+hBPL_4dR#{4$UtCWcKmE%*c}n_(^pZuNlwJl{C0YNm!mVpl zh0*VPmF_C+Dh%?f>TX$yI^0>>%QJ38FQy%;_=lDFpRJ^8zuI)p%t-Bq>t)QlgBe-S zbwW`VT$dSJ;&|Giha*)b(uip(v##OhlH=7TliIElvf&M2#LM=25X7YH@GG=k4}(V} zP{uH!0q5yvZLypfDtN@|h&0>qw*rAcNwV0AE9?kIlI8r6%l-ryG>>6VG{vD*u$1v= zNR-V$Bnu%-G|j3nvYRXnj<<{?{&;Q1<(t^Y6I;_rD@g|#6( zcp)>Qt!=}tWcBP@J$qLv-_wFk;X*+Sf@6?Ep4pl&(h4|9NmL0Wv*`(OIC0NvfoAYU z@X-9{BBi4-DuzxjGePskXK|z|)bMaPI;6xXMJ$pNjmb%AT8gZuJ?`+wc`RMRAw)Rt zuwxWdSfI@mMFw2JP_e{9+GNc|q!uQ$%(Xf~qUiUV1FX1qGbVo2!z4a-(1|i;2jsQI zLmY8)ylwI|l-r)JYnPv@e0LP5OMm|(?(8G?^a<%DjXo*844~X?CMw$&wTggA!dIb15$tsYmWta=vMg>G|CfgOqsPR}zn~X~l4@*-s zMV;n{TW2%cA~WSoFxe8Ncm&2UYJG00OmjL~XE_bChziL9{j9)*35fDAxRS9%nyJTD z>0vQM8WU+oswO{RH;~Os5-M0Gq{J$5PDC5W{jhHZLO!XHXaC*S|Na(AIx%?` zl=8g9^n7i?=XgGEwzLuLM?V3EZYl#ktraYal z1D1%ab^NOGHXcrwNPtNxGeL=mWPx=T0fyVn6o=gsS7}Y(#x{o3wr83Ddw;xTe@U_m$Z1N$MVyLODcXP`Q({$nWWm;gQDMONG&S3r zNpwSJmzj9RTdZ$@Y@U?+x_M%#+5(Z=AhCGUmkyMowWR9s#XPIaX12(w*;M^q!t+&0 z8(({N(krl8eQZs9<#`@s>({sb_oZE*jrX^4??5s#a%6T!8_yP_#3)JD(abWSaw03> z;UJf@I0^!T60k~dQ>~bJ%x!jd@$>7a2!YuA+6e_LVJ?2~uoMxdr9hK}rX*DG84y2f zHFCa(hG{@k?nWX!}J7uikS&ygEWw~CbI4#R^V|o9B2kYe@y}R-0jUC-SUc%@L z9bP858?+a$eCdHM%NiJ0~ib) z8cb55PDOo6Po84=H}$fM?a%wzMo~PbWPrbGuj6~=5XR{7^`P?$a{ga-U+mxEK3*95 zr1bKEemnQBKh5ed-RVt#ZJ!RwcgvM-uZ%Ghc=vylwa0nZiKw6kckg#_r!LNN@gPZ{1R^2 za*eaSoy(u+TYejPZUS@9d0&^mvRE~fnv+#Rjx1|R$ugp3)9xvo^95L& zsvdQ}OKzQbO>Va}6HlTv}1n`hobsZ+vj+tDnxlYyB$eWq>{@y}Tg6 z!rj6D@}qAr-*)awf2v(3Nv}=@ALKc5n*{W&{Bd|(pL);h+~i!NyDU#M&uN5Zjf8K; zX9<&--%lT9n=4UOpIwDfE~agaF`UzNssx}OQ>M&-7=}=;wlyHeCv%^!8!z8tNm=qj zs$vN+gs|yTZS!Ekcry|^^J5#A3IpPk=7;9y3`R21LZ~S!nN7{Q3v-w2Y=9nM88Ag$ zF7J+ToQ>DX*N1QlW$`cdsPlf5?`3UBi(wcq=LpM&|D4M!LWjfYv*$sV?>udmU7KHf z_SZMscbDc&lFwQ$U)}xF?Y|94^(E;;POAAmR2+dAViM9^@@?{iel_jVQpb6^_~K>e zs%U0yswql>CCS7L`Es!#WxFX+5&=@m;*pRo+y>&|1jZ>cMJ4yma~MqtfN2WskP6r7 zP*#&^RtYaiNJ|p-+Bz5FHmx*MU>Xc<;;ed=lz&vXnNLPXS#eFC3eVGsd+edkH+#nz zOdOw0E^sZ=N!hxujFrkCgL^My@iDrsle#?r+u?)yjrhE-y2y-EKh`Du^ld!zXNGL{ z@zOzmrt~tzJ@F^zLlb`V_rr%4ud-t@W$W+zWO`=lxo)c<2ROCzpUm6hBf4^DLHxiO zE3c7pW?h4G=_+qA2N0(`r1P9iRtXU9ENsJS%D4n9X_Orv8q*;F}+PQ z94L!NLA)${FmE^&R5pFtvZc|Dji!{U_}TN4MVb2|nLq;YARqDPS1X@g=_Z+MxsuO| z=dcRenlyXa?JiYHCVzY@CYM9IE$zumRCS5|bhD1xaA7yOYeGuq@SSM(x;N^+1jUm~ z3{gawpg<$P8awO&Ef=zp6RWwL{-7PCp*=zrlUpNgICrd*uuPOM?K&bNN@6LArAbUG zuqqKFewjtrMm3u~1tN@_0eYG;Wl9v(vX25C5qA1Dz8s&YB?(<(s`xyW%(GvnITUQi z7tuGfo3=K;c($_iGuJl1{fXV&xAjAqJWMk_$e_K|Ox|?Bn=ZZ6zis|El28A$|HiTV z@9S4cFDvv(>1B#1lDYL0qkB(x3!R6qX!VZX%VPRmx4Vaon7rbr=B<&s}r(PX<$?c7-)$cOc2)5}gNV6h^&Er+`bxV(Bol@f*- zDbbV&BL*LvC)eg~2cnd$pC6?eHk=S5eJ*ME<=Em4arxhGIz>GDzRz_AZmg|ddViOc zfG%&tnah-Jo@A}Wji`wYLfUwaL|yLMoyCeI`6}^-S&-zJQA%bZHEN19H8cHjdAe}S z<$ioAu&xOeQvg+3k`S7_DA6qF&(FQ_;#|xUi`(UNSbpz9*yyw!S;0Rj<@q$~6! zVbYYj)*EKkwdolsh|exJz&;tGq8`&!5a0^NkV;wGF5>OUm2)5C@qhB0(dh?1a5*7u z;$0kiI@S2;-ND$2AMjuI{(l~Q{L{RE>r{W`COVl`oE-{A+BMiBKXL9q)JG@=&_s98E{4{M6ni`=BHSu#h z7+5EvyJ6&sGER|ILIi^c%+cZk9qM^>LP$a)qZ~_A`%%L155JQkx zfXODIrPQT>ilb@*S}w{}gn9Hue*0mQ`2?~_VGL6qd1g3c94Hiy^GI;kJC&Vyf)p5xb`pnG!Okx1${nA_g9$>A7S~}?u4(N ziGJ_Meef-RFZy_CqEAXMW84RN?+a{A+|9kz?CWOF)4J_Ky1ehTvO~9fRhg6u6$+eB z8;nW;CrT(WRkch?g=ch`HP>UGH^g1RE{>;5*>Yt52|QcMRJx?ZWb>aPDkzR73EQPi zm&~=iDt^{R$`>g`6Lv|NX^O0q(8CdG_E;Nl>H;m+By*k^Faf>XWm-@U*cyhEHSJ~< zMeaBaf-!c}>05vZHm{VG+?x)tCij3-#j_jkahEo6E;&MIzIAo!a$7N5s=Dl%d;`gb zmG}n4<{iDfJ@_1ZPnxR|Rkmv9Y<5la)?P_`L^RJH%8hVI7?L6_jc{Uf6<+T1AVPpp z6rt(jO?6$A6T`-<_7H~f7!Z$`gh;Yby}I$JVCia)Ywaj&8nQ-2EJ80QD-R(OWk>>+ zwTA%L$|yaFnX(nuwMSRu&C9VzYTQ-YO^+T`XXpW4N$}&8^V+0Mj}a*ndxk0J>utKj z9n^^jW{KYOF^=_K$d1vYtflw$TXrv7^hxOzf_s3w>xa^=uNa-OC* zv3`-qk~yvkw$TZMLGhW@b&T;jSea%m>F@?`hR;MNSkr|4-WUUFQBkZY69i01fi+@8 zECUj-jUpJs{=yJXCd+wTM0V(gxeRKLS7R=1GD}E{EVrkctMfMM6-O3%9g?w_4 zAe#k}lHgd;4hQ^E8rox3J9#|1;9JX5+GUL{-(~l*(+*J*%i&}ZNgY>u6KwNFnDGah zjhnnhb}>(rZ`T?AC^<%(L=VZ%1yA^QAJyM~?8uA#OVr0-3;Lw=3c@`g_i^Fk6!z?X zv;EBv%lX2hYcij%%Yy5&CLy;B?B)K(38rkFQK@kvU8ao3sCY=4%@Zzahpxs%B=m?W zici@DENX-=J|OI*%+6w+6UiDSHPrA}Cdz#t1Sb%y;~K4ThSnCnZsyXUB3Td|P?mtU zMpV>iPy*Jphat1U@l{xpn4V@?q&>CIFDKgFC&kw^CQQA3L_HG(2W(ZOei3^ z1HslRNF=MQ+@^w%&3}ssWieE(N1XFkwt$<5S>zc_mk05&IVZBRHC*u0>nw=Lj3G8( zof2U2CCf<~k^;SaCa3xJviWXNOoW$LN7>gi;;iB`h0hWRHs3;WB)P&eU{!lS7W4<1 zt&oSufC<>iAg9wd7C1zWRYD>X=F=8e)W*3GHJGHzIAx5@RFZ=duv4q}3V-BI<5buq zHEPb_8R2lcz^rTI2pJ{7GbO49cPqPlH`{H$btakpjsM8W9{uX)6@k7a{FMb&kk7FE zao@QA=L(&24Hq+?wgH$=TAW`#$A}o-lI-DPyw3S(h4b+Wi>^!AcueBc&@LSkT7)QY zh&ri@@v#J&watp8tc49$k~U+e!U1oX5xi`tMhzwBkvce)I|(>VKvR4bcA46y#w-&) zSOVj-A`$0lleL@-fmklk&O{BWI888E&L=H)ni@q>rlrgkriziQd9~$IU<7uUDh-YD zi?hYj=d!p9%^eMt*lpc?V)N^&naE&0jY)E&SIM6v^NP)8Rz|>+jGQ*Ikbpd*V`I{! zASu3Njl1lMb?@}=__gmUT>ZyGrj&e}OgcriL#j`^HST1FdU2BNb_8FAaY~d4 zIH_%tf@Rv4@|ZYfOp5H2A)IFWLw@e?(8A%IG9;Ob>v6ZtHU0zx#-}WXQSm7V*&Yps z5tAiBAyu&PW;iCuPpt~xx;?17wSj^-0mq?v|PO$kpoRBHxQX`-BUO=6Ua_;~qd zP{H_Atw+HKzR3>KN8K__Qi6O=wNXbEjm68!$mV`L?=N`{X1a2j)( z28uEzRc^9l{OaueR9wLIGL9obG{I?1U45=)fG?R@4wiPZVpD#HVXhv#fAR(rw2?gU(ml9K^hTv#v!kQ#BG@_*`2E!hyB9aLp z5;26%QOr$TD`F{`%y=~fs#4@BUE^`LMj>|-Pc@7CwwueWP!gda!l37Gw$W0T5Nr|< z_~ue-tRQ&Cqij4Tydp)hc(UdA*UK(;?vQ=S1Zaa=>f-Zkn ziiq*Dy|jF~wWu-YlQv_L`9660wdiQdQre}6#|j;q8d0~w=A0}rMSN4?PMzcf&HMR5 z|2llX$OUckp~g4qXrv87P4O6)A@`2px(nKie)R6}3!i+ke^>hW>qmd4^a{p!_?@$_ zEv`QHQJ${MyJWD0U#n6yU*kMC>KF^smK%!WoJ&?2lLFV98M-d!I+@^zEaG7~Xlgu^ zE>I@Gh@q)5;205)MG1LR?I2(4U7$%!K@Ao|OH*oCMkT9SdZg_2>Nq1Tq;1Z)H4K&k z0#-E2+_5D)m`6>KRn5|TRA9suNi_u#Mx}(}DCdj1d%YTSX$Ma%1@ShOX9}4DO#yL~ zHbMc75NYO_P&YnR@o13b(dU=Pr>Cm)Na&G}>Do4&xVJKrBgkVk63xUJo0SmCl&R3l z$yr4=XHXlJ*n}zKRCCkQjcQP-z$-ADwDR<%l-*imztq@i>y+@gplxoj@@eM zD>Pgd!M=+!o!p6`L6nn6RxvDV4-4#JfRL1yxZIIIX-Q0n6z3eVz^Z1iE5+r3ff=o& znpIc6$s7#!cs1729!(ch6`#6zbjY%rdYW!3^*j-bkh@M~9&<_Fit~)gLIW>Dw!E5> zV1WQjEb(S_)X)$sh6!6@pBZ4;btoH;D0e-WkP@@nVL$?UD0K`Y6uC%`C~qc4c?e>f z&!R>oV3${;C;=;)ARDbs$q2V9J{`$!?TO=RGe|>2mRt`os0iyMgd~gxMTWd02g)PN z#;aV*Ff#$%B_rCD_&W0p+A{O5%@SRf=&;WpVMj2)@nnf1Dc~U-W`z-3W=y6;EZQT0>b%Woww;77QRzk%qJ(kmSI zfj&YfS|wdrB6^@i??W~0*An7gdl;E);p_-y>835fV?qKR)CI1UVRn{AX-LX+sm`Kn z`Kjc-EHDX5aS&$yd7FFCO zGobA7ys0q8T-qTO114*s#d*v{QNY8|)rc`EW}|y`1f*=YwatizSYU_LSks7*gh44# z!_pwkQgy{#att>c9&wqY#74xqA&Yd7oB)w5$k2+}tdJ&5kut)lSHS}kO-S?jjGo3A z5t@XX#W^3`Ui^7^Q&Y0wFzd zppx4ZWmofpYvu34Lon=+3J1*q$D&1+(-t8K&A3ZK%A|TU2sz@Gso*hAiSL#@oO7#u zDZa?x8+a9o7(O4L#?2_UcySX}Bw*jHMBoTFqiy)d}NU0m2R8khSo4G}ZWbIJR92mM}F7QUOgyC(r!mIsB z&ZcX$HDNXGQpaPLlxgQxS^>)n5mz&W3OuBXTww;8az&QX2AbztopQ@KQQj&Cn4`;i zyOthhAp2AO*+maf-WScPoMi;cjtxVvFa?q>GWMP04 z$vVe$oh~WYRHj*ryP(3FhNPR0Y*{#;=0Bbro(EZalg%msEGrt5h~fi-SQ^?P#!yE60)Ki>3pf2QI~l$!&~;Q7OoP@=qwQisQk+Qss9D98$#AN*$lAAW=10t zFiMdIDF$IcJVvC*(PSPKkFsVvOtD5x*Z|)eS}tOZ9^+Ca#Sv@PQXHj}ClE_6QZW?O zv68m%@i}NmSacoUZVoV~Ep||*hEIUUPAUk7vvg<>@_KI@;v6lLaK^1O>za(%BFnDJ zZMxf?*HyQd`h8Eu^FQ?-8f`eJ!0p$iUHOo;aY!K7hIbrX>y+Vfnp@LyXDlBM7mv~b{SFx6BilbbNn*?HMyOdp0Aw=ns#bK;!Ycu#xa|drl zsEdaYNF`xH3hb8wLP@9w0qTSaQ)0#SKnztAFk>t1x5J!CS2Djn z0<8Mz<1+L~sgG}o|C~Itc7XaH9%C`^Tzu#aZf7wNCA1=ct8f)Z-4bsL4l+oQqi#*d z2zZJ$7n5E{=>75%&42h#Zanw6TX^Fq)6>DU7HL_PL&XU`w*DllN)gL2MVb=PCE=hy z%9trK=emq}0ai2LyN)JU3|{W1oh2?s6eWx7E*XzDF+))=sM#Vd7ZCxE z$7?KTl$VeRL&oC@Z;bQl3OARx^LVm=r!Zg&>?sV=(=^LJ5=e1Om@25DiDOvGgn0#K zL>MrZ0bAyr>##(~q+ca;A@n3Im~r>b9;6&K>-*;*{?-*Tx@k4}at;=e_g0-6x(o(kG)nz6JWE)W@HR({$oR*ZaozaVQ)&)f=AD z<@WPN%rb5rYRLIsa)QelM-DG7#z8L4G6 zCrR)yTxZ6?I3gvBS>N2oGgM89ZBnEsDX}D^nld95PP%4B5@K_&17X&+^NK}?5!!Mo zcc|e)+L|C@SRn_eJFJ&|4yys%tL|if%G8FJJ zV%cv80mow6rL9U9ke)x2q->K4yS!nJyG54cEo802bGHSzOapJi<3MVFK~q!<#@6Rz`9GgnjzW} zQ^X@MN=HMcrA$RUI+D^MWz3XWBckdDj5?o`lx1Qn1XKw)qa79rX{I5eW}*UPOl~!l zNf|~YAl8&t?%+@s%RcI?5R>F;yp1^Vf(RAk)6*1D$xUiao{gKuWfaAbYD$o=>}LB# z85yCP2RdZI7#rC{CGqh@NU>D&DzUAKka-JUa>C0Nlh3#{63rqmuJK0@fmAFPlJ;gs zRZkAdT>MVh}`f_MLRdgk#D^iKCS?sqRo z^!>d3LSPC5M_Ib_f4C>iHMVAU_`{q@8yruTI2J9_Bc)U<^8MB8S?;c|tTD6NA$h*j5PCFz11W=%+Jpqq;mrliWM>yhTJ2~Hg)%=4^dElNEL(LSp z%AeqHvP9-zAwbR(F3K-7N;s|SO(<-ArQW zXT4W-9(5<*{Q=H@_z1nVW#}BBaz=5tUtis|qcT|K>%EJzEM0wd1P}D@dD8&r9NIT?%^KZ$HVR>ciWe~E{|_-6CZd}>5zA|H$j-LEWEiqe$R*E zi%;+zEtT!qcv?xwqvxLkYvQ zDbvs%ietu92}y~zT&x7gtY#7NMhpckB{B3g^T!KR@B{{|PeMvbvIW?2uR`dOTpVs_ zx|mbxDjt>^9%Y1Usc{oiJfe%NXpbcg=}F8ETVkJA=d5cnVG6uq@DSaoLj{lXwABDd zS>~V1HH$SD{QYjd%s;D*uk7;my)mkW3e-j7o(83Fzigh40+Ixomc92+OKxmtUf;BAU zyHS!0C&=BlJ(GFo4Vz+?8$~89cbYQem9dgC<`?lu+3(dUsIaU(R5JmHhp=4=^faYG z!VW1hC_Y-SBL*{rCqJ5p>}`I3*TCK6&0O`d_^H>-xwhRV1H5bC&Z7qh$A9`aSD*Nw^jmg){5jDl zr9S>bI8L|qPm`M-e$ri-J*rFHE34H{|D7xD`1*%tkH^n<9|bv}N1yrWkymeRnkkys%x9!svpm{eKOE*&Bin3N(dVq!F_1jOeYZG>zO zX`dZrPTLHLrAb7a6k~;!hJ>0R0-Ze2VVhLxkx&$m6=Evlalj0*M9jEXCDE9Oh_bQN z{UUqq5FHn8Mn5zq$pZ`x74fhLRq-+haB)~Nckp$3>@hVKw38>_=H3?qAQUiE#M0IT zBao01p_?{Fp!BrI4y|!9Z8GUqIT5e2su4X^c1Q(8xW-i3RT|?$+9K3!&ekNxSi_oj z81pJzOq=YNAr7aDgeWtVNko}V*I4PT5^Jg<3Hw|vZqWQsqsY(SM)#`|EIwxoZZ)2@ zud`RY-5Lsaxb4SoPA7l-z*6<&@8jWq%dU?^^;1WMfG#mzQf4)z zrH(PbOx2X=rYX~=#yRbvxvyMI7H((-jBi+VJv!=0Fr;GW;WA%2Ye`ACIv8ir2F#{i z3RsF_=n`j%yP_BjBc@D86O@#K7$!|XQ7mhk&4%JU1Ib`fV8D0`5wJ{$RxU3ONl+{^ zQfEjCEJ(<=Rd(Y!Ls67Q+M`0|^qr&zc9?#y61D>gv?RmIy=k}w~9gNsKXP(koe#ngQm3kwJXg4Wh@W7d3M`D z)?ANO4LM*2NmW=k2_233PCH3pi>$Z?`;sajbf;;PN$D$Odt3z!SIQ`Ya@4f>uHucH zj?eO=-dptH-b3meulwQT$ge)c(ob+n>i4|Rcl@s9-Xkj9-EYsu z{_g}gzWqAyz%M@DJ3e!sRc35mrqW41WsXy@KEo6_8qKk!Z3giflp;%ntkL5}9c3ur zTWS%p#}4z6^dy5OV8WF+N0UYE;fdiUe~P2=66=y3{t=2e*<4k1n&L>XDBEq70r7b< zS>{EplnS#hWFw#3Ak@SXk&pGhh6XgZGo(^A2p%xZ^2-Ux%HKsohT)(%S=vp__FEETqDExT=v z*`&*mDYKmPSS92TbwZSR>F|@moB5USPk2lH20q??f-}h~M#Nny!@Y{|!PDvdPoIE= zzsUFW#s0zSNh`>u}{74HLm;NX9LI*r=xkM_QK`(rGX$|jJ&6+}#T`=!b>1y(d`pW*3rh1fZUDRF|eO%J-3#x&Fc9#t$=eA@Xj zS`lH)2DG)u?Ph|WWOdTAc1aMLLhdwYX`$J^QvR9FN7ye_0t+?kL!N=u)g;&bWzudG z4hF+{>^n@F3X87IxG6DYiZt`xsECv{A#<+5q2f4gjaYSEnnW02-gOwGz!U{WO_h1= zGAU&$*5fLv6R8rW2?Gf0ny^a-xXO;wGf?sh%mgFMr)!Mh^JKcpURR}|J$D`B?pB6A zalgCxZ%>k5pieM;ya?!%QXelmu3Eg8>ql<5Fq-OX9|;$Cp*}+tB zB~H?yB0dLgm0?@pY`RX1h*@p3?7Bea3K1JfjiG9U+r1Iy(>6)&0X`-kT|#DQ(M&@Q z*bxBMHAM0)q!N}HDYL2}p*k9bENX{ADKct`l*H$vgd}PhR0}vF65d?d&vM#DTox+$ zF7FUa+U2^!6rYSvan>~%lM=hVVQRLF6WFD7j4EA?nIocP3fyjI_`T#wB=8A*k8gI* zGl+1ro6#YyxF3+K%$+j*_21KP{DVj7ou*GneY{BMlTsfqI_?Gi#m3j0zcO&!nXA*C zd)74GvEZ7tP0Cqal}ZYC$qug63O!;PB&?I@BtD(@i5<+G8}e`1JImYtU7P1NKN2#LCCr zNkU>Y6|PD~*-nMm`&T(@0(Vp|p8ujg{p&x%RX_UUJUsVe|2*{Z%0{1*`gqCU7dlUz z`Kh$~)nUpv_DE)KDejj?qO&}j&dI8Fxk3gxDeEXkEtUm(%ury|tFl{1S&|MndfP+= z4yOy8O4j&V?;LyWD2Y0D+bS2e!9E#aUb`&N!2!)ArkRHLSPn^@R0TvRRVORq8Nu5M2ZDRH?M8OD6BGxp-7vW%GFiW{rpB@e$ zj}XPFP()azOIt!#38@##TufWcX_xI3*-nv1S*Ph@mR*-K={gs+!|iq(J?-keMxdGN zgTqlY1zcvsBt1>|*TpxprYl-h_?$T_7j)$dpK+)Db%)jm{sWISU+kZOKKkgBQXelF z+yfkDW#t?E=A+Y6x_V9Bj<@M`IEmysJ3`N<44ObMxHbh$ThK?>NuHUMYGH(bSj<8GDPyfI1+jiPE&ky%ZsA|9qu*#kOuuE<$4dZx zQtIO+g?qS%&vSnEI>x{Bo9>axk`@mAkaxTLs5~kcwZX|`of78j1(Kf#S^b$u2;bk) z^bgPIYQ+gxUExibPp2nj0G~QVZt+H_sAY$(v*tp|Dl|#CR;w(~qb>z@m^#bSqfNvz zT^5O0Ayc$9NbrFxy-_eqiGbtjI(r$QO~iCCz|mw8hoPe(XI%?pgmn_KUoS%}is1N{ zh3hz+tguW1YIsPO@;#&!N5l`-_t78%wQLUtNs0MX`y|t*!mur{>>_Fuc$3-5K5E=0 z~&L&$q@g+{fR7VQ|>BEFT7)L z@7q7nJ#{+2^nF6=<0XNe>F_fSDn#jdC4`0JQsa1CH=Vvvtj(^ zZC_1&@F=Z+dz;<;53iI#zn#Y7`++RPE6ms-{vbWhfE0O~o8o?1Ai{A<8~m5xJ9%I7 z2>0nZP)AD2pp;nCkOY`8C0ygVM52dGU8gYfpHAn0ONf5?JgjWJE@hbf9&_dY{YE|X#`pPOuxh*~wkMTO|NQV> zUpTbzTlZ@gj@~DvK3+2DlTsfqY3S&?r+&MAY}b)=apv{4nYVPp#b5Zo);EuG`A*En z&+*hd?G-E;0w6BNM39C2&8{i?;`2oNF?42FGnkef>*{88%+ z0u18wuJTnZCT%_!pCcA!%|(n#ncH;0b;Zc_rvABqpFZ+KEm-0?Nan%eA0C+Zdb=K3 zSU!F?_l5L{sE?O8`lQsy%LdBb=FhUSxf{%*3=TX&^zVuU@4ixo?GB1I2&&A+>r9ve ze~?~a#?-klJ&nb%#|~md888*Tx4e({uRX*%345sXHl}$$$1!3lAs7o6k{$zij0Pn_ zP3R^uhp2Pb^tib=&ZFH$9B@+G6eJ*2~j{r5v12T1;x0&*(Y1k|7>-^X#C) zEi%F*ZjRW+bX<=|;&~2wb%qI8(J&K3*djBgO3C;Sy)T z(rx8~H(uq&t6$_i-&wd>)?AY!!U8?kiMTRVQLZ(n{jG~t{y)jHf`Zt>wKS^TL-Sw8$?U*|sh z_^U>rl=}D^ixs+2j6V9#($!C_C+j2US>4sruFObs4&zz|u9I;(I7Uo~P=&+EGOHTW(2y%D zleApK1=nCos}Hb|1%&h3VvkqnkUzo+UE@TuPRUv75@0>UO=g@)Thv23=&DIY z?yx&g9!pRDtIsg|6(D)BuW=uJ{8gh*N`3rIhkhbFcH-NHiyu4PUDb!vxz{|d7v)T{ z#**vE^)k%I-3dB2A~gw5yCo8*%xRmH1nXIL_=9}9calYI^L=I?6SCqt>x0{>K{C@J#ci+qT`+7sWsuqS0FlZKBhZ2FrE+ug>ua%vQrX>RLm|~D&Djar;bTna@fN4`@fev5SITWFY z&ziRBYL6qj$^-F5VsTt4LySn7Ys?rm2{>p5nY128g;xcWj0Y7obxb-B-+4N%1$I&6 zXj9joAuo^e9R|Lu0ND#5=ScA z8PIdIb&pqD-sX9~KA4)H`xkuu^gS>3MeL)G|DVw(r9NJ9xR%D;>&NaqenT*@^Xc&H z&3P8UN(8ntl`i{GUFFpMEcl`5{j~-|vuX5&VDVaAl$=T&qv8D^Ry2km6|U*pez`fqy&{_8(Yp7;Xb0Db7Dcl$#_ zl=pu2eGM`q>hBo!@rps8l=|oc*aw9WMl7Y77QCiT@TS}B)b*N%Bj03&@8=+&;f$PO zg?9zl(3OX$`w|&Ui z$%`^5)ogfI4c@1u{G68fanM<16%0oQ}(I?0m^)!n(BFExv;O1nHQ%-4x7|0T zXA-$X_Hc$}+2+-GAUwf-8RSu2<{jSE{J-unk?T^x(?vozNI;Whd7jRDfZu(w-&h}g zyj0OAr9S$2VG!V|zs;c^3&elZXklR7MGd(?NUD(tmSFO=UQxE=^AH@Ia`V%iuSFm@<3)-6a+rm5f?pF{re^4s;AZ;sjEpZsj{z#r`6*ts8Kwr>s8 zM<0Fk(Z^poB>%%+s^fPBJAdZ83wtjPh~J)(%JP0w`48`@U%mJ4yYqy@ literal 0 HcmV?d00001 diff --git a/github.png b/github.png new file mode 100755 index 0000000000000000000000000000000000000000..57bb3ddfe2e798fc0e6cf20ecdc492fafa8092bc GIT binary patch literal 30650 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 vStGvx1 \ No newline at end of file diff --git a/globe.png b/globe.png new file mode 100755 index 0000000000000000000000000000000000000000..ffa5177eabc295ed9442faf3e5a1680d69ec7a89 GIT binary patch literal 35569 zcmeHwX?)bxxj(B(z!)Gvs;C2^MnQ=iiwca07!^yZcAP4Kv9(^R2m>M#*?t%iRMei9~OVUJ^t=e$Kb;57pc^_x~-u zdTL`)@$5#Qe-iyCCbGV)3{|~#i2oysddNTEUsF!$I{63uh{%0MeGUF9D*EfMg{l&w z%S^rK>_(CQxLGvhddK|ylRp#oXZHDbge2vSHkUuVyy>RnYr9rwkNhlp*NPjXO)Y=w0rzO!v;{X#AKM${#zar1 z>+4mKLiCo>XA?~^1Z-Yyg zBN?3Kq_V{4EUBXV7vI5BleWw|>Mhe#XKO!BgWeDD@xsIVmV}3myy0(C z;|CYD(r?$`Rk-=rASuNWx~@;MTF)y9*3CS-fAau&#LhW$VIvpTO+4x}9rywd_<0fq zW8vXr6XHY8zGg1 z>{8w(XEU(V+;Xvx3Dx{Y+&QOt8WPIA*DWJvAD^G>Q?R)C_F8}E2>sL$ybPx+N>?oK zCD46X@Sfz}B{loU^&D^Yp~x&0gn38R zeim+veo`FUQ!%!|ANm}XBTV@KXO-7w6SBr5Hg%ccQc1*J+`oq3`+S&jhY+sfiyu{_P@`g46=Sz-LyePaN_u|y6MQ%_Y-3+>>E^4OXW>~lzle+z=uWp1 zqOYyZuDGXUn)|4=xkCEGs$3V=TM9b!S>(An?cPIpSveC*t`dJwUvM0$n#sSXD`CYg z?$Rvm{C~d971Kw2JVgB7xpk|vF-^-S%IS)o9r(S#?&uv$n)Z7i zX+FIn4l3soI4;tC^{K(_KJk3R`Xj(eZ`hlAIDK{^T@&S;JJ*4hOZ6hM(&+i-Ek<7~~d7YI# ztoS|XcmI;|{guv|*3Ed>1##~o6u5>{MlTbcN+;F%Nw;2!x~c;z(c+%h&`kCc5`>HKjK8=ckd-hZ){tvTbFw!n2WLLW~-?Hn5g>xm$&mvB%@ zhqd05{Cr8q(ZEH`vq_Uob93gRSWnGQ_VuThXFb$42lWA{okz9WDL6kqwYHuZayKql zM9UE$6-{i{s~~Ep#}7c zKxHomO4VFF?92n<=bGoNKwjOI^n8z!S3V&=xGIq|@UuQ6ze12R2}tlUkYLS{jJC)P zGeXS^m@>Gl(IByel1N}*1f%KcZ&41v7C3$Kt08ygg6-2l>v^^_kGTI@T>Yifp|+^| z=>7N`XgI_Mu+uTAg_uQh2E<=SrVFPZ^hu)z35wKbcOMVhZn<9DzfMI6_0|91o@wFb64Z$oWBzH4hO`z zw%s#9YZ5-`U9h=lfN&Sqt|1Z56!p?T6&-MvR!e9+2U%nivPhV;Tx1skQ)Fc4xH{nWaa4WMa7uhJ=Gvul%l(M=QL z7gr^MAPU-OzbAF#gYKMmjWQFFj=0u%T5D}~Z?)7G$0A4O zO-D=_l!V;y$gwY-p0$DQdyO0*>WziBAVmXR=U*YVSypQ){RD!OkXx8p@(L8IgQb=MC_4+Y704OyfH9y;c-Hdb-ZDBYTfv@@J_%wq>G4e zN78Df+Je*KLx69~yOq2r@yvUQ2mGnBURpz$9g9_6oQq2;c+0S>imphs&ZNP7TMCbc zUpAVE0Q9~ktNQ_Chzm+1q$LkWoe#B^Tm{&yjIh}TT)0;P~JLJ5% z=olZT-TM_4xMIj=QW zOI^JNi8T_5l~2T)mp?yGc#|I@vw&jMCs}{U8Ku=UbHnX*kH)g z;?*|_?qbjAFoc5Q3QEhb&upi@DaMx0mwja1qk?kC4O-Y2MT>zMh4u*ad+kLa|M| z&0vJbGd6ucQT(%IZQMDxd1VkC%QJxHtQ|VyMJ@OudK;Kq@yep5sA(1q7KJ1r2bW~P z{SEb!FoEA}VjSXtVT4Eqs+kFlnJI!Go-!JcWClHK016jsXS^qxlD*(DiVBI7fzr;^ zcyU+TygAk)EviiM0XlU~<1uo>_a;3vQ6u_0d$x)q2rFHxfV!BAqBopS)A)W1F;wK~ zRXi6dK2z!uhQbx+S@@8|{?XhOABo#a!+ke?g!&b=LijXf&urr9Psm>o)z#$7tc2^s zJFPfn?~@_7+Twro1e%tVe<>~mEy{QeIepwxJm@N^tZGiJZ+9+Y)aFigbMyv$;y~6z zC^ZX8r7Z2p3Tzd3r)_K5DMj34>lCGUSCE#D5f}#w8@$7j+J96|>Uz)g8~6SBt+C;I+nW z8Ot86=uAZ1n-u{SQ*B(hj&z9D#jRfsLgPvzh)5~#R6Js-A=mnDwGqNLtAO&TEgeui zkSo})!2r>)ZSk_=*{^_FU}T5ZFo_86G5RZT1mNh(?K8 zWZ{0qeKq?T4||H%z2_6btmzAogU81C=o^;YT^ze8jr4EeO6x5N@-+<5n3vhBFn@j@ ze=6KpBby9TWqY>Fo7p()xD4Bcs^$&@VI0Nm0^~xm8`)_Bst0h8I~pV?_Gnq8^O4&% zcj4yaxc_6|t5ukhTI>kW0n z{p_Rw+qUSg;@JGI8!33@-7XBhXZPvBO28Q^_*^6b-M^D@AV@#~a}H`&dN{PApmr4+ zOwR#H>ER>y0BclrGJ2RilJJ9X2WB>Q@2yscg+OA&CPL+B#4o6t``h#@3(t9b4)AVH zkLYD&GGIUESY5j*=oE6p*8-R9LSez^@w!8g>AwM2>UctE#ZDD^^ib##b)K)_*D8Vp zYxD&BSVQ9VDfwLgxhR*^;dkLL6xc`R$W(fTMe&m?2iAE3B1aT?gD`r^0m2JQMXf&+ z`0jFwqoonm*HE}+HzCuVaFH0lnpAgb)!aWD#Kt*1aWx6|-&(3q1QNdd=)W!MkV8a>bklnp%~XoRJwPaRIJzp~&pP1{#2l4*W3(!zbV-Wt zy5O?fDjBbsT9pWc(i9I9(GM;TL-?qV(V4{gWUZ>^_B5{D14PypGoA~%K7i^310WG1 z`~$#jAF%+6^Wq}*RzmFoiU-%{4gqHy!o&eDhKcWqd(BV4S_;iniVz&If&zH^z=UqR z!k-Ft<;cuLxfBL^(Ar+Bm|9-zF+vYDDy0x|3qWL?PZ4TGAoL3hWvysK?Z8hpZ6ozl^7c5u1X)VygS{RD>wJR3fq~|Aha!ij5|sLbTTZcHgaUv_1{=NG zOeSYq$%VL(a$8|TxX?#r@UCj9hJ`ND5qw^Wl5L9nvrRxr^8;^K$nDTI#(E|LlH%E6<=;1720+f~uDV_s4k6Df3dL>{i zE9Az&DU9Ps$%{GJ^|1YY5>mo49blQ$kvk~XRq2$UaR2JkOf0)#4q`I)B8I5Y3gF0x z9uK)iY%#%w^QSgg*RL^DRpMCttK>wy%K5+)V}&8$4-tld?2*_GtW-@BFJ0^KGL3u8 zRRhGmamL}xfp(s^g~i}|bnr;6gu1H&LSgOCtd*L1l=TO(u$=)}OU+U2qKd zxeOpCIB@@6LEw6gtrudR>%ljp7|jM)sVl7H!y=cLsqN5wh`or z@5{#da`%MPOKenq1kNHGD zum*vBs4S}?Nd~tuL_;t66^tQQB^ugBku@DISP2kBfmml1I|7jRaaWIpjlGQur3@l8 z(Yqj!oyV!2;MdOIwZ9Lv>ZRRS=KM9e3t?MzSt+|-3>)VlbeNXBrNB}dG5P|lI_qF+O)@z`ZC>mf4c@cQ%&YRZXa?`1V@d5N8x@ze9 zJF<(17gxXzu24b>XS)v1MqjKZ(BOA- zz7c{^KJm(C0`q0C5<(8|9=K0f>0Je!nfJrPHum{%NVg z3(i>=qn)-`J53bzQ2^hcDuR5e^BQuEhvBVzTi4gtasFp3i6bdlh%j|iHcjxqGm`wP zzK2S2BPf+Jis7?{hrb;~+gq;a1R-iX-LH(2u;gx%`d2s_itsI#GU$^|roa^t4+*(b zQ!04#02wog=0c8W5C{t;_94;HK8!NCGaKxscu-xdWMnpumEw1$dk_FtG~0Bl zj!Iz!GA#l!Jw@?N$ecjru4g(kIS;<=M`p^_u@x3YW-{jqmCjjzDBKUu)|1YrvI18b z^+bvvqhN5ndGkM_K<0MAj0sUT`1)cM#S6I`KzcnSy%eEqJ`XkT{(UdmM3HQAa0Vn0Tgx~h{+o3{#POP>MOR9 zKVVyXF(+q{vT#TmygY;nCOrTmH9V}c% z@RM@>aG55vXc0`@s*(dUgL z4i5KKU=!rt!d%`Pl+uxUlL`nD!Jf(y^{4#TfUs~m7*tI7Q#FV`?gaM(LCNZVkmB~I z8nh40*SR)#A&BF|Oc|2_nsfqcUuL!%xi&hS(D=QwW=*;iIRn%6HCTvgmLqsSP>eHh zoB^4j;Rsn}c4jNZBT5F~Pz3SFeAKA41Y8*eaKw2Ah=qS?$Uwy$6hZK(a(Wv+C7)#H zmWd!!%auI_v;-+=@gUhvR!=^ik>cORx)p#(-kqwhs(^j~le}=YE;XakGaLXZYN#-B z-ZIuY*k{I?eLz8hIFlTvL_uh6)>?txuU{Aq#;T~{^0EkvlhJqZuSj1$# zStApW_ooVGK=sv|aaNfW6A+mygHx3#1LNb}st*wJ)@t=(I0Y8zp)iYBhE`y1(~PH} zurDrAX2=}~r^+G6k79<2iZ4~}gH@?Cs(G2(6WK~3G*;IS**@e2aQk(13l#Z;-D-#J zGrduu^l2xfbeWDa0)@cPdUUlFfTNx|;zzfP7Rbpm?iw){6VqF2?EFe_9&%=z{O;ZC z^yL}24axNP*fx^`5Ps7Be|VG!K)I@VGaQ_SwXK8 zcbM>uHIaidfI;355h<`|;5=^x1HA~sA>dM+tG$~%a)_X?hV~=#cHqfFn8vdoBPL;} zT7yLSSNgWtgJO3m^0kV(@H)YMlR>fOt1v*w-30Qr)CwFxR$isy424hEb&3JXvSGm$ zAo?EPkn-u`PeJ-Rk)zW^KC#l+7ZM4mcZOJ5$jy6;bwAlP4n29!Q%8kEfvNCN<{=LQ z_09_%oMH5a2@G7qc+^x*hgE_AEqfb5$D)n!Zi~jfb%@T|J`nkWbaVxAZ|?+!214!{ zpv(rNO2idjnW_U14iOquqN28#P@x<$`e)W)tJ@{ClFLxYiA~NE7O*f5i?iDB0bS~} z5~wQij57xLc95w_2Ddn`DJarTha#VDe3qL)Z>6A4uvv$?1v-?D5(FVQ8~GZ4p=kKX zm*Ea|piQhYa1q$}Axq^*f!d*A9j!vLR!z>h_Y+%oI5;nsb>)H>XS-k?II=hb8u&S- zEPdimIMQ}wM4dB#;+{;vPnxorS7&~TW7XiMM!vx#G1HuBF{>sesEHa?a}}TuQ-a64 zL+VPo3{_hNUyt4fRBP0BhA;q!PsH?-Z~<;dg2<3N6xe3DiF1ozYyKd1#o`a(;_}>N zjMT>xVZl!4zf=GaV)@9$?<1!boPh-{HyCSW@qMM}EbXu{w&DgA5TDT)J_SP5Ytf#w zBPD)gEG{jh0u-GM$~)IS9Tu1=H?2KDT3fQm?FtR)%Vg~nq`+l zZZNLB9Avd&U_|;V*RwJY{AA}v0!`>zCn~;CsZIl$dfK2#34Y9Lp9$1f^>-@97W00t zIfqCoLkZq%l`w-liskat>ZXED|Gi`=$hbgMd6_L$cbb?4Ekt%1sQj!{i*y+*;&*O& z0<*1<)(wCUInH2Eu~LI67DM(GLvGHAl1~NReimUr^J zaU;baPPh{)T>xdQYm<1B5U*&{@r24eNa-*83RMEzcsa~t$maaj7Vtk=0*-ivk-%_` zA}99%o*~5oHQ^6}jUAvAh`5#5b!hY!w3=fSvN{@OHAHDdXQT?a`Zx7|JT&<)q`1hQ zh;AGrNSAFL!LW>%7_7mEuK{{?@~B3f13dM)s!oOB5EULnBIck1PttwH+!U;%!_T~q zWj1q-vSFy?Qm0_h`Fhq!1bG`fKhPii;&sDv~R*w^ta;} z2h1&wB|)4XAxq8jIx(I97Lt(#>E0lL7HTDOA+bbHX3PDfhQlp=OgTQP-V5pu3YI@| zzacsKjTCr|cVdt~lv&&2*cUzgo324k#$~JUCoZbnlPoY;8|tC^s^1mkEhE)8Lbz$( ztj1a32F)kZkQ*5os9_oRnNiUd97%g%!e-*Gnq}}*4NZjmn46wnR4yBH0)_|RSO!n< zbx+JsLUg#gr*xRB=Jv;hjPF-HQ-UE2P6%DXZCkqV^-5(I$F6xiw4xfdCzgi+LVa3+ zS*`nhqGo}LP}&gbmnv9WnE}>vJ`xQOeqgMwi6+P}4ArmB>{C<#SuR__A1HL`;U85- zB18oi;tWf-;pw0=(JlKCC#R|(z~innU+1Wi{dFVZV2(yu{ugH##2^J$W;Ld86UM?u zzET#JX)iNLVv9nM7Qu{qS_rhPx47{AbPKBt<0C&Ju{b|KY*uJ(1Y$zFjnrr(3RjI9Sm;|QleyA@E>Mo3x?GsE z?`vL(xtcIwY=~4y)0=P6xQ^r8@E{d_OW>{*<*9T7m<8{+>#mhHwqp0fZT{*%rD*XJ3?Q zKgj}^;U~4PufH$-!ak}5$@x1nAvEKqyryG>)g7xHYzDY@CemVxE^h^`V5(QNKPMjuOy2UTJVV?72Jflj+C0K%#GkC3~n&=N%zvc zB&lYB>m`PuJ<#{Lv!+HTr!6}Pgiv4CdMy!AwSHBgc`icPSRQhRpI~NXsKeV!MHtHo zIWWdCdxfHuN#y8rRkyW@!622Q&|-2+TlSH`?ioPNZN@Vd{fx%6C3m1wIEW{V-d{g82n&`=F2pssu3{%gA}~dnM0dC`lx5Hcat?K)(51b0ttIrpuV^?L4g_ z5wsgp7+jS6Q@bfJ5Y=p^+9ZW&Hvul@(e`*-{9_ z{HoGQbf4MB;xQEz(R#;F%64;J)B+$1pbV1-ef&JJgIeN$o=ft7f8dMNtRdw{!&C7w zqdGEt+({X}RR;{jW9z6vS31D|>z8Ff{w9_7aK*L7TP+2$%0_-v#^4iWneKjyhNcG~ zUt~xD%8Hvqu*OnpfHd#Yb8>kf+ww_Zcq}|Y`A|s#W#Iof+4>d#QD*dPdsdy&n6Ri4v78?cud zH{&3(V*PrkWqboA1{^v=u5?$(4yjr0y9T0AH$3+xf=X*!R)J%=yp<~YHrX*(!VcV@ z5wtCEEWBMs@gZz}hn2wl5l$ta5u~V#GH>KWL!LpT!OW9GT?4ii#ymO3jY4b;`^bI* zXg_B~Isu3pZUk(}Zi0sSsy2eMFjQs<4pf(NY;j)j8XIg5B3C2-zqzg(6yLrAnMhIi!56E&<9tU1OTe>0I(X`2o#h4)pBT_J~5i1 zE8|VbM!S2pyhCsvr<>ewyE$2z*V>ZDVI3=VlIA zrm6?1at){r(ovU6QKwCca+z&f=0LSUyYVgDrgbL<8X+oWnzVT)55;GIUNRT`(*ZW* zN0|Z->n`{-vC&Xi^KG1Vb|MC(?keXob>S!I<=>uc{ZvrZE&toWSu=hl&HdJiv(O4~ zR`Y1236_4AQ)ij(=l;bqb2L4oM%waK=P`B73w?9esOR>F?M z8+O9ZRK@tjQUmlUvh@17>qp{X6kvA1;&lIlcV$iu0M-ZaFYV-UaO>{MBv3JLi) zT>>0Ny)v!Z;=aX=3CF&o34H+v67ZnDyp(fNu(EtP};I|WhC)7qw zLcPk}22hx$!3`O2SyU3Z$mG{8o`1sVitZo|Lo7vaylaCNxBf^8i4i&%(TM$EPPwsl zUgP?bB9oRkY*}9O@2RqLO5VjvCl8D=!y2|dB;!c6Hk%{!N3J88- zYf_0xmMQPk#@sRQ_1bxgd9bI2>Pk3{1Ao(kr3)^AcRHH9Aqg%Qp=2uB1M6U={5lJd z4$wV}%(hB<8ULRx2hWh{sXH?&1(i!1!|krtfGds8XDJD={k8Dx&CfT}q*>_Ja(V+Z zUT7e-c*q1WxWR!N-JxYq*9npD$A~>kYYlM&5c@VOMZH_MX{R^tbW(1D1j=0X8++*B-JoG8}#G^J5p1toCR4;%`L3C^QFS}i5;|z2^X1qe3lOG8Vb1?7PK=! zB|ORE07wNoui~ZhWILbOV+f1)snmz5@F4BP0nv$BYL2e#O`z&4zEit46x|D|La7wB zClH$jBxv;zP60z$LHTSNQwaO(r>a^&HW7&MvyZ7EL} zF$w1CC=j1ab#7gt+UdAoB|+^5Vwkn1^WkjgSzB6d5TZ7>phd1R{xxwJk2QjZAvv2g z5b~2E@zA{&33jn1SVR1$0YxRiYX@8EG^M4=;udY5-kM zRy}|%-cZ_h%?XWM*n=MnOi=#{OJQ^6R+CI9@2-b;P$!z~A@|lvcTYB=F{CUo?pw+a z20y|%9~=e>QubGi9LPegJS0POIKdFHn^mqWjGK}A-?Hte_5vv|1 zaEMdaG#!Ds3kDV*R)tqq+e@mvXK}BM->(5wTm$AK11|rF<;-7Zi;@nQREq1BRLVXw zFHQIeearF*Uq>x+AQmt!`*?q zdlE;IV;KHGw>KTb>N; zMN-_oM++^I8@)Qw<7Jm6slAM^s%52PG`m%FwMEp5H=;ty<`V6^<$8O zD-PPW0!iDjwtPXd6{#tbtNGeHr3mi6`MQD~uZYzc;Ee@suhop=^H92}ZPJ0GGp)v4Q zQsc6{4LW*M`5XVcZj6`B@3Jxe`)0Uq?k|M~eAT72jl}^(L?)Z!r9S=tCKXL- zGq0Zc#GRmhImiG671n_bz{pZ>BcwDcg7gbC zE*jha0J(*fZ>jit3i^Nxr^3DAxRnwzZww1Aig2Z_oVFsRq(a}nO{cmnJ=z_P2cZV% zF|z$Q#Ve7MuQLubIapPvKXEdq7Z>V(trYJA`m3e^PV_(l`Xwr&0dq_^wdfO1up7IL z$iT77%T-6e9M$m?6GZH(0khOsghe0EO`wuK!I59^um(^4_!^THG@1$~SF6Cn14uW; z0l9_)c)kM77jpihbRk?@XSg=*Vo}$2iDf5Iu4Gmz-?k*6iW&O-K_>GdDccu_(nN)e z+-JJf^vT)RpL4E?O~Eh#M3(H@)!A%`?Oo0)4TTdq2D6d0rAYnwVEDbByGCmmTbnLZ?c~t8nWZIx}L)=L$39}gcq3M2{W3MzU zk18i%nMKA%($UzD9-HZ2AKfK~SBhakCjUGnEC)lEX6m>)!ybvcexVZpWEv{4-6aJd zmeZ7>C=$>_crTg_FHXez(R3p<0LWUOEGtd07nv0#Q&ZsLFeuVQJA#St{UFK-6W{ev z*OHH6rx?_l6l?9j?t5$kfO*zDo(cP>BD#kKsDz`*vWQANnyf~pE95L383r3|7&M!x~dgv6yk3W>=YYKvH%HUi2dAX5QA+~Q5!Lms5A0*1ip7=LBnBh8;+ zXs^s34VMaO1S?0}wIbl-yMStH*}x|!NHR+nyjm?MzFKqdps4%w(sF*l1;)vNxCt8C z6d`^!Rq#B7Lv|QX?qUKG)}hCpzwX?UBXX*^TLAR{;$0M7!ZI)_P)*5Tri|QIf)j`7|c?b8vh7AY`Q@^eS$`Lhtcf8%tX~a#zQ9;U<3JN)fWoPodL`p zkjxEHBbaq~ZpVCnY(R<|;{X_$sAE;60?5aidyBF@J`n&Wa1Ic_mKb-Lo_@h+69j%L z4~$g~mYZWnKs(Qw@IDqEigLnfFqU`Nnfof8_Z9Ny(V_&!V798p*!J-*sEuS!KK>~V zppcU)Cz58O;ZV*kIxJz$IfRjyDp+BO@3nv^CMR$qcmP851I1Kr?AGMJC^s17%M=gH z)pI@g=J=YgDIH(hg#3i>ONoK7QY(cM$(nUPDih6eBrm~-s=14_tg!r2*YxB+segra z@Ie|gBQ-YP8ZE4Ywtf2Rcnc5XCHMycTeXrggGw9x z%G(FFJ`1u^D-I$DNHs8bp`~#_byL_AN4d%(6=n;HNx@`Um0}D*Es-xrA}(O=-q6IO zVo$6BsQ*1CUe)P#Yu>EA5RIsvWpg(?&7&H{_&e-EI~OZ**erQKd%2ThFukQ}?r2hf zUqqX5B0^`Cyn*TC;4I_NYhYR(OB_gXa}>9;|E2KlTZd>OupTeG8$6RAjTa_NEOZAr zZbYi*nELZbI%JOzdY%G?w(f|2DqY!T?8W*>>i5es6n&#g$?)Z`JE zz#UAeVim0fBexaMDWgI$IX>B>LwP(l22;e9X>_NN+Gf;uc76OuqrPX>t-%@2&a2wF z{SG)6pfg4*;?B*{;j9hjmcs#e-~&1ldSwmXsVfp{TIE0!d=PJ`m?KY##ztbd zqL)qk$q(Ao(Kqjo-ij}J(QN4~IUSt?3ahmT{6l5BbfFLNS!aBsr~;_T3ZB^ zH^IaCdB(H2P9twep+iUB2uC0c<2Kd2YPb;kW^bIi~(<^syZIU5@2p5P5IigE^Fjz!Xw zZ%cEk9tyJ?oqrI9hxa_7&>}I5VhAc#ZmNOdQqS(fBx|3?MaWBBbd%(-gF)V{TG0F z#&M_(lEZRwCA!B99nlnz8(2jZ9$X{5T0g-s*4)%J;5U9sQ`oT~ncu6>&*Ff&fM;=( zl2>mDkzV#bZ(k)!ihLI*lF1B)52wm^ah^qf^?nxJ33Y7OFYZ^E!-8oGihR!_UmUpc$cbNzb49e3ApZPSk=HI z`RU;$c3?fz;K8;_-Hh(~{_m#y=a~(wj8DcC12+*8*CWS9_i8~3)6;Z}${vMdmR#&E zHRHrTM&!kVvIE!Z>L?~8y>ihG;n_~3wW4;gvoPhMTB~Ej=0o;FbT*ZKmlAI<0O+Mt zKGu6}owFc>#(Nuz1oNP!xB3;~KK#c%c8Z}BIE|6mxiQt|S&wskG=&PlT2s4U2a zr5w^c`USpS(f)3RX*nXIDJ8qQM{%!_aq=jw7v^ACcWdTovb>})g80a#_${7j^or=` zTMFB}i`6`8`FNpBA?Ql-w9Vy!Dvy7Iwl|F9q{H}btH>dlh6h6N8X%{q(iM+dxiT|b z(V@5J2xV5Z%95?TCG}`bgEp6>LDh44Rl4Uo;KPsS#Q{Yiwm17lc0A}7$xCnxz zkR||y!u74YmNX#ejj?RkEwpPH`JV-9U?VXt43^`+Kov%NS!`6t3c3+|ri`YQ!7T@A z{s7o7e4*>acY-PN0l^4498bLyeA&if@J?|01`(dZG(cjfwYj6wxjoC;;BR#zZFX2= za6QQj-#b2i;Z^pD@ks+%a4CgF9?cz%Pfs3E{+d`vqDE6=wA;Wn6OfB^I-kfXSf>XU z;^lIS{P}M-uLOVCZ?dX&DAF)G8A2v);sp~`74!$HLJmI<|IGY?PbJbcP`G2Bmpb}1 zc&dISBo*Na>LXKd{@Q8s1#IcZUv466^3`d6at%IzR_z>gXZbC5oaTy;Yd?Wf2RVd! z00frxS3a10kQ#yPM>^hIxj#U|us@hw4f~6zc;?>HV}KSrYL8jIbPn(Fh)F6d1FL~tVU)Y110);* z*-2HO0h^n{56p9_e@*V*ekFrDXf5c_b7`0`5c4!MJwh68I6MMgTRMJ8#cAQpQG#4Tuda_mT>*d|J#56zByb{wpvS-9=lGpS zc;pOXePRHZfof7Z@VE&579u13tyd(~-vqrAJRhWBq6+H3YT`6`s8w_*^i*06Cc-U$p~h5REQpVd0k!z0a9Hfk=1tl4B|WoN{5F1Y5xq>G zAY%h<5%N;J6hSVZP%^c7Ro5Jpq;uo_>eh4&XD6i!2dV)P-^QcC{r%sc zfIyePH&MYCM+D=%2OW@4`SUc3pYJl|5ZGY`0hb^bH83$c{73wsW1r-}!O634U316d TPjrC)yK&rv>#DB3tMq>W(quBF literal 0 HcmV?d00001 diff --git a/globe.svg b/globe.svg new file mode 100755 index 0000000..05bcaa2 --- /dev/null +++ b/globe.svg @@ -0,0 +1 @@ + diff --git a/linkedin.png b/linkedin.png new file mode 100755 index 0000000000000000000000000000000000000000..a4af27e02a7e3a0a5ad70f1ce22922fb0a9ba795 GIT binary patch literal 27741 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 diff --git a/org.kde.bearwave.desktop.in b/org.kde.bearwave.desktop.in new file mode 100644 index 0000000..842d279 --- /dev/null +++ b/org.kde.bearwave.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Name=BearWave +Comment=Internet Radio Player for KDE +Exec=@CMAKE_INSTALL_PREFIX@/bin/bearwave +Icon=org.kde.bearwave +Terminal=false +Categories=Audio;Music;Player;KDE; +Keywords=radio;stream;internet;audio;music; +StartupNotify=true +StartupWMClass=org.kde.bearwave diff --git a/plasmoid-bearwave/contents/ui/main.qml b/plasmoid-bearwave/contents/ui/main.qml new file mode 100644 index 0000000..531ac5c --- /dev/null +++ b/plasmoid-bearwave/contents/ui/main.qml @@ -0,0 +1,106 @@ +import QtQuick 2.15 +import QtQuick.Layouts 1.15 +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.components as PlasmaComponents +import org.kde.plasma.plasma5support as Plasma5Support + +PlasmoidItem { + id: root + + property string sourceName: "org.mpris.MediaPlayer2.bearwave" + property bool available: mprisSource.data[sourceName] !== undefined + property string playbackStatus: available ? (mprisSource.data[sourceName]["PlaybackStatus"] || "Stopped") : "Stopped" + property var metadata: available ? (mprisSource.data[sourceName]["Metadata"] || ({})) : ({}) + property string titleText: metadata["xesam:title"] || "BearWave" + property string artistText: (metadata["xesam:artist"] && metadata["xesam:artist"].length > 0) ? metadata["xesam:artist"][0] : "" + + preferredRepresentation: compactRepresentation + + function callMpris(methodName) { + if (!available) { + return + } + const service = mprisSource.serviceForSource(sourceName) + const operation = service.operationDescription(methodName) + if (operation === undefined) { + return + } + service.startOperationCall(operation) + } + + compactRepresentation: Item { + implicitWidth: 220 + implicitHeight: 28 + + PlasmaComponents.Button { + anchors.fill: parent + text: available + ? (artistText.length > 0 ? (artistText + " - " + titleText) : titleText) + : "BearWave nicht aktiv" + onClicked: root.expanded = true + } + } + + fullRepresentation: Item { + implicitWidth: 320 + implicitHeight: 170 + + ColumnLayout { + anchors.fill: parent + anchors.margins: 10 + spacing: 8 + + PlasmaComponents.Label { + Layout.fillWidth: true + text: available ? titleText : "BearWave nicht aktiv" + elide: Text.ElideRight + font.bold: true + } + + PlasmaComponents.Label { + Layout.fillWidth: true + text: artistText.length > 0 ? artistText : (available ? "Live-Radio" : "Bitte BearWave starten") + elide: Text.ElideRight + opacity: 0.8 + } + + PlasmaComponents.Label { + Layout.fillWidth: true + text: "Status: " + playbackStatus + opacity: 0.8 + } + + RowLayout { + Layout.fillWidth: true + spacing: 6 + + PlasmaComponents.Button { + text: "⏮" + enabled: available + onClicked: callMpris("Previous") + } + PlasmaComponents.Button { + text: playbackStatus === "Playing" ? "⏸" : "▶" + enabled: available + onClicked: callMpris("PlayPause") + } + PlasmaComponents.Button { + text: "⏹" + enabled: available + onClicked: callMpris("Stop") + } + PlasmaComponents.Button { + text: "⏭" + enabled: available + onClicked: callMpris("Next") + } + } + } + } + + Plasma5Support.DataSource { + id: mprisSource + engine: "mpris2" + connectedSources: [sourceName] + } +} diff --git a/plasmoid-bearwave/metadata.json b/plasmoid-bearwave/metadata.json new file mode 100644 index 0000000..3edf0dd --- /dev/null +++ b/plasmoid-bearwave/metadata.json @@ -0,0 +1,18 @@ +{ + "KPackageStructure": "Plasma/Applet", + "KPlugin": { + "Id": "org.kde.plasma.bearwave", + "Name": "BearWave Control", + "Description": "Panel controls and station lists for BearWave", + "Icon": "audio-x-generic", + "Version": "0.1.0", + "Category": "Multimedia", + "Authors": [ + { + "Name": "BearWave" + } + ], + "License": "GPL-3.0-or-later" + }, + "X-Plasma-API-Minimum-Version": "6.0" +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..b6777d0 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,36 @@ +# BearWave Source Files + +# Core application +set(SOURCES + main.cpp + radiostation.cpp + radiobrowser.cpp + radiobackend.cpp + bearplayer.cpp + coverartfetcher.cpp + mprisadaptor.cpp + bearwavecontroladaptor.cpp +) + +# Create executable +add_executable(bearwave ${SOURCES}) + +# Qt Resources +target_sources(bearwave PRIVATE qml.qrc) + +# Link libraries +target_link_libraries(bearwave PRIVATE + Qt6::Core + Qt6::DBus + Qt6::Network + Qt6::Quick + Qt6::QuickControls2 + Qt6::Widgets + KF6::Kirigami + KF6::I18n + KF6::CoreAddons + Phonon::phonon4qt6 +) + +# Install +install(TARGETS bearwave DESTINATION bin) diff --git a/src/bearplayer.cpp b/src/bearplayer.cpp new file mode 100644 index 0000000..6718896 --- /dev/null +++ b/src/bearplayer.cpp @@ -0,0 +1,191 @@ +#include "bearplayer.h" + +#include +#include + +namespace { +QString firstMetaValue(const QMultiMap &meta, const QStringList &keys) +{ + for (const QString &key : keys) { + if (meta.contains(key)) { + const QString value = meta.value(key).trimmed(); + if (!value.isEmpty()) { + return value; + } + } + } + return QString(); +} +} + +BearPlayer::BearPlayer(QObject *parent) + : QObject(parent) +{ + m_mediaObject = new Phonon::MediaObject(this); + m_audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); + + m_coverArtFetcher = new CoverArtFetcher(this); + connect(m_coverArtFetcher, &CoverArtFetcher::coverUrlReady, this, &BearPlayer::onCoverUrlReady); + + Phonon::createPath(m_mediaObject, m_audioOutput); + + connect(m_mediaObject, &Phonon::MediaObject::stateChanged, + this, &BearPlayer::onStateChanged); + connect(m_mediaObject, &Phonon::MediaObject::metaDataChanged, + this, &BearPlayer::onMetaDataChanged); + + m_retryTimer.setSingleShot(true); + m_retryTimer.setInterval(1200); + connect(&m_retryTimer, &QTimer::timeout, this, [this]() { + if (m_lastUrl.isEmpty() || m_playing || m_retryAttempts >= 2) { + return; + } + ++m_retryAttempts; + m_mediaObject->setCurrentSource(QUrl(m_lastUrl)); + m_mediaObject->play(); + qDebug() << "Retry stream" << m_retryAttempts << m_lastName; + }); +} + +BearPlayer::~BearPlayer() +{ + stop(); +} + +void BearPlayer::playUrl(const QString &url, const QString &name) +{ + if (url.isEmpty()) { + return; + } + + m_currentStationName = name; + m_lastName = name; + m_lastUrl = url; + m_retryAttempts = 0; + emit currentStationChanged(m_currentStationName); + clearTrackInfo(); + + m_mediaObject->setCurrentSource(QUrl(url)); + m_mediaObject->play(); + + qDebug() << "Playing:" << name << url; +} + +void BearPlayer::stop() +{ + m_mediaObject->stop(); + m_currentStationName.clear(); + m_lastName.clear(); + m_lastUrl.clear(); + m_retryAttempts = 0; + emit currentStationChanged(QString()); + clearTrackInfo(); +} + +void BearPlayer::togglePlayPause() +{ + if (m_playing) { + m_mediaObject->pause(); + } else { + m_mediaObject->play(); + } +} + +void BearPlayer::setVolume(qreal vol) +{ + m_audioOutput->setVolume(qBound(0.0, vol, 1.0)); + emit volumeChanged(m_audioOutput->volume()); +} + +void BearPlayer::onStateChanged(int state) +{ + switch (state) { + case 2: + m_playing = true; + break; + default: + m_playing = false; + scheduleRetry(); + break; + } + emit playingChanged(m_playing); +} + +void BearPlayer::scheduleRetry() +{ + if (m_lastUrl.isEmpty() || m_retryAttempts >= 2 || m_playing) { + return; + } + if (!m_retryTimer.isActive()) { + m_retryTimer.start(); + } +} + +void BearPlayer::onMetaDataChanged() +{ + const QMultiMap meta = m_mediaObject->metaData(); + + const QString artist = firstMetaValue(meta, { + QStringLiteral("ARTIST"), + QStringLiteral("artist"), + QStringLiteral("Artist") + }); + + QString title = firstMetaValue(meta, { + QStringLiteral("TITLE"), + QStringLiteral("title"), + QStringLiteral("Title") + }); + + if (title.isEmpty()) { + title = firstMetaValue(meta, { + QStringLiteral("icy-title"), + QStringLiteral("Icy-Title"), + QStringLiteral("StreamTitle") + }); + } + + if (m_currentTrackArtist == artist && m_currentTrackTitle == title) { + return; + } + + m_currentTrackArtist = artist; + m_currentTrackTitle = title; + m_currentCoverArtUrl.clear(); + m_coverArtFetcher->fetch(artist, title); + emit trackInfoChanged(); +} + +void BearPlayer::onCoverUrlReady(const QString &url) +{ + if (m_currentCoverArtUrl != url) { + m_currentCoverArtUrl = url; + emit trackInfoChanged(); + } +} + +QString BearPlayer::currentNowPlaying() const +{ + if (!m_currentTrackArtist.isEmpty() && !m_currentTrackTitle.isEmpty()) { + return m_currentTrackArtist + QStringLiteral(" - ") + m_currentTrackTitle; + } + if (!m_currentTrackTitle.isEmpty()) { + return m_currentTrackTitle; + } + if (!m_currentTrackArtist.isEmpty()) { + return m_currentTrackArtist; + } + return QString(); +} + +void BearPlayer::clearTrackInfo() +{ + if (m_currentTrackArtist.isEmpty() && m_currentTrackTitle.isEmpty()) { + return; + } + m_currentTrackArtist.clear(); + m_currentTrackTitle.clear(); + m_currentCoverArtUrl.clear(); + m_coverArtFetcher->fetch(QString(), QString()); + emit trackInfoChanged(); +} diff --git a/src/bearplayer.h b/src/bearplayer.h new file mode 100644 index 0000000..b31fca0 --- /dev/null +++ b/src/bearplayer.h @@ -0,0 +1,69 @@ +#ifndef BEARPLAYER_H +#define BEARPLAYER_H + +#include +#include + +#include +#include +#include "coverartfetcher.h" + +class BearPlayer : public QObject +{ + Q_OBJECT + + Q_PROPERTY(bool playing READ playing NOTIFY playingChanged) + Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(QString currentStationName READ currentStationName NOTIFY currentStationChanged) + Q_PROPERTY(QString currentTrackTitle READ currentTrackTitle NOTIFY trackInfoChanged) + Q_PROPERTY(QString currentTrackArtist READ currentTrackArtist NOTIFY trackInfoChanged) + Q_PROPERTY(QString currentNowPlaying READ currentNowPlaying NOTIFY trackInfoChanged) + Q_PROPERTY(QString currentCoverArtUrl READ currentCoverArtUrl NOTIFY trackInfoChanged) + +public: + explicit BearPlayer(QObject *parent = nullptr); + ~BearPlayer(); + + bool playing() const { return m_playing; } + qreal volume() const { return m_audioOutput->volume(); } + QString currentStationName() const { return m_currentStationName; } + QString currentTrackTitle() const { return m_currentTrackTitle; } + QString currentTrackArtist() const { return m_currentTrackArtist; } + QString currentCoverArtUrl() const { return m_currentCoverArtUrl; } + QString currentNowPlaying() const; + + Q_INVOKABLE void playUrl(const QString &url, const QString &name); + Q_INVOKABLE void stop(); + Q_INVOKABLE void togglePlayPause(); + Q_INVOKABLE void setVolume(qreal vol); + +signals: + void playingChanged(bool playing); + void volumeChanged(qreal volume); + void currentStationChanged(const QString &stationName); + void trackInfoChanged(); + +private slots: + void onStateChanged(int state); + void onMetaDataChanged(); + void onCoverUrlReady(const QString &url); + +private: + void clearTrackInfo(); + void scheduleRetry(); + + Phonon::MediaObject *m_mediaObject = nullptr; + Phonon::AudioOutput *m_audioOutput = nullptr; + QTimer m_retryTimer; + QString m_currentStationName; + QString m_currentTrackTitle; + QString m_currentTrackArtist; + QString m_lastUrl; + QString m_lastName; + QString m_currentCoverArtUrl; + CoverArtFetcher *m_coverArtFetcher = nullptr; + int m_retryAttempts = 0; + bool m_playing = false; +}; + +#endif diff --git a/src/bearwavecontroladaptor.cpp b/src/bearwavecontroladaptor.cpp new file mode 100644 index 0000000..b72ee85 --- /dev/null +++ b/src/bearwavecontroladaptor.cpp @@ -0,0 +1,68 @@ +#include "bearwavecontroladaptor.h" + +#include "radiobackend.h" + +BearWaveControlAdaptor::BearWaveControlAdaptor(RadioBackend *backend) + : QDBusAbstractAdaptor(backend) + , m_backend(backend) +{ + connect(m_backend, &RadioBackend::listsChanged, this, &BearWaveControlAdaptor::StationsChanged); +} + +QVariantList BearWaveControlAdaptor::GetFavorites() const +{ + return m_backend ? m_backend->getFavoriteStations() : QVariantList(); +} + +QVariantList BearWaveControlAdaptor::GetRecentStations() const +{ + return m_backend ? m_backend->getRecentStations() : QVariantList(); +} + +bool BearWaveControlAdaptor::PlayFavoriteByUuid(const QString &uuid, const QString &urlResolved) +{ + return m_backend ? m_backend->playFavoriteByUuid(uuid, urlResolved) : false; +} + +bool BearWaveControlAdaptor::PlayRecentByUuid(const QString &uuid, const QString &urlResolved) +{ + return m_backend ? m_backend->playRecentByUuid(uuid, urlResolved) : false; +} + +bool BearWaveControlAdaptor::HasNext() const +{ + return m_backend ? m_backend->hasNextStation() : false; +} + +bool BearWaveControlAdaptor::HasPrevious() const +{ + return m_backend ? m_backend->hasPreviousStation() : false; +} + +void BearWaveControlAdaptor::PlayNext() +{ + if (m_backend) { + m_backend->playNextStation(); + } +} + +void BearWaveControlAdaptor::PlayPrevious() +{ + if (m_backend) { + m_backend->playPreviousStation(); + } +} + +void BearWaveControlAdaptor::PlayPause() +{ + if (m_backend && m_backend->player()) { + m_backend->player()->togglePlayPause(); + } +} + +void BearWaveControlAdaptor::Stop() +{ + if (m_backend && m_backend->player()) { + m_backend->player()->stop(); + } +} diff --git a/src/bearwavecontroladaptor.h b/src/bearwavecontroladaptor.h new file mode 100644 index 0000000..216e4a4 --- /dev/null +++ b/src/bearwavecontroladaptor.h @@ -0,0 +1,36 @@ +#ifndef BEARWAVECONTROLADAPTOR_H +#define BEARWAVECONTROLADAPTOR_H + +#include +#include + +class RadioBackend; + +class BearWaveControlAdaptor : public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.kde.BearWave.Control") + +public: + explicit BearWaveControlAdaptor(RadioBackend *backend); + +public slots: + QVariantList GetFavorites() const; + QVariantList GetRecentStations() const; + bool PlayFavoriteByUuid(const QString &uuid, const QString &urlResolved = QString()); + bool PlayRecentByUuid(const QString &uuid, const QString &urlResolved = QString()); + bool HasNext() const; + bool HasPrevious() const; + void PlayNext(); + void PlayPrevious(); + void PlayPause(); + void Stop(); + +signals: + void StationsChanged(); + +private: + RadioBackend *m_backend; +}; + +#endif diff --git a/src/coverartfetcher.cpp b/src/coverartfetcher.cpp new file mode 100644 index 0000000..3f8e08f --- /dev/null +++ b/src/coverartfetcher.cpp @@ -0,0 +1,82 @@ +#include "coverartfetcher.h" +#include +#include +#include +#include +#include + +CoverArtFetcher::CoverArtFetcher(QObject *parent) + : QObject(parent) +{ + m_networkManager = new QNetworkAccessManager(this); +} + +void CoverArtFetcher::fetch(const QString &artist, const QString &title) +{ + if (m_currentReply) { + QNetworkReply *reply = m_currentReply; + m_currentReply = nullptr; + reply->abort(); + reply->deleteLater(); + } + + if (artist.isEmpty() && title.isEmpty()) { + emit coverUrlReady(QString()); + return; + } + + QString term = artist; + if (!title.isEmpty()) { + if (!term.isEmpty()) term += " "; + term += title; + } + + QUrl url("https://itunes.apple.com/search"); + QUrlQuery query; + query.addQueryItem("term", term); + query.addQueryItem("entity", "song"); + query.addQueryItem("limit", "1"); + url.setQuery(query); + + QNetworkRequest request(url); + m_currentReply = m_networkManager->get(request); + connect(m_currentReply, &QNetworkReply::finished, this, &CoverArtFetcher::onReplyFinished); +} + +void CoverArtFetcher::onReplyFinished() +{ + QNetworkReply *reply = qobject_cast(sender()); + if (!reply) return; + + if (reply == m_currentReply) { + m_currentReply = nullptr; + } + + QString coverUrl; + if (reply->error() == QNetworkReply::NoError) { + QByteArray data = reply->readAll(); + QJsonDocument doc = QJsonDocument::fromJson(data); + if (doc.isObject()) { + QJsonObject obj = doc.object(); + if (obj.value("resultCount").toInt() > 0) { + QJsonArray results = obj.value("results").toArray(); + if (!results.isEmpty()) { + QJsonObject firstResult = results.first().toObject(); + QString url = firstResult.value("artworkUrl100").toString(); + if (!url.isEmpty()) { + // Replace 100x100bb with a higher resolution + url.replace("100x100bb", "600x600bb"); + coverUrl = url; + } + } + } + } + } else { + if (reply->error() != QNetworkReply::OperationCanceledError) { + qDebug() << "CoverArtFetcher error:" << reply->errorString(); + } + } + + reply->deleteLater(); + emit coverUrlReady(coverUrl); +} diff --git a/src/coverartfetcher.h b/src/coverartfetcher.h new file mode 100644 index 0000000..84c0e5a --- /dev/null +++ b/src/coverartfetcher.h @@ -0,0 +1,28 @@ +#ifndef COVERARTFETCHER_H +#define COVERARTFETCHER_H + +#include +#include +#include + +class CoverArtFetcher : public QObject +{ + Q_OBJECT + +public: + explicit CoverArtFetcher(QObject *parent = nullptr); + + void fetch(const QString &artist, const QString &title); + +signals: + void coverUrlReady(const QString &url); + +private slots: + void onReplyFinished(); + +private: + QNetworkAccessManager *m_networkManager; + QNetworkReply *m_currentReply = nullptr; +}; + +#endif // COVERARTFETCHER_H diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..9f63661 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include + +#include "radiobackend.h" +#include "mprisadaptor.h" +#include "bearwavecontroladaptor.h" + + +int main(int argc, char *argv[]) +{ + QApplication::setApplicationName(QStringLiteral("BearWave")); + QApplication::setDesktopFileName(QStringLiteral("org.kde.bearwave.desktop")); + QApplication::setOrganizationName(QStringLiteral("BearWave")); + QApplication::setApplicationVersion(QStringLiteral("1.0.0")); + + QApplication app(argc, argv); + app.setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.bearwave"))); + app.setQuitOnLastWindowClosed(false); + + QQmlApplicationEngine engine; + + RadioBackend backend; + engine.rootContext()->setContextProperty("radioBackend", &backend); + + MprisRootAdaptor mprisRoot(&backend, &app); + MprisPlayerAdaptor mprisPlayer(&backend); + BearWaveControlAdaptor controlAdaptor(&backend); + Q_UNUSED(mprisRoot) + Q_UNUSED(mprisPlayer) + Q_UNUSED(controlAdaptor) + + QDBusConnection sessionBus = QDBusConnection::sessionBus(); + sessionBus.registerObject(QStringLiteral("/org/mpris/MediaPlayer2"), &backend, QDBusConnection::ExportAdaptors); + sessionBus.registerService(QStringLiteral("org.mpris.MediaPlayer2.bearwave")); + + const QUrl url(QStringLiteral("qrc:/Main.qml")); + QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, + &app, [&app, url](QObject *obj, const QUrl &objUrl) { + if (!obj && url == objUrl) { + qCritical("Failed to load QML file"); + app.exit(EXIT_FAILURE); + } + }, Qt::QueuedConnection); + + engine.load(url); + + if (engine.rootObjects().isEmpty()) { + return EXIT_FAILURE; + } + + return app.exec(); +} diff --git a/src/mprisadaptor.cpp b/src/mprisadaptor.cpp new file mode 100644 index 0000000..e6c3d9b --- /dev/null +++ b/src/mprisadaptor.cpp @@ -0,0 +1,320 @@ +#include "mprisadaptor.h" + +#include "radiobackend.h" +#include "bearplayer.h" + +#include +#include +#include +#include +#include + +namespace { +void emitPlayerPropertiesChanged(const QStringList &changedProps, const QVariantMap &changedValues) +{ + QDBusMessage signal = QDBusMessage::createSignal( + QStringLiteral("/org/mpris/MediaPlayer2"), + QStringLiteral("org.freedesktop.DBus.Properties"), + QStringLiteral("PropertiesChanged")); + + signal << QStringLiteral("org.mpris.MediaPlayer2.Player") + << changedValues + << QStringList(); + + QDBusConnection::sessionBus().send(signal); + Q_UNUSED(changedProps) +} +} + +MprisRootAdaptor::MprisRootAdaptor(RadioBackend *backend, QApplication *app, QObject *parent) + : QDBusAbstractAdaptor(backend) + , m_backend(backend) + , m_app(app) +{ +} + +bool MprisRootAdaptor::canQuit() const +{ + return true; +} + +bool MprisRootAdaptor::fullscreen() const +{ + return false; +} + +void MprisRootAdaptor::setFullscreen(bool value) +{ + Q_UNUSED(value) +} + +bool MprisRootAdaptor::canSetFullscreen() const +{ + return false; +} + +bool MprisRootAdaptor::canRaise() const +{ + return false; +} + +bool MprisRootAdaptor::hasTrackList() const +{ + return false; +} + +QString MprisRootAdaptor::identity() const +{ + return QStringLiteral("BearWave"); +} + +QString MprisRootAdaptor::desktopEntry() const +{ + return QStringLiteral("org.kde.bearwave"); +} + +QStringList MprisRootAdaptor::supportedUriSchemes() const +{ + return {QStringLiteral("http"), QStringLiteral("https")}; +} + +QStringList MprisRootAdaptor::supportedMimeTypes() const +{ + return { + QStringLiteral("audio/mpeg"), + QStringLiteral("audio/aac"), + QStringLiteral("audio/ogg"), + QStringLiteral("application/x-mpegURL"), + QStringLiteral("application/vnd.apple.mpegurl") + }; +} + +void MprisRootAdaptor::Raise() +{ +} + +void MprisRootAdaptor::Quit() +{ + if (m_app) { + m_app->quit(); + } +} + +MprisPlayerAdaptor::MprisPlayerAdaptor(RadioBackend *backend) + : QDBusAbstractAdaptor(backend) + , m_backend(backend) +{ + BearPlayer *p = player(); + if (!p) { + return; + } + + connect(p, &BearPlayer::playingChanged, this, [this]() { + QVariantMap changed; + changed.insert(QStringLiteral("PlaybackStatus"), playbackStatus()); + emitPlayerPropertiesChanged({QStringLiteral("PlaybackStatus")}, changed); + }); + + connect(p, &BearPlayer::volumeChanged, this, [this]() { + QVariantMap changed; + changed.insert(QStringLiteral("Volume"), volume()); + emitPlayerPropertiesChanged({QStringLiteral("Volume")}, changed); + }); + + connect(p, &BearPlayer::currentStationChanged, this, [this]() { + QVariantMap changed; + changed.insert(QStringLiteral("Metadata"), metadata()); + changed.insert(QStringLiteral("PlaybackStatus"), playbackStatus()); + changed.insert(QStringLiteral("CanGoNext"), canGoNext()); + changed.insert(QStringLiteral("CanGoPrevious"), canGoPrevious()); + emitPlayerPropertiesChanged({QStringLiteral("Metadata"), QStringLiteral("PlaybackStatus")}, changed); + }); + + connect(p, &BearPlayer::trackInfoChanged, this, [this]() { + QVariantMap changed; + changed.insert(QStringLiteral("Metadata"), metadata()); + emitPlayerPropertiesChanged({QStringLiteral("Metadata")}, changed); + }); +} + +BearPlayer *MprisPlayerAdaptor::player() const +{ + return m_backend ? m_backend->player() : nullptr; +} + +QString MprisPlayerAdaptor::playbackStatus() const +{ + BearPlayer *p = player(); + if (!p) { + return QStringLiteral("Stopped"); + } + if (p->currentStationName().isEmpty()) { + return QStringLiteral("Stopped"); + } + return p->playing() ? QStringLiteral("Playing") : QStringLiteral("Paused"); +} + +double MprisPlayerAdaptor::rate() const +{ + return 1.0; +} + +void MprisPlayerAdaptor::setRate(double value) +{ + Q_UNUSED(value) +} + +double MprisPlayerAdaptor::minimumRate() const +{ + return 1.0; +} + +double MprisPlayerAdaptor::maximumRate() const +{ + return 1.0; +} + +double MprisPlayerAdaptor::volume() const +{ + BearPlayer *p = player(); + if (!p) { + return 0.0; + } + return p->volume(); +} + +void MprisPlayerAdaptor::setVolume(double value) +{ + BearPlayer *p = player(); + if (!p) { + return; + } + p->setVolume(value); +} + +QVariantMap MprisPlayerAdaptor::metadata() const +{ + QVariantMap map; + BearPlayer *p = player(); + if (!p) { + return map; + } + + const QString station = p->currentStationName(); + const QString title = p->currentTrackTitle(); + const QString artist = p->currentTrackArtist(); + const QString coverUrl = p->currentCoverArtUrl(); + + map.insert(QStringLiteral("mpris:trackid"), QVariant::fromValue(QDBusObjectPath(QStringLiteral("/org/kde/bearwave/track/0")))); + if (!station.isEmpty()) { + map.insert(QStringLiteral("xesam:album"), station); + } + if (!title.isEmpty()) { + map.insert(QStringLiteral("xesam:title"), title); + } else if (!station.isEmpty()) { + map.insert(QStringLiteral("xesam:title"), station); + } + if (!artist.isEmpty()) { + map.insert(QStringLiteral("xesam:artist"), QStringList{artist}); + } + if (!coverUrl.isEmpty()) { + map.insert(QStringLiteral("mpris:artUrl"), coverUrl); + } else { + QString iconPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("icons/hicolor/256x256/apps/org.kde.bearwave.png")); + if (!iconPath.isEmpty()) { + map.insert(QStringLiteral("mpris:artUrl"), QStringLiteral("file://") + iconPath); + } + } + map.insert(QStringLiteral("mpris:length"), static_cast(0)); + + return map; +} + +qlonglong MprisPlayerAdaptor::position() const +{ + return 0; +} + +bool MprisPlayerAdaptor::canSeek() const +{ + return false; +} + +bool MprisPlayerAdaptor::canControl() const +{ + return true; +} + +bool MprisPlayerAdaptor::canPlay() const +{ + return true; +} + +bool MprisPlayerAdaptor::canPause() const +{ + return true; +} + +bool MprisPlayerAdaptor::canGoNext() const +{ + return m_backend && m_backend->hasNextStation(); +} + +bool MprisPlayerAdaptor::canGoPrevious() const +{ + return m_backend && m_backend->hasPreviousStation(); +} + +void MprisPlayerAdaptor::Play() +{ + BearPlayer *p = player(); + if (!p) { + return; + } + if (!p->playing()) { + p->togglePlayPause(); + } +} + +void MprisPlayerAdaptor::Pause() +{ + BearPlayer *p = player(); + if (!p) { + return; + } + if (p->playing()) { + p->togglePlayPause(); + } +} + +void MprisPlayerAdaptor::PlayPause() +{ + BearPlayer *p = player(); + if (!p) { + return; + } + p->togglePlayPause(); +} + +void MprisPlayerAdaptor::Stop() +{ + BearPlayer *p = player(); + if (!p) { + return; + } + p->stop(); +} + +void MprisPlayerAdaptor::Next() +{ + if (m_backend) { + m_backend->playNextStation(); + } +} + +void MprisPlayerAdaptor::Previous() +{ + if (m_backend) { + m_backend->playPreviousStation(); + } +} diff --git a/src/mprisadaptor.h b/src/mprisadaptor.h new file mode 100644 index 0000000..bd3ffb0 --- /dev/null +++ b/src/mprisadaptor.h @@ -0,0 +1,104 @@ +#ifndef MPRISADAPTOR_H +#define MPRISADAPTOR_H + +#include +#include +#include +#include +#include + +class QApplication; +class RadioBackend; +class BearPlayer; + +class MprisRootAdaptor : public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2") + + Q_PROPERTY(bool CanQuit READ canQuit CONSTANT) + Q_PROPERTY(bool Fullscreen READ fullscreen WRITE setFullscreen) + Q_PROPERTY(bool CanSetFullscreen READ canSetFullscreen CONSTANT) + Q_PROPERTY(bool CanRaise READ canRaise CONSTANT) + Q_PROPERTY(bool HasTrackList READ hasTrackList CONSTANT) + Q_PROPERTY(QString Identity READ identity CONSTANT) + Q_PROPERTY(QString DesktopEntry READ desktopEntry CONSTANT) + Q_PROPERTY(QStringList SupportedUriSchemes READ supportedUriSchemes CONSTANT) + Q_PROPERTY(QStringList SupportedMimeTypes READ supportedMimeTypes CONSTANT) + +public: + explicit MprisRootAdaptor(RadioBackend *backend, QApplication *app, QObject *parent = nullptr); + + bool canQuit() const; + bool fullscreen() const; + void setFullscreen(bool value); + bool canSetFullscreen() const; + bool canRaise() const; + bool hasTrackList() const; + QString identity() const; + QString desktopEntry() const; + QStringList supportedUriSchemes() const; + QStringList supportedMimeTypes() const; + +public slots: + void Raise(); + void Quit(); + +private: + RadioBackend *m_backend; + QApplication *m_app; +}; + +class MprisPlayerAdaptor : public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2.Player") + + Q_PROPERTY(QString PlaybackStatus READ playbackStatus) + Q_PROPERTY(double Rate READ rate WRITE setRate) + Q_PROPERTY(double MinimumRate READ minimumRate CONSTANT) + Q_PROPERTY(double MaximumRate READ maximumRate CONSTANT) + Q_PROPERTY(double Volume READ volume WRITE setVolume) + Q_PROPERTY(QVariantMap Metadata READ metadata) + Q_PROPERTY(qlonglong Position READ position) + Q_PROPERTY(bool CanSeek READ canSeek CONSTANT) + Q_PROPERTY(bool CanControl READ canControl CONSTANT) + Q_PROPERTY(bool CanPlay READ canPlay CONSTANT) + Q_PROPERTY(bool CanPause READ canPause CONSTANT) + Q_PROPERTY(bool CanGoNext READ canGoNext CONSTANT) + Q_PROPERTY(bool CanGoPrevious READ canGoPrevious CONSTANT) + +public: + explicit MprisPlayerAdaptor(RadioBackend *backend); + + QString playbackStatus() const; + double rate() const; + void setRate(double value); + double minimumRate() const; + double maximumRate() const; + double volume() const; + void setVolume(double value); + QVariantMap metadata() const; + qlonglong position() const; + bool canSeek() const; + bool canControl() const; + bool canPlay() const; + bool canPause() const; + bool canGoNext() const; + bool canGoPrevious() const; + +public slots: + void Play(); + void Pause(); + void PlayPause(); + void Stop(); + void Next(); + void Previous(); + +private: + BearPlayer *player() const; + + RadioBackend *m_backend; +}; + +#endif diff --git a/src/qml.qrc b/src/qml.qrc new file mode 100644 index 0000000..34f8516 --- /dev/null +++ b/src/qml.qrc @@ -0,0 +1,9 @@ + + + qml/Main.qml + ../bearwave.png + ../globe.svg + ../github.svg + ../linkedin.svg + + diff --git a/src/qml/Main.qml b/src/qml/Main.qml new file mode 100644 index 0000000..b92251b --- /dev/null +++ b/src/qml/Main.qml @@ -0,0 +1,938 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import Qt.labs.platform 1.1 as Platform + +ApplicationWindow { + id: root + title: "BearWave" + width: 980 + height: 700 + minimumWidth: 520 + minimumHeight: 460 + visible: true + + onClosing: function(close) { + close.accepted = false + root.hide() + } + + Platform.SystemTrayIcon { + id: systray + visible: true + icon.name: "multimedia-player" + tooltip: "BearWave" + + menu: Platform.Menu { + Platform.MenuItem { + text: backend && backend.player && backend.player.playing ? "Pause" : "Play" + onTriggered: { + if (backend && backend.player) { + backend.player.togglePlayPause() + } + } + } + Platform.MenuItem { + text: root.visible ? "Verstecken" : "Zeigen" + onTriggered: { + if (root.visible) { + root.hide() + } else { + root.show() + root.raise() + root.requestActivate() + } + } + } + Platform.MenuSeparator {} + Platform.MenuItem { + text: "Beenden" + onTriggered: Qt.quit() + } + } + + onActivated: function(reason) { + if (reason === Platform.SystemTrayIcon.Trigger) { + if (root.visible) { + root.hide() + } else { + root.show() + root.raise() + root.requestActivate() + } + } + } + } + + property var currentPage: "top" + property var backend: (typeof radioBackend !== "undefined" ? radioBackend : null) + property bool compactMode: width < 780 + property real contentOpacity: 1.0 + property string activeQuickFilter: "" + + readonly property color bgA: "#0f141b" + readonly property color bgB: "#131b25" + readonly property color panel: "#182433" + readonly property color card: "#1b2a3d" + readonly property color cardHover: "#223654" + readonly property color cardBorder: "#2d4566" + readonly property color accent: "#2bb0ff" + readonly property color textMain: "#eaf1fb" + readonly property color textMuted: "#9eb1c9" + readonly property color warn: "#ff8b8b" + + function toast(message) { + toastLabel.text = message + toastPopup.open() + } + + function activeModel() { + if (!backend) { + return [] + } + return currentPage === "favorites" ? backend.favoriteStations : backend.stations + } + + onCurrentPageChanged: { + contentOpacity = 0.85 + contentFadeRestart.restart() + } + + Shortcut { + sequence: "Space" + onActivated: { + if (backend && backend.player) { + backend.player.togglePlayPause() + } + } + } + + Shortcut { + sequence: "Ctrl+F" + onActivated: searchField.forceActiveFocus() + } + + Rectangle { + anchors.fill: parent + gradient: Gradient { + GradientStop { position: 0.0; color: bgA } + GradientStop { position: 1.0; color: bgB } + } + } + + ColumnLayout { + anchors.fill: parent + anchors.margins: 12 + spacing: 10 + + Rectangle { + Layout.fillWidth: true + Layout.preferredHeight: compactMode ? 208 : 176 + radius: 12 + color: panel + border.color: cardBorder + + ColumnLayout { + anchors.fill: parent + anchors.margins: 10 + spacing: 8 + + RowLayout { + Layout.fillWidth: true + spacing: 8 + + Label { + text: "BearWave" + color: textMain + font.pixelSize: compactMode ? 18 : 22 + font.bold: true + } + + Rectangle { + Layout.preferredWidth: 1 + Layout.fillHeight: true + color: cardBorder + opacity: 0.6 + } + + Button { + text: "Top" + highlighted: currentPage === "top" + onClicked: { + if (!backend) return + currentPage = "top" + activeQuickFilter = "" + backend.loadTopStations() + } + } + + Button { + text: "DE" + highlighted: currentPage === "german" + onClicked: { + if (!backend) return + currentPage = "german" + activeQuickFilter = "" + backend.loadGermanStations() + } + } + + Button { + text: "NL" + highlighted: currentPage === "dutch" + onClicked: { + if (!backend) return + currentPage = "dutch" + activeQuickFilter = "" + backend.loadDutchStations() + } + } + + Button { + text: "Favoriten" + highlighted: currentPage === "favorites" + onClicked: { + currentPage = "favorites" + activeQuickFilter = "" + } + } + + Item { Layout.fillWidth: true } + + Button { + text: compactMode ? "+" : "Manuell +" + onClicked: addDialog.open() + } + + Button { + text: "About" + onClicked: aboutDialog.open() + } + + Button { + visible: backend && backend.canResumeLastStation + text: compactMode ? "↺" : "Resume" + onClicked: { + if (backend) { + backend.resumeLastStation() + } + } + } + } + + RowLayout { + Layout.fillWidth: true + spacing: 8 + + TextField { + id: searchField + Layout.fillWidth: true + placeholderText: "Sender suchen (Name, Genre, Land)" + onTextChanged: { + if (backend) { + backend.filterQuery = text + } + } + onAccepted: { + if (text.length < 2 || !backend) return + currentPage = "search" + backend.searchStations(text) + } + } + + Button { + text: "Suche" + highlighted: true + onClicked: { + if (searchField.text.length < 2 || !backend) return + currentPage = "search" + backend.searchStations(searchField.text) + } + } + + Button { + text: compactMode ? "A-Z" : "Sort A-Z" + onClicked: { + if (backend && currentPage !== "favorites") { + backend.sortStations("name") + } + } + } + + Button { + text: compactMode ? "kb" : "Sort Bitrate" + onClicked: { + if (backend && currentPage !== "favorites") { + backend.sortStations("bitrate") + } + } + } + + Button { + text: compactMode ? "❤" : "Sort Votes" + onClicked: { + if (backend && currentPage !== "favorites") { + backend.sortStations("votes") + } + } + } + } + + Label { + Layout.fillWidth: true + text: "Tipp: Du bist nicht auf DE/NL begrenzt - suche nach Ländern, Genres oder Sendernamen weltweit." + color: textMuted + font.pixelSize: 11 + elide: Text.ElideRight + } + + RowLayout { + Layout.fillWidth: true + spacing: 6 + + Label { + text: "Genre:" + color: textMuted + font.pixelSize: 11 + } + + Button { + text: "Rock" + highlighted: activeQuickFilter === "tag:rock" + onClicked: { + if (!backend) return + currentPage = "genre-rock" + activeQuickFilter = "tag:rock" + backend.loadByTag("rock") + } + } + + Button { + text: "News" + highlighted: activeQuickFilter === "tag:news" + onClicked: { + if (!backend) return + currentPage = "genre-news" + activeQuickFilter = "tag:news" + backend.loadByTag("news") + } + } + + Button { + text: "Jazz" + highlighted: activeQuickFilter === "tag:jazz" + onClicked: { + if (!backend) return + currentPage = "genre-jazz" + activeQuickFilter = "tag:jazz" + backend.loadByTag("jazz") + } + } + + Item { Layout.preferredWidth: 10 } + + Label { + text: "Land:" + color: textMuted + font.pixelSize: 11 + } + + Button { + text: "US" + highlighted: activeQuickFilter === "cc:US" + onClicked: { + if (!backend) return + currentPage = "country-us" + activeQuickFilter = "cc:US" + backend.loadByCountryCode("US") + } + } + + Button { + text: "UK" + highlighted: activeQuickFilter === "cc:GB" + onClicked: { + if (!backend) return + currentPage = "country-gb" + activeQuickFilter = "cc:GB" + backend.loadByCountryCode("GB") + } + } + + Button { + text: "FR" + highlighted: activeQuickFilter === "cc:FR" + onClicked: { + if (!backend) return + currentPage = "country-fr" + activeQuickFilter = "cc:FR" + backend.loadByCountryCode("FR") + } + } + + Button { + text: "WORLD" + highlighted: activeQuickFilter === "world" + onClicked: { + if (!backend) return + currentPage = "world" + activeQuickFilter = "world" + backend.loadWorldStations() + } + } + + Item { Layout.fillWidth: true } + } + + Label { + Layout.fillWidth: true + visible: backend && backend.lastError.length > 0 + text: backend ? ("Fehler: " + backend.lastError) : "" + color: warn + elide: Text.ElideRight + font.pixelSize: 12 + } + } + } + + Rectangle { + Layout.fillWidth: true + Layout.fillHeight: true + radius: 12 + color: panel + border.color: cardBorder + clip: true + opacity: contentOpacity + + Behavior on opacity { + NumberAnimation { duration: 180; easing.type: Easing.OutCubic } + } + + ScrollView { + id: stationScrollView + anchors.fill: parent + anchors.margins: 10 + clip: true + ScrollBar.vertical.policy: ScrollBar.AlwaysOn + + ListView { + id: stationList + width: stationScrollView.availableWidth + spacing: 8 + model: activeModel() + visible: count > 0 + + delegate: Rectangle { + id: stationCard + required property int index + required property var modelData + width: stationScrollView.availableWidth + height: compactMode ? 72 : 78 + radius: 10 + color: cardMouse.containsMouse ? cardHover : card + border.color: cardBorder + + MouseArea { + id: cardMouse + anchors.fill: parent + hoverEnabled: true + acceptedButtons: Qt.LeftButton + onClicked: { + if (!backend) return + if (currentPage === "favorites") { + backend.playFavoriteStation(index) + } else { + backend.playStation(index) + } + } + } + + RowLayout { + anchors.fill: parent + anchors.margins: 10 + spacing: 10 + + Rectangle { + Layout.preferredWidth: 44 + Layout.preferredHeight: 44 + radius: 8 + color: "#123154" + border.color: accent + + Image { + anchors.fill: parent + anchors.margins: 3 + source: (stationCard.modelData.favicon && stationCard.modelData.favicon.startsWith("https://")) + ? stationCard.modelData.favicon + : "" + fillMode: Image.PreserveAspectFit + asynchronous: true + cache: true + visible: source !== "" && status === Image.Ready + } + + Label { + anchors.centerIn: parent + text: "FM" + color: "#d8ecff" + font.bold: true + visible: !parent.children[0].visible + } + } + + ColumnLayout { + Layout.fillWidth: true + spacing: 2 + + Label { + Layout.fillWidth: true + text: stationCard.modelData.name + color: textMain + font.bold: true + font.pixelSize: compactMode ? 13 : 14 + elide: Text.ElideRight + } + + Label { + Layout.fillWidth: true + text: stationCard.modelData.country + " • " + + (stationCard.modelData.bitrate > 0 ? stationCard.modelData.bitrate + " kbps" : "Stream") + color: textMuted + font.pixelSize: 11 + elide: Text.ElideRight + } + } + + Button { + Layout.preferredWidth: compactMode ? 34 : 40 + Layout.preferredHeight: 40 + text: stationCard.modelData.isFavorite ? "★" : "☆" + onClicked: { + if (!backend) return + backend.toggleFavoriteById(stationCard.modelData.uuid, stationCard.modelData.urlResolved) + toast(stationCard.modelData.isFavorite ? "Aus Favoriten entfernt" : "Zu Favoriten hinzugefügt") + } + } + + Button { + Layout.preferredWidth: compactMode ? 34 : 40 + Layout.preferredHeight: 40 + text: "▶" + onClicked: { + if (!backend) return + if (currentPage === "favorites") { + backend.playFavoriteStation(index) + } else { + backend.playStation(index) + } + } + } + } + } + } + } + + Column { + anchors.centerIn: parent + spacing: 8 + visible: stationList.count === 0 + + Label { + text: "Noch keine Sender geladen" + color: textMain + font.bold: true + } + + Label { + text: "Lade DE/NL oder nutze die Suche" + color: textMuted + } + } + } + + Rectangle { + Layout.fillWidth: true + Layout.preferredHeight: 108 + radius: 12 + color: panel + border.color: cardBorder + + RowLayout { + anchors.fill: parent + anchors.margins: 10 + spacing: 12 + + Rectangle { + Layout.preferredWidth: 88 + Layout.preferredHeight: 88 + radius: 8 + color: "#182637" + clip: true + border.color: cardBorder + + Image { + id: coverImage + anchors.fill: parent + source: backend && backend.player && backend.player.currentCoverArtUrl ? backend.player.currentCoverArtUrl : "qrc:/bearwave.png" + fillMode: backend && backend.player && backend.player.currentCoverArtUrl ? Image.PreserveAspectCrop : Image.PreserveAspectFit + smooth: true + asynchronous: true + anchors.margins: backend && backend.player && backend.player.currentCoverArtUrl ? 0 : 16 + } + } + + ColumnLayout { + Layout.fillWidth: true + Layout.fillHeight: true + spacing: 6 + + Label { + Layout.fillWidth: true + text: backend && backend.player ? (backend.player.currentStationName || "Kein Sender ausgewählt") : "Kein Sender ausgewählt" + color: textMain + font.pixelSize: 16 + font.bold: true + elide: Text.ElideRight + } + + Label { + Layout.fillWidth: true + text: backend && backend.player && backend.player.currentNowPlaying.length > 0 + ? ("Jetzt läuft: " + backend.player.currentNowPlaying) + : "Jetzt läuft: Keine Titelinfo" + color: textMuted + font.pixelSize: 12 + elide: Text.ElideRight + } + + RowLayout { + Layout.fillWidth: true + spacing: 8 + + Button { + text: "⏮" + Layout.preferredWidth: 44 + enabled: backend ? backend.hasPreviousStation() : false + onClicked: { + if (backend) { + backend.playPreviousStation() + } + } + } + + Button { + text: backend && backend.player && backend.player.playing ? "⏸" : "▶" + Layout.preferredWidth: 44 + onClicked: { + if (backend && backend.player) { + backend.player.togglePlayPause() + } + } + } + + Button { + text: "⏹" + Layout.preferredWidth: 44 + onClicked: { + if (backend && backend.player) { + backend.player.stop() + } + } + } + + Button { + text: "⏭" + Layout.preferredWidth: 44 + enabled: backend ? backend.hasNextStation() : false + onClicked: { + if (backend) { + backend.playNextStation() + } + } + } + + Label { + text: "Lautstärke" + color: textMuted + } + + Slider { + Layout.fillWidth: true + from: 0 + to: 1 + value: backend && backend.player ? backend.player.volume : 0.5 + onMoved: { + if (backend && backend.player) { + backend.player.setVolume(value) + } + } + } + } + } + } + } + } + + Rectangle { + visible: backend && backend.loading + anchors.fill: parent + color: "#7f0b121a" + z: 20 + + Rectangle { + anchors.centerIn: parent + width: 210 + height: 110 + radius: 12 + color: panel + border.color: cardBorder + + Column { + anchors.centerIn: parent + spacing: 10 + + BusyIndicator { + running: true + width: 36 + height: 36 + anchors.horizontalCenter: parent.horizontalCenter + } + + Label { + text: "Lade Sender..." + color: textMain + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + } + + Component.onCompleted: { + if (backend) { + backend.loadTopStations() + } + } + + Dialog { + id: addDialog + title: "Sender manuell hinzufügen" + modal: true + anchors.centerIn: parent + width: compactMode ? 320 : 420 + standardButtons: Dialog.Ok | Dialog.Cancel + + contentItem: ColumnLayout { + spacing: 8 + TextField { id: manualName; Layout.fillWidth: true; placeholderText: "Name" } + TextField { id: manualUrl; Layout.fillWidth: true; placeholderText: "Stream URL (http/https)" } + TextField { id: manualCountry; Layout.fillWidth: true; placeholderText: "Land (optional)" } + } + + onAccepted: { + if (backend) { + backend.addManualStation(manualName.text, manualUrl.text, manualCountry.text) + toast("Sender hinzugefügt") + } + manualName.text = "" + manualUrl.text = "" + manualCountry.text = "" + } + } + + Dialog { + id: aboutDialog + modal: true + anchors.centerIn: Overlay.overlay + width: compactMode ? 360 : 520 + height: compactMode ? 560 : 680 + standardButtons: Dialog.Ok + + contentItem: ColumnLayout { + spacing: 16 + + // --- HEADER --- + ColumnLayout { + Layout.alignment: Qt.AlignHCenter + spacing: 6 + + Image { + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: 72 + Layout.preferredHeight: 72 + sourceSize.width: 72 + sourceSize.height: 72 + source: "qrc:/bearwave.png" + fillMode: Image.PreserveAspectFit + smooth: true + } + + Label { + Layout.alignment: Qt.AlignHCenter + text: "BearWave" + color: textMain + font.bold: true + font.pixelSize: 26 + } + + Label { + Layout.alignment: Qt.AlignHCenter + text: "Internet Radio Player for KDE" + color: textMuted + font.pixelSize: 14 + } + } + + // --- CREDITS & LINKS --- + ColumnLayout { + Layout.alignment: Qt.AlignHCenter + spacing: 8 + Layout.topMargin: 8 + Layout.bottomMargin: 8 + + Label { + Layout.alignment: Qt.AlignHCenter + text: "Autor: Sebastian Palencsár" + color: textMain + font.bold: true + font.pixelSize: 14 + } + + RowLayout { + Layout.alignment: Qt.AlignHCenter + spacing: 16 + + ToolButton { + Layout.preferredWidth: 40 + Layout.preferredHeight: 40 + icon.source: "qrc:/globe.svg" + icon.width: 19 + icon.height: 19 + onClicked: Qt.openUrlExternally("https://palencsar.pro") + ToolTip.visible: hovered + ToolTip.text: "Website öffnen" + background: Rectangle { + radius: 20 + color: parent.hovered ? "#274261" : "#1f3147" + border.color: cardBorder + border.width: 1 + } + } + + ToolButton { + Layout.preferredWidth: 40 + Layout.preferredHeight: 40 + icon.source: "qrc:/github.svg" + icon.width: 19 + icon.height: 19 + onClicked: Qt.openUrlExternally("https://github.com/spalencsar") + ToolTip.visible: hovered + ToolTip.text: "GitHub öffnen" + background: Rectangle { + radius: 20 + color: parent.hovered ? "#274261" : "#1f3147" + border.color: cardBorder + border.width: 1 + } + } + + ToolButton { + Layout.preferredWidth: 40 + Layout.preferredHeight: 40 + icon.source: "qrc:/linkedin.svg" + icon.width: 19 + icon.height: 19 + onClicked: Qt.openUrlExternally("https://www.linkedin.com/in/spalencsar/") + ToolTip.visible: hovered + ToolTip.text: "LinkedIn öffnen" + background: Rectangle { + radius: 20 + color: parent.hovered ? "#274261" : "#1f3147" + border.color: cardBorder + border.width: 1 + } + } + } + } + + // --- LICENSE --- + ColumnLayout { + Layout.fillWidth: true + Layout.fillHeight: true + spacing: 8 + + RowLayout { + Layout.fillWidth: true + Label { + Layout.fillWidth: true + text: "MIT License" + color: textMain + font.bold: true + } + Label { + text: "Copyright (c) 2026" + color: textMuted + font.pixelSize: 11 + } + } + + Rectangle { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.minimumHeight: 140 + radius: 8 + color: "#101a26" + border.color: cardBorder + + ScrollView { + id: licenseScroll + anchors.fill: parent + anchors.margins: 10 + clip: true + ScrollBar.vertical.policy: ScrollBar.AlwaysOn + + Label { + width: licenseScroll.availableWidth + color: textMain + font.pixelSize: 11 + wrapMode: Text.WordWrap + text: "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + } + } + } + } + } + } + + Popup { + id: toastPopup + x: (root.width - width) / 2 + y: root.height - height - 20 + padding: 10 + closePolicy: Popup.NoAutoClose + background: Rectangle { + radius: 10 + color: "#24364e" + border.color: accent + } + + contentItem: Label { + id: toastLabel + color: textMain + font.pixelSize: 12 + } + + Timer { + interval: 1400 + running: toastPopup.visible + repeat: false + onTriggered: toastPopup.close() + } + } + + Timer { + id: contentFadeRestart + interval: 120 + repeat: false + onTriggered: contentOpacity = 1.0 + } +} diff --git a/src/radiobackend.cpp b/src/radiobackend.cpp new file mode 100644 index 0000000..256750a --- /dev/null +++ b/src/radiobackend.cpp @@ -0,0 +1,668 @@ +#include "radiobackend.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { +constexpr int kRecentLimit = 20; + +QString appConfigDir() +{ + return QDir::homePath() + QStringLiteral("/.config/bearwave"); +} +} + +RadioBackend::RadioBackend(QObject *parent) + : QObject(parent) +{ + m_radioBrowser = new RadioBrowser(this); + m_player = new BearPlayer(this); + setupConnections(); + loadFavorites(); + loadState(); +} + +QList RadioBackend::stations() const +{ + QList list; + for (RadioStation *s : m_filteredStations) { + list.append(s); + } + return list; +} + +QList RadioBackend::favoriteStations() const +{ + QList list; + for (RadioStation *s : m_favorites) { + list.append(s); + } + return list; +} + +void RadioBackend::setupConnections() +{ + connect(m_radioBrowser, &RadioBrowser::stationsLoaded, + this, &RadioBackend::onStationsLoaded); + connect(m_radioBrowser, &RadioBrowser::error, + this, [this](const QString &error) { + qWarning() << "RadioBrowser error:" << error; + setLastError(error); + setLoading(false); + }); + + connect(m_player, &BearPlayer::currentStationChanged, this, [this](const QString &name) { + if (!name.isEmpty()) { + m_lastStationName = name; + emit resumeStateChanged(); + saveState(); + } + }); + + connect(m_player, &BearPlayer::volumeChanged, this, [this]() { + saveState(); + }); +} + +void RadioBackend::onStationsLoaded(const QList &stations) +{ + qDeleteAll(m_stations); + m_stations.clear(); + m_filteredStations.clear(); + + m_stations = stations; + for (RadioStation *s : m_stations) { + s->setParent(this); + for (RadioStation *f : m_favorites) { + if ((!s->uuid().isEmpty() && s->uuid() == f->uuid()) || + (s->uuid().isEmpty() && s->urlResolved() == f->urlResolved())) { + s->setIsFavorite(true); + break; + } + } + } + std::sort(m_stations.begin(), m_stations.end(), [](RadioStation *a, RadioStation *b) { + return QString::localeAwareCompare(a->name(), b->name()) < 0; + }); + + rebuildFilteredStations(false); + setLastError(QString()); + setLoading(false); + qDebug() << "Loaded" << stations.size() << "stations"; +} + +void RadioBackend::loadGermanStations() +{ + setLoading(true); + m_radioBrowser->getGermanStations(); +} + +void RadioBackend::loadDutchStations() +{ + setLoading(true); + m_radioBrowser->getDutchStations(); +} + +void RadioBackend::loadTopStations() +{ + setLoading(true); + m_radioBrowser->getTopStations(100); +} + +void RadioBackend::loadWorldStations() +{ + setLoading(true); + m_radioBrowser->getWorldStations(200); +} + +void RadioBackend::loadByTag(const QString &tag) +{ + if (tag.trimmed().isEmpty()) { + return; + } + setLoading(true); + m_radioBrowser->getByTag(tag.trimmed()); +} + +void RadioBackend::loadByCountryCode(const QString &countryCode) +{ + if (countryCode.trimmed().isEmpty()) { + return; + } + setLoading(true); + m_radioBrowser->getByCountry(countryCode.trimmed().toUpper()); +} + +void RadioBackend::searchStations(const QString &query) +{ + if (query.isEmpty()) { + return; + } + setLoading(true); + m_radioBrowser->search(query); +} + +void RadioBackend::playStation(int index) +{ + if (!stationForVisibleIndex(index)) { + return; + } + + m_currentFromFavorites = false; + m_currentIndex = index; + + playCurrentSelection(); +} + +void RadioBackend::playFavoriteStation(int index) +{ + if (index < 0 || index >= m_favorites.size()) { + return; + } + + m_currentFromFavorites = true; + m_currentIndex = index; + + playCurrentSelection(); +} + +void RadioBackend::playNextStation() +{ + const QList list = currentList(); + if (list.isEmpty()) { + return; + } + if (m_currentIndex < 0) { + m_currentIndex = 0; + } else if (m_currentIndex < list.size() - 1) { + ++m_currentIndex; + } + playCurrentSelection(); +} + +void RadioBackend::playPreviousStation() +{ + const QList list = currentList(); + if (list.isEmpty()) { + return; + } + if (m_currentIndex < 0) { + m_currentIndex = 0; + } else if (m_currentIndex > 0) { + --m_currentIndex; + } + playCurrentSelection(); +} + +bool RadioBackend::hasNextStation() const +{ + const QList list = currentList(); + if (list.isEmpty()) { + return false; + } + if (m_currentIndex < 0) { + return true; + } + return m_currentIndex < list.size() - 1; +} + +bool RadioBackend::hasPreviousStation() const +{ + const QList list = currentList(); + if (list.isEmpty()) { + return false; + } + return m_currentIndex > 0; +} + +void RadioBackend::toggleFavorite(int index) +{ + if (index < 0 || index >= m_stations.size()) { + return; + } + + RadioStation *station = m_stations[index]; + for (int i = 0; i < m_favorites.size(); ++i) { + if ((!station->uuid().isEmpty() && m_favorites[i]->uuid() == station->uuid()) || + (station->uuid().isEmpty() && m_favorites[i]->urlResolved() == station->urlResolved())) { + m_favorites.removeAt(i); + station->setIsFavorite(false); + saveFavorites(); + emit favoritesChanged(); + emit stationsChanged(); + return; + } + } + + RadioStation *copy = new RadioStation(this); + copy->setUuid(station->uuid()); + copy->setName(station->name()); + copy->setUrl(station->url()); + copy->setUrlResolved(station->urlResolved()); + copy->setHomepage(station->homepage()); + copy->setFavicon(station->favicon()); + copy->setCountry(station->country()); + copy->setTags(station->tags()); + copy->setCodec(station->codec()); + copy->setBitrate(station->bitrate()); + copy->setVotes(station->votes()); + copy->setIsOnline(station->isOnline()); + copy->setIsFavorite(true); + m_favorites.append(copy); + std::sort(m_favorites.begin(), m_favorites.end(), [](RadioStation *a, RadioStation *b) { + return QString::localeAwareCompare(a->name(), b->name()) < 0; + }); + station->setIsFavorite(true); + + saveFavorites(); + emit favoritesChanged(); + emit stationsChanged(); + emit listsChanged(); +} + +void RadioBackend::toggleFavoriteById(const QString &uuid, const QString &urlResolved) +{ + int stationIndex = -1; + for (int i = 0; i < m_stations.size(); ++i) { + if ((!uuid.isEmpty() && m_stations[i]->uuid() == uuid) || + (uuid.isEmpty() && !urlResolved.isEmpty() && m_stations[i]->urlResolved() == urlResolved)) { + stationIndex = i; + break; + } + } + + if (stationIndex >= 0) { + toggleFavorite(stationIndex); + return; + } + + for (int i = 0; i < m_favorites.size(); ++i) { + if ((!uuid.isEmpty() && m_favorites[i]->uuid() == uuid) || + (uuid.isEmpty() && !urlResolved.isEmpty() && m_favorites[i]->urlResolved() == urlResolved)) { + m_favorites.removeAt(i); + for (RadioStation *s : m_stations) { + if ((!uuid.isEmpty() && s->uuid() == uuid) || + (uuid.isEmpty() && !urlResolved.isEmpty() && s->urlResolved() == urlResolved)) { + s->setIsFavorite(false); + } + } + saveFavorites(); + emit favoritesChanged(); + emit stationsChanged(); + emit listsChanged(); + return; + } + } +} + +void RadioBackend::addManualStation(const QString &name, const QString &url, const QString &country) +{ + if (name.trimmed().isEmpty() || url.trimmed().isEmpty()) { + return; + } + + RadioStation *station = new RadioStation(this); + station->setName(name.trimmed()); + station->setUrl(url.trimmed()); + station->setUrlResolved(url.trimmed()); + station->setCountry(country.trimmed().isEmpty() ? QStringLiteral("Manual") : country.trimmed()); + station->setCodec(QStringLiteral("unknown")); + station->setBitrate(0); + station->setVotes(0); + station->setIsOnline(true); + + m_stations.prepend(station); + rebuildFilteredStations(false); +} + +void RadioBackend::sortStations(const QString &mode) +{ + if (mode == QStringLiteral("name")) { + std::sort(m_stations.begin(), m_stations.end(), [](RadioStation *a, RadioStation *b) { + return QString::localeAwareCompare(a->name(), b->name()) < 0; + }); + } else if (mode == QStringLiteral("bitrate")) { + std::sort(m_stations.begin(), m_stations.end(), [](RadioStation *a, RadioStation *b) { + return a->bitrate() > b->bitrate(); + }); + } else if (mode == QStringLiteral("votes")) { + std::sort(m_stations.begin(), m_stations.end(), [](RadioStation *a, RadioStation *b) { + return a->votes() > b->votes(); + }); + } + rebuildFilteredStations(false); +} + +QVariantList RadioBackend::getRecentStations() const +{ + return m_recentStations; +} + +QVariantList RadioBackend::getFavoriteStations() const +{ + QVariantList result; + for (RadioStation *station : m_favorites) { + result.push_back(toVariantMap(station)); + } + return result; +} + +bool RadioBackend::playRecentByUuid(const QString &uuid, const QString &urlResolved) +{ + for (RadioStation *station : m_stations) { + if (matchesStation(station, uuid, urlResolved)) { + const QString url = station->urlResolved().isEmpty() ? station->url() : station->urlResolved(); + m_lastStationName = station->name(); + m_lastStationUrl = url; + emit resumeStateChanged(); + recordRecentStation(toVariantMap(station)); + saveState(); + m_player->playUrl(url, station->name()); + return true; + } + } + + for (const QVariant &entry : m_recentStations) { + const QVariantMap station = entry.toMap(); + if ((!uuid.isEmpty() && station.value(QStringLiteral("uuid")).toString() == uuid) || + (uuid.isEmpty() && !urlResolved.isEmpty() && station.value(QStringLiteral("urlResolved")).toString() == urlResolved)) { + const QString url = station.value(QStringLiteral("urlResolved")).toString(); + if (url.isEmpty()) { + return false; + } + m_lastStationName = station.value(QStringLiteral("name")).toString(); + m_lastStationUrl = url; + emit resumeStateChanged(); + recordRecentStation(station); + saveState(); + m_player->playUrl(url, m_lastStationName); + return true; + } + } + + return false; +} + +bool RadioBackend::playFavoriteByUuid(const QString &uuid, const QString &urlResolved) +{ + for (int i = 0; i < m_favorites.size(); ++i) { + if (matchesStation(m_favorites[i], uuid, urlResolved)) { + playFavoriteStation(i); + return true; + } + } + return false; +} + +void RadioBackend::resumeLastStation() +{ + if (m_lastStationUrl.isEmpty()) { + return; + } + QVariantMap station; + station.insert(QStringLiteral("name"), m_lastStationName.isEmpty() ? QStringLiteral("Zuletzt gehoert") : m_lastStationName); + station.insert(QStringLiteral("urlResolved"), m_lastStationUrl); + recordRecentStation(station); + saveState(); + m_player->playUrl(m_lastStationUrl, m_lastStationName.isEmpty() ? QStringLiteral("Zuletzt gehört") : m_lastStationName); +} + +void RadioBackend::loadFavorites() +{ + const QString configDir = appConfigDir(); + QDir().mkpath(configDir); + QFile file(configDir + "/favorites.json"); + if (!file.open(QIODevice::ReadOnly)) { + return; + } + + const QJsonDocument doc = QJsonDocument::fromJson(file.readAll()); + if (!doc.isArray()) { + return; + } + + for (const QJsonValue &v : doc.array()) { + if (!v.isObject()) { + continue; + } + QJsonObject o = v.toObject(); + RadioStation *s = new RadioStation(this); + s->setUuid(o.value("uuid").toString()); + s->setName(o.value("name").toString()); + s->setUrl(o.value("url").toString()); + s->setUrlResolved(o.value("urlResolved").toString()); + s->setCountry(o.value("country").toString()); + s->setIsFavorite(true); + m_favorites.append(s); + } + std::sort(m_favorites.begin(), m_favorites.end(), [](RadioStation *a, RadioStation *b) { + return QString::localeAwareCompare(a->name(), b->name()) < 0; + }); +} + +void RadioBackend::saveFavorites() const +{ + const QString configDir = appConfigDir(); + QDir().mkpath(configDir); + QFile file(configDir + "/favorites.json"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + return; + } + + QJsonArray arr; + for (RadioStation *s : m_favorites) { + QJsonObject o; + o.insert("uuid", s->uuid()); + o.insert("name", s->name()); + o.insert("url", s->url()); + o.insert("urlResolved", s->urlResolved()); + o.insert("country", s->country()); + arr.append(o); + } + file.write(QJsonDocument(arr).toJson(QJsonDocument::Indented)); +} + +void RadioBackend::loadState() +{ + const QString configDir = appConfigDir(); + QDir().mkpath(configDir); + QFile file(configDir + "/state.json"); + if (!file.open(QIODevice::ReadOnly)) { + return; + } + + const QJsonDocument doc = QJsonDocument::fromJson(file.readAll()); + if (!doc.isObject()) { + return; + } + + const QJsonObject obj = doc.object(); + m_lastStationName = obj.value("lastStationName").toString(); + m_lastStationUrl = obj.value("lastStationUrl").toString(); + const double volume = obj.value("volume").toDouble(0.5); + const QJsonArray recentArray = obj.value("recentStations").toArray(); + m_recentStations.clear(); + for (const QJsonValue &value : recentArray) { + if (!value.isObject()) { + continue; + } + const QVariantMap recentStation = value.toObject().toVariantMap(); + if (recentStation.value(QStringLiteral("urlResolved")).toString().isEmpty()) { + continue; + } + m_recentStations.append(recentStation); + if (m_recentStations.size() >= kRecentLimit) { + break; + } + } + m_player->setVolume(volume); + emit resumeStateChanged(); +} + +void RadioBackend::saveState() const +{ + const QString configDir = appConfigDir(); + QDir().mkpath(configDir); + QFile file(configDir + "/state.json"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + return; + } + + QJsonObject obj; + obj.insert("lastStationName", m_lastStationName); + obj.insert("lastStationUrl", m_lastStationUrl); + obj.insert("volume", m_player->volume()); + obj.insert("recentStations", QJsonArray::fromVariantList(m_recentStations)); + file.write(QJsonDocument(obj).toJson(QJsonDocument::Indented)); +} + +void RadioBackend::setLoading(bool loading) +{ + if (m_loading == loading) { + return; + } + m_loading = loading; + emit loadingChanged(); +} + +void RadioBackend::setLastError(const QString &error) +{ + if (m_lastError == error) { + return; + } + m_lastError = error; + emit lastErrorChanged(); +} + +QList RadioBackend::currentList() const +{ + return m_currentFromFavorites ? m_favorites : m_filteredStations; +} + +RadioStation *RadioBackend::stationForVisibleIndex(int index) const +{ + if (index < 0 || index >= m_filteredStations.size()) { + return nullptr; + } + return m_filteredStations[index]; +} + +void RadioBackend::setFilterQuery(const QString &query) +{ + if (m_filterQuery == query && !m_filteredStations.isEmpty() && !m_stations.isEmpty()) { + return; + } + + m_filterQuery = query; + rebuildFilteredStations(); +} + +void RadioBackend::rebuildFilteredStations(bool emitFilterSignal) +{ + m_filteredStations.clear(); + + if (m_filterQuery.trimmed().isEmpty()) { + m_filteredStations = m_stations; + } else { + const QString lowerQuery = m_filterQuery.toLower(); + for (RadioStation *s : m_stations) { + if (s->name().toLower().contains(lowerQuery) || + s->tags().toLower().contains(lowerQuery) || + s->country().toLower().contains(lowerQuery)) { + m_filteredStations.append(s); + } + } + } + + if (emitFilterSignal) { + emit filterQueryChanged(); + } + emit stationsChanged(); + emit listsChanged(); +} + +void RadioBackend::recordRecentStation(const QVariantMap &stationData) +{ + const QString url = stationData.value(QStringLiteral("urlResolved")).toString(); + if (url.isEmpty()) { + return; + } + + QVariantMap normalizedStation = stationData; + if (!normalizedStation.contains(QStringLiteral("name"))) { + normalizedStation.insert(QStringLiteral("name"), QString()); + } + + for (int i = 0; i < m_recentStations.size(); ++i) { + const QVariantMap existing = m_recentStations[i].toMap(); + const QString existingUuid = existing.value(QStringLiteral("uuid")).toString(); + const QString newUuid = normalizedStation.value(QStringLiteral("uuid")).toString(); + if ((!newUuid.isEmpty() && existingUuid == newUuid) || + (newUuid.isEmpty() && existing.value(QStringLiteral("urlResolved")).toString() == url)) { + m_recentStations.removeAt(i); + break; + } + } + + m_recentStations.prepend(normalizedStation); + while (m_recentStations.size() > kRecentLimit) { + m_recentStations.removeLast(); + } + + emit listsChanged(); +} + +void RadioBackend::playCurrentSelection() +{ + const QList list = currentList(); + if (list.isEmpty() || m_currentIndex < 0 || m_currentIndex >= list.size()) { + return; + } + + RadioStation *station = list[m_currentIndex]; + QString url = station->urlResolved().isEmpty() + ? station->url() + : station->urlResolved(); + m_lastStationName = station->name(); + m_lastStationUrl = url; + emit resumeStateChanged(); + recordRecentStation(toVariantMap(station)); + saveState(); + m_player->playUrl(url, station->name()); +} + +QVariantMap RadioBackend::toVariantMap(const RadioStation *station) +{ + QVariantMap map; + if (!station) { + return map; + } + map.insert(QStringLiteral("uuid"), station->uuid()); + map.insert(QStringLiteral("name"), station->name()); + map.insert(QStringLiteral("country"), station->country()); + map.insert(QStringLiteral("bitrate"), station->bitrate()); + map.insert(QStringLiteral("isFavorite"), station->isFavorite()); + map.insert(QStringLiteral("favicon"), station->favicon()); + map.insert(QStringLiteral("urlResolved"), station->urlResolved()); + return map; +} + +bool RadioBackend::matchesStation(const RadioStation *station, const QString &uuid, const QString &urlResolved) +{ + if (!station) { + return false; + } + if (!uuid.isEmpty() && station->uuid() == uuid) { + return true; + } + if (uuid.isEmpty() && !urlResolved.isEmpty() && station->urlResolved() == urlResolved) { + return true; + } + return false; +} diff --git a/src/radiobackend.h b/src/radiobackend.h new file mode 100644 index 0000000..221c9e0 --- /dev/null +++ b/src/radiobackend.h @@ -0,0 +1,108 @@ +#ifndef RADIOBACKEND_H +#define RADIOBACKEND_H + +#include +#include +#include +#include +#include + +#include "radiobrowser.h" +#include "bearplayer.h" + +class RadioStation; + +class RadioBackend : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QList stations READ stations NOTIFY stationsChanged) + Q_PROPERTY(QList favoriteStations READ favoriteStations NOTIFY favoritesChanged) + Q_PROPERTY(BearPlayer* player READ player CONSTANT) + Q_PROPERTY(bool loading READ loading NOTIFY loadingChanged) + Q_PROPERTY(QString lastError READ lastError NOTIFY lastErrorChanged) + Q_PROPERTY(bool canResumeLastStation READ canResumeLastStation NOTIFY resumeStateChanged) + Q_PROPERTY(QString lastStationName READ lastStationName NOTIFY resumeStateChanged) + Q_PROPERTY(QString filterQuery READ filterQuery WRITE setFilterQuery NOTIFY filterQueryChanged) + +public: + explicit RadioBackend(QObject *parent = nullptr); + + QList stations() const; + QList favoriteStations() const; + BearPlayer* player() const { return m_player; } + bool loading() const { return m_loading; } + QString lastError() const { return m_lastError; } + bool canResumeLastStation() const { return !m_lastStationUrl.isEmpty(); } + QString lastStationName() const { return m_lastStationName; } + QString filterQuery() const { return m_filterQuery; } + + Q_INVOKABLE void setFilterQuery(const QString &query); + + Q_INVOKABLE void loadGermanStations(); + Q_INVOKABLE void loadDutchStations(); + Q_INVOKABLE void loadTopStations(); + Q_INVOKABLE void loadWorldStations(); + Q_INVOKABLE void loadByTag(const QString &tag); + Q_INVOKABLE void loadByCountryCode(const QString &countryCode); + Q_INVOKABLE void searchStations(const QString &query); + Q_INVOKABLE void playStation(int index); + Q_INVOKABLE void playFavoriteStation(int index); + Q_INVOKABLE void playNextStation(); + Q_INVOKABLE void playPreviousStation(); + Q_INVOKABLE bool hasNextStation() const; + Q_INVOKABLE bool hasPreviousStation() const; + Q_INVOKABLE void toggleFavorite(int index); + Q_INVOKABLE void toggleFavoriteById(const QString &uuid, const QString &urlResolved); + Q_INVOKABLE void addManualStation(const QString &name, const QString &url, const QString &country); + Q_INVOKABLE void sortStations(const QString &mode); + Q_INVOKABLE QVariantList getRecentStations() const; + Q_INVOKABLE QVariantList getFavoriteStations() const; + Q_INVOKABLE bool playRecentByUuid(const QString &uuid, const QString &urlResolved = QString()); + Q_INVOKABLE bool playFavoriteByUuid(const QString &uuid, const QString &urlResolved = QString()); + Q_INVOKABLE void resumeLastStation(); + +signals: + void stationsChanged(); + void favoritesChanged(); + void listsChanged(); + void loadingChanged(); + void lastErrorChanged(); + void resumeStateChanged(); + void filterQueryChanged(); + +private slots: + void onStationsLoaded(const QList &stations); + +private: + RadioBrowser *m_radioBrowser = nullptr; + BearPlayer *m_player = nullptr; + QList m_stations; + QList m_filteredStations; + QList m_favorites; + int m_currentIndex = -1; + bool m_currentFromFavorites = false; + bool m_loading = false; + QString m_lastError; + QString m_lastStationName; + QString m_lastStationUrl; + QString m_filterQuery; + QVariantList m_recentStations; + + void setupConnections(); + void loadFavorites(); + void saveFavorites() const; + void loadState(); + void saveState() const; + void setLoading(bool loading); + void setLastError(const QString &error); + QList currentList() const; + RadioStation *stationForVisibleIndex(int index) const; + void rebuildFilteredStations(bool emitFilterSignal = true); + void recordRecentStation(const QVariantMap &stationData); + void playCurrentSelection(); + static QVariantMap toVariantMap(const RadioStation *station); + static bool matchesStation(const RadioStation *station, const QString &uuid, const QString &urlResolved); +}; + +#endif diff --git a/src/radiobrowser.cpp b/src/radiobrowser.cpp new file mode 100644 index 0000000..fe2896a --- /dev/null +++ b/src/radiobrowser.cpp @@ -0,0 +1,153 @@ +#include "radiobrowser.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { +QString apiCacheDir() +{ + return QDir::homePath() + QStringLiteral("/.cache/bearwave/api_cache"); +} +} + +RadioBrowser::RadioBrowser(QObject *parent) + : QObject(parent) +{ + m_networkManager = new QNetworkAccessManager(this); +} + +void RadioBrowser::search(const QString &query) +{ + QString endpoint = "/stations/byname/" + QUrl::toPercentEncoding(query); + makeRequest(endpoint); +} + +void RadioBrowser::getTopStations(int count) +{ + QString endpoint = "/stations/topvote/" + QString::number(count); + makeRequest(endpoint); +} + +void RadioBrowser::getByCountry(const QString &countryCode) +{ + QString endpoint = "/stations/bycountrycodeexact/" + countryCode; + makeRequest(endpoint); +} + +void RadioBrowser::getByTag(const QString &tag) +{ + QString endpoint = "/stations/bytag/" + QUrl::toPercentEncoding(tag); + makeRequest(endpoint); +} + +void RadioBrowser::getWorldStations(int count) +{ + QString endpoint = "/stations?hidebroken=true&limit=" + QString::number(count) + "&order=votes&reverse=true"; + makeRequest(endpoint); +} + +void RadioBrowser::getGermanStations() +{ + QString endpoint = "/stations/bycountrycodeexact/DE?limit=50&order=votes&reverse=true"; + makeRequest(endpoint); +} + +void RadioBrowser::getDutchStations() +{ + QString endpoint = "/stations/bycountrycodeexact/NL?limit=50&order=votes&reverse=true"; + makeRequest(endpoint); +} + +void RadioBrowser::makeRequest(const QString &endpoint) +{ + const QString cacheDir = apiCacheDir(); + QDir().mkpath(cacheDir); + const QString hash = QString(QCryptographicHash::hash(endpoint.toUtf8(), QCryptographicHash::Md5).toHex()); + const QString cachePath = cacheDir + "/" + hash + ".json"; + + QFile cacheFile(cachePath); + if (cacheFile.exists() && cacheFile.open(QIODevice::ReadOnly)) { + QByteArray cachedData = cacheFile.readAll(); + QList stations = parseJsonResponse(cachedData); + if (!stations.isEmpty()) { + emit stationsLoaded(stations); + } + cacheFile.close(); + } + + QUrl url(m_baseUrl + endpoint); + QNetworkRequest request; + request.setUrl(url); + request.setHeader(QNetworkRequest::UserAgentHeader, "BearWave/1.0"); + + QNetworkReply *reply = m_networkManager->get(request); + reply->setProperty("cachePath", cachePath); + + connect(reply, &QNetworkReply::finished, this, &RadioBrowser::onReplyFinished); +} + +void RadioBrowser::onReplyFinished() +{ + QNetworkReply *reply = qobject_cast(sender()); + + if (!reply) { + emit error("Network error"); + return; + } + + if (reply->error() != QNetworkReply::NoError) { + emit error(reply->errorString()); + reply->deleteLater(); + return; + } + + QByteArray data = reply->readAll(); + QList stations = parseJsonResponse(data); + + QString cachePath = reply->property("cachePath").toString(); + if (!cachePath.isEmpty() && !stations.isEmpty()) { + QFile file(cachePath); + if (file.open(QIODevice::WriteOnly)) { + file.write(data); + file.close(); + } + } + + emit stationsLoaded(stations); + reply->deleteLater(); +} + +QList RadioBrowser::parseJsonResponse(const QByteArray &jsonData) +{ + QList stations; + + QJsonDocument doc = QJsonDocument::fromJson(jsonData); + if (!doc.isArray()) { + return stations; + } + + QJsonArray array = doc.array(); + for (const QJsonValue &value : array) { + if (value.isObject()) { + QJsonObject obj = value.toObject(); + QString name = obj.value("name").toString(); + QString url = obj.value("url_resolved").toString(); + + if (name.isEmpty() || url.isEmpty()) { + continue; + } + + RadioStation *station = RadioStation::fromJson(obj); + stations.append(station); + } + } + + return stations; +} diff --git a/src/radiobrowser.h b/src/radiobrowser.h new file mode 100644 index 0000000..6d2d479 --- /dev/null +++ b/src/radiobrowser.h @@ -0,0 +1,41 @@ +#ifndef RADIOBROWSER_H +#define RADIOBROWSER_H + +#include +#include +#include +#include + +#include "radiostation.h" + +class RadioBrowser : public QObject +{ + Q_OBJECT + +public: + explicit RadioBrowser(QObject *parent = nullptr); + + void search(const QString &query); + void getTopStations(int count = 50); + void getByCountry(const QString &countryCode); + void getByTag(const QString &tag); + void getWorldStations(int count = 200); + void getGermanStations(); + void getDutchStations(); + +signals: + void stationsLoaded(const QList &stations); + void error(const QString &message); + +private slots: + void onReplyFinished(); + +private: + QNetworkAccessManager *m_networkManager = nullptr; + QString m_baseUrl = "https://de1.api.radio-browser.info/json"; + + void makeRequest(const QString &endpoint); + QList parseJsonResponse(const QByteArray &jsonData); +}; + +#endif diff --git a/src/radiostation.cpp b/src/radiostation.cpp new file mode 100644 index 0000000..6648bbb --- /dev/null +++ b/src/radiostation.cpp @@ -0,0 +1,162 @@ +#include "radiostation.h" + +#include + +RadioStation::RadioStation(QObject *parent) + : QObject(parent) +{ +} + +QString RadioStation::uuid() const +{ + return m_uuid; +} + +void RadioStation::setUuid(const QString &uuid) +{ + m_uuid = uuid; +} + +QString RadioStation::name() const +{ + return m_name; +} + +void RadioStation::setName(const QString &name) +{ + m_name = name; +} + +QString RadioStation::url() const +{ + return m_url; +} + +void RadioStation::setUrl(const QString &url) +{ + m_url = url; +} + +QString RadioStation::urlResolved() const +{ + return m_urlResolved; +} + +void RadioStation::setUrlResolved(const QString &urlResolved) +{ + m_urlResolved = urlResolved; +} + +QString RadioStation::homepage() const +{ + return m_homepage; +} + +void RadioStation::setHomepage(const QString &homepage) +{ + m_homepage = homepage; +} + +QString RadioStation::favicon() const +{ + return m_favicon; +} + +void RadioStation::setFavicon(const QString &favicon) +{ + m_favicon = favicon; +} + +QString RadioStation::country() const +{ + return m_country; +} + +void RadioStation::setCountry(const QString &country) +{ + m_country = country; +} + +QString RadioStation::tags() const +{ + return m_tags; +} + +void RadioStation::setTags(const QString &tags) +{ + m_tags = tags; +} + +QString RadioStation::codec() const +{ + return m_codec; +} + +void RadioStation::setCodec(const QString &codec) +{ + m_codec = codec; +} + +int RadioStation::bitrate() const +{ + return m_bitrate; +} + +void RadioStation::setBitrate(int bitrate) +{ + m_bitrate = bitrate; +} + +int RadioStation::votes() const +{ + return m_votes; +} + +void RadioStation::setVotes(int votes) +{ + m_votes = votes; +} + +bool RadioStation::isOnline() const +{ + return m_isOnline; +} + +void RadioStation::setIsOnline(bool isOnline) +{ + m_isOnline = isOnline; +} + +bool RadioStation::isFavorite() const +{ + return m_isFavorite; +} + +void RadioStation::setIsFavorite(bool isFavorite) +{ + if (m_isFavorite == isFavorite) { + return; + } + m_isFavorite = isFavorite; + emit isFavoriteChanged(); +} + +RadioStation* RadioStation::fromJson(const QJsonObject &json) +{ + RadioStation *station = new RadioStation(); + + station->setUuid(json.value("stationuuid").toString()); + station->setName(json.value("name").toString()); + station->setUrl(json.value("url").toString()); + station->setUrlResolved(json.value("url_resolved").toString()); + station->setHomepage(json.value("homepage").toString()); + station->setFavicon(json.value("favicon").toString()); + station->setCountry(json.value("country").toString()); + station->setTags(json.value("tags").toString()); + station->setCodec(json.value("codec").toString()); + station->setBitrate(json.value("bitrate").toInt()); + station->setVotes(json.value("votes").toInt()); + station->setIsOnline(json.value("lastcheckok").toInt() == 1); + + return station; +} diff --git a/src/radiostation.h b/src/radiostation.h new file mode 100644 index 0000000..a227821 --- /dev/null +++ b/src/radiostation.h @@ -0,0 +1,89 @@ +#ifndef RADIOSTATION_H +#define RADIOSTATION_H + +#include +#include +#include + +class RadioStation : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString uuid READ uuid CONSTANT) + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString url READ url CONSTANT) + Q_PROPERTY(QString urlResolved READ urlResolved CONSTANT) + Q_PROPERTY(QString homepage READ homepage CONSTANT) + Q_PROPERTY(QString favicon READ favicon CONSTANT) + Q_PROPERTY(QString country READ country CONSTANT) + Q_PROPERTY(QString tags READ tags CONSTANT) + Q_PROPERTY(QString codec READ codec CONSTANT) + Q_PROPERTY(int bitrate READ bitrate CONSTANT) + Q_PROPERTY(int votes READ votes CONSTANT) + Q_PROPERTY(bool isOnline READ isOnline CONSTANT) + Q_PROPERTY(bool isFavorite READ isFavorite WRITE setIsFavorite NOTIFY isFavoriteChanged) + +public: + explicit RadioStation(QObject *parent = nullptr); + + QString uuid() const; + void setUuid(const QString &uuid); + + QString name() const; + void setName(const QString &name); + + QString url() const; + void setUrl(const QString &url); + + QString urlResolved() const; + void setUrlResolved(const QString &urlResolved); + + QString homepage() const; + void setHomepage(const QString &homepage); + + QString favicon() const; + void setFavicon(const QString &favicon); + + QString country() const; + void setCountry(const QString &country); + + QString tags() const; + void setTags(const QString &tags); + + QString codec() const; + void setCodec(const QString &codec); + + int bitrate() const; + void setBitrate(int bitrate); + + int votes() const; + void setVotes(int votes); + + bool isOnline() const; + void setIsOnline(bool isOnline); + + bool isFavorite() const; + void setIsFavorite(bool isFavorite); + + static RadioStation* fromJson(const QJsonObject &json); + +signals: + void isFavoriteChanged(); + +private: + QString m_uuid; + QString m_name; + QString m_url; + QString m_urlResolved; + QString m_homepage; + QString m_favicon; + QString m_country; + QString m_tags; + QString m_codec; + int m_bitrate = 0; + int m_votes = 0; + bool m_isOnline = false; + bool m_isFavorite = false; +}; + +#endif