From 17af280125f3a0a93d0c260a64bbb22f3fb6da31 Mon Sep 17 00:00:00 2001
From: AmerikanSn1p3r <79807933+V1p3rOne@users.noreply.github.com>
Date: Sun, 20 Oct 2024 21:52:02 +0200
Subject: [PATCH 1/4] feat: added new things to .github
---
.github/ISSUE_TEMPLATE/bug-report.yml | 161 +++++++++++++++-------
.github/release-drafter.yml | 50 +++++++
.github/workflows/changelog.yml | 29 ++++
.github/workflows/release-builder.yml | 189 ++++++++++++++++++++++++++
.github/workflows/release-drafter.yml | 50 +++++++
5 files changed, 432 insertions(+), 47 deletions(-)
create mode 100644 .github/release-drafter.yml
create mode 100644 .github/workflows/changelog.yml
create mode 100644 .github/workflows/release-builder.yml
create mode 100644 .github/workflows/release-drafter.yml
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index af15964..dd98cc4 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -2,50 +2,117 @@ name: Bug Report
description: Found a bug? Report it here.
labels: [bug]
body:
-- type: markdown
- attributes:
- value: |
- **Please follow the guidelines below to help us resolve your issue.**
-
- **Guidelines:**
- - Please **search existing issues** to ensure your issue isn't already reported by [checking here](https://github.com/justin025/onthespot/issues?q=is%3Aissue).
- - **Report one bug per issue** by creating separate issues for each bug.
- - **Provide a descriptive title** that clearly summarizes your issue.
- - **Include detailed information** to help us reproduce and fix the problem.
-
- **If you don't follow the guidelines, the issue will be deleted!**
-
-- type: textarea
- id: description
- attributes:
- label: Bug Description
- description: A detailed and accurate description of the bug is required.
- placeholder: When I perform X action, Y happens instead of the expected Z.
- validations:
- required: true
-
-- type: textarea
- id: environment
- attributes:
- label: Environment Details
- description: Provide details about your setup.
- render: markdown
- value: |
- | **Detail** | **Your Information** |
- |--------------------------|--------------------------------------|
- | **Operating System** | Windows 10 / MacOS 13 / Ubuntu 22.04 |
- | **Application Version** | v0.7.0 |
- | **Installation Method** | GitHub Release / Build from Script |
- | **Python Version** | 3.11.4 |
- | **FFmpeg Version** | e.g., 4.3.1 |
- validations:
- required: true
-
-- type: textarea
- id: additional_info
- attributes:
- label: Additional Information
- description: Add any other context, screenshots, or logs.
- placeholder: Include logs, screenshots, or any other relevant details here.
- validations:
- required: false
+ - type: markdown
+ attributes:
+ value: |
+ **Please follow the guidelines below to help us resolve your issue.**
+
+ **Guidelines:**
+ - Please **search existing issues** to ensure your issue isn't already reported by [checking here](https://github.com/justin025/onthespot/issues?q=is%3Aissue).
+ - **Report one bug per issue** by creating separate issues for each bug.
+ - **Provide a descriptive title** that clearly summarizes your issue.
+ - **Include detailed information** to help us reproduce and fix the problem.
+
+ **If you don't follow the guidelines, the issue will be deleted!**
+
+ - type: textarea
+ id: ots_description
+ attributes:
+ label: Bug Description
+ description: A detailed and accurate description of the bug is required.
+ placeholder: When I perform X action, Y happens instead of the expected Z.
+ validations:
+ required: true
+
+ # Environment Details Section
+
+ - type: dropdown
+ id: ots_operating_system
+ attributes:
+ label: Operating System
+ description: Select your operating system.
+ options:
+ - Windows
+ - macOS
+ - Linux
+ - Other
+ validations:
+ required: true
+
+ # Operating System Version Input
+
+ - type: input
+ id: ots_os_version
+ attributes:
+ label: Operating System Version
+ description: Specify your operating system version.
+ placeholder: e.g., Windows 11, macOS Ventura (13), Ubuntu 22.04 LTS
+ validations:
+ required: true
+ conditions:
+ - field: ots_operating_system
+ any:
+ - Windows
+ - macOS
+ - Linux
+
+ # Other Operating System Specification
+
+ - type: input
+ id: ots_operating_system_other
+ attributes:
+ label: Specify Operating System
+ description: If you selected 'Other', please specify your OS and version.
+ placeholder: e.g., FreeBSD 13.0
+ validations:
+ required: true
+ conditions:
+ - field: ots_operating_system
+ equals: Other
+
+ - type: input
+ id: ots_application_version
+ attributes:
+ label: Application Version
+ description: Enter the version of the OnTheSpot application you are using.
+ placeholder: e.g., v0.7.0
+ validations:
+ required: true
+
+ - type: dropdown
+ id: ots_installation_method
+ attributes:
+ label: Installation Method
+ description: How did you install the OnTheSpot application?
+ options:
+ - GitHub Release
+ - Build from Script
+ validations:
+ required: true
+
+ - type: input
+ id: ots_python_version
+ attributes:
+ label: Python Version
+ description: Enter your Python version, check with `python --version` in Terminal.
+ placeholder: e.g., 3.11.4
+ validations:
+ required: true
+
+ - type: input
+ id: ots_ffmpeg_version
+ attributes:
+ label: FFmpeg Version
+ description: Enter your FFmpeg version, check with `ffmpeg -version` in Terminal.
+ placeholder: e.g., 2024-09-05
+ validations:
+ required: true
+
+ - type: textarea
+ id: ots_additional_info
+ attributes:
+ label: Additional Information
+ description: Add any other context, screenshots, or logs.
+ placeholder: Include logs, screenshots, or any other relevant details here.
+ validations:
+ required: false
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 0000000..3491335
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,50 @@
+name-template: 'v$NEXT_PATCH_VERSION'
+tag-template: 'v$NEXT_PATCH_VERSION'
+version-template: '$MAJOR.$MINOR.$PATCH'
+
+categories:
+ - title: '## Features'
+ labels:
+ - 'feat'
+ - 'feature'
+ - title: '## Bug Fixes'
+ labels:
+ - 'fix'
+ - 'bug'
+ - title: '## Documentation'
+ labels:
+ - 'docs'
+ - 'documentation'
+ - title: '## Chores'
+ labels:
+ - 'chore'
+ - 'maintenance'
+
+change-template: '- $TITLE ([#$NUMBER]($URL)) ([`$SHORT_SHA`]($COMMIT_URL)) by @$AUTHOR'
+
+autolabeler:
+ - label: 'feat'
+ title: '^feat'
+ - label: 'fix'
+ title: '^fix'
+ - label: 'docs'
+ title: '^docs'
+ - label: 'chore'
+ title: '^chore'
+
+exclude-labels:
+ - 'duplicate'
+ - 'invalid'
+ - 'question'
+ - 'wontfix'
+
+template: |
+ # :sparkles: New Release: v$NEXT_PATCH_VERSION
+
+ Thanks to everyone for their contributions!
+
+ $CHANGES
+
+ **Full Changelog**: [$PREVIOUS_TAG...$NEW_TAG]($COMPARE_URL)
+
+ **Contributors**: $CONTRIBUTORS
diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml
new file mode 100644
index 0000000..0ba830d
--- /dev/null
+++ b/.github/workflows/changelog.yml
@@ -0,0 +1,29 @@
+name: Changelog
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ changelog:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Conventional Changelog Action
+ id: changelog
+ uses: TriPSs/conventional-changelog-action@v3
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Create Release
+ uses: actions/create-release@v1
+ if: ${{ steps.changelog.outputs.skipped == 'false' }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ steps.changelog.outputs.tag }}
+ release_name: ${{ steps.changelog.outputs.tag }}
+ body: ${{ steps.changelog.outputs.clean_changelog }}
diff --git a/.github/workflows/release-builder.yml b/.github/workflows/release-builder.yml
new file mode 100644
index 0000000..a35f4b8
--- /dev/null
+++ b/.github/workflows/release-builder.yml
@@ -0,0 +1,189 @@
+name: Release Builder
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ release:
+ types: [published]
+
+jobs:
+ # Windows Build
+ windows-build:
+ runs-on: windows-latest
+ outputs:
+ artifact_path: artifacts/windows/
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v3
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.10'
+
+ - name: Install Dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r requirements.txt
+ pip install pyinstaller
+
+ - name: Run Windows Build Script
+ run: scripts\build_windows.bat
+ shell: cmd
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: windows-build
+ path: artifacts/windows/
+
+ # Linux Build
+ linux-build:
+ runs-on: ubuntu-latest
+ outputs:
+ artifact_path: artifacts/linux/
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v3
+
+ - name: Install Dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y patchelf fuse libfuse2
+ python -m pip install --upgrade pip
+ pip install -r requirements.txt
+ pip install pyinstaller
+
+ - name: Make Build Script Executable
+ run: chmod +x scripts/build_linux.sh
+
+ - name: Run Linux Build Script
+ run: scripts/build_linux.sh
+ shell: bash
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: linux-build
+ path: artifacts/linux/
+
+ # macOS Build
+ macos-build:
+ runs-on: macos-latest
+ outputs:
+ artifact_path: artifacts/macos/
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v3
+
+ - name: Install Dependencies
+ run: |
+ brew install pyinstaller
+ python -m pip install --upgrade pip
+ pip install -r requirements.txt
+ pip install pyinstaller
+
+ - name: Make Build Script Executable
+ run: chmod +x scripts/build_mac.sh
+
+ - name: Run macOS Build Script
+ run: scripts/build_mac.sh
+ shell: bash
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: macos-build
+ path: artifacts/macos/
+
+ # Collect Artifacts
+ collect-artifacts:
+ name: Collect Artifacts
+ needs: [windows-build, linux-build, macos-build]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v3
+
+ - name: Download Windows Artifacts
+ uses: actions/download-artifact@v3
+ with:
+ name: windows-build
+ path: artifacts/windows/
+
+ - name: Download Linux Artifacts
+ uses: actions/download-artifact@v3
+ with:
+ name: linux-build
+ path: artifacts/linux/
+
+ - name: Download macOS Artifacts
+ uses: actions/download-artifact@v3
+ with:
+ name: macos-build
+ path: artifacts/macos/
+
+ - name: Upload Combined Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: OnTheSpot-Builds
+ path: artifacts/
+
+ - name: Create Release
+ if: github.event_name == 'release'
+ uses: actions/create-release@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ github.event.release.tag_name }}
+ release_name: ${{ github.event.release.name }}
+ draft: false
+ prerelease: false
+
+ - name: Upload Windows Executable to Release
+ if: github.event_name == 'release'
+ uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: artifacts/windows/onthespot_windows.exe
+ asset_name: onthespot_windows.exe
+ asset_content_type: application/octet-stream
+
+ - name: Upload Linux Tar.gz to Release
+ if: github.event_name == 'release'
+ uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: artifacts/linux/onthespot_linux.tar.gz
+ asset_name: onthespot_linux.tar.gz
+ asset_content_type: application/gzip
+
+ - name: Upload Linux AppImage to Release
+ if: github.event_name == 'release'
+ uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: artifacts/linux/OnTheSpot.AppImage
+ asset_name: OnTheSpot.AppImage
+ asset_content_type: application/octet-stream
+
+ - name: Upload macOS DMG to Release
+ if: github.event_name == 'release'
+ uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: artifacts/macos/OnTheSpot.dmg
+ asset_name: OnTheSpot.dmg
+ asset_content_type: application/x-apple-diskimage
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 0000000..503336b
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,50 @@
+name: Release Drafter
+
+on:
+ push:
+ tags:
+ - 'v*.*.*'
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Set up Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: '16'
+
+ - name: Install Conventional Changelog CLI
+ run: |
+ npm install -g conventional-changelog-cli
+
+ - name: Release Drafter
+ run: |
+ conventional-changelog -p angular -i CHANGELOG.md -s -r 0 --config ./changelog-config.js
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Commit and Push Changelog
+ run: |
+ git config user.name "GitHub Actions"
+ git config user.email "actions@github.com"
+ git add CHANGELOG.md
+ git commit -m "docs(changelog): update changelog [skip ci]"
+ git push origin HEAD:${{ github.ref_name }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Create Release
+ uses: ncipollo/release-action@v1
+ with:
+ tag: ${{ github.ref_name }}
+ name: ${{ github.ref_name }}
+ commit: ${{ github.sha }}
+ body: |
+ $(cat CHANGELOG.md)
+ token: ${{ secrets.GITHUB_TOKEN }}
From 6b825447cd3c8f67f2c4fdf78649523597bb2739 Mon Sep 17 00:00:00 2001
From: AmerikanSn1p3r <79807933+V1p3rOne@users.noreply.github.com>
Date: Sun, 20 Oct 2024 22:45:04 +0200
Subject: [PATCH 2/4] docs: moved the documentation to root
---
docs/contributing.md => CONTRIBUTING.md | 6 ++---
CREDITS.md | 33 ++++++++++++++++++++++++
docs/disclaimer.md => DISCLAIMER.md | 6 ++---
README.md | 20 +++++---------
assets/01_Logo/Cover_Black.png | Bin 9756 -> 9709 bytes
assets/01_Logo/Cover_White.png | Bin 9779 -> 9724 bytes
docs/credits.md | 15 -----------
7 files changed, 46 insertions(+), 34 deletions(-)
rename docs/contributing.md => CONTRIBUTING.md (90%)
create mode 100644 CREDITS.md
rename docs/disclaimer.md => DISCLAIMER.md (93%)
delete mode 100644 docs/credits.md
diff --git a/docs/contributing.md b/CONTRIBUTING.md
similarity index 90%
rename from docs/contributing.md
rename to CONTRIBUTING.md
index 3bca845..c75e096 100644
--- a/docs/contributing.md
+++ b/CONTRIBUTING.md
@@ -1,7 +1,7 @@
diff --git a/CREDITS.md b/CREDITS.md
new file mode 100644
index 0000000..ac5b80b
--- /dev/null
+++ b/CREDITS.md
@@ -0,0 +1,33 @@
+
+
+
+
+# Thanks and Acknowledgements
+
+We would like to thank all the contributors who have helped improve this repository. We truly appreciate your time, dedication, and commitment to helping us improve and grow.
+
+## Contributors
+
+- **Justin025** [@justin025](https://github.com/justin025/)
+- **V1p3rOne** [@V1p3rOne](https://github.com/V1p3rOne)
+- **Medmondson** [@medmondson-spot](https://github.com/medmondson-spot)
+
+## Tools Used
+
+- [Python](https://www.python.org/)
+- [Qt for Python (PyQt/PySide)](https://riverbankcomputing.com/software/pyqt/intro)**
+- [PyInstaller](https://www.pyinstaller.org/)
+- [FFmpeg](https://ffmpeg.org/)
+- [Spotify Developers API](https://developer.spotify.com/)
+- [GitHub Actions](https://github.com/features/actions)
+- [Linux AppImage](https://appimage.org/)
+- [MacOS DMG Creation Tools](https://apple.com)
+- [Windows Build Tools](https://learn.microsoft.com/en-us/windows/win32/debug/building-on-the-command-line)
+
+## Our Community
+
+Lastly, a big thanks to all our users and community members who have provided feedback, reported bugs, or shared their suggestions for improvement. Your insights and support keep this project moving forward!
diff --git a/docs/disclaimer.md b/DISCLAIMER.md
similarity index 93%
rename from docs/disclaimer.md
rename to DISCLAIMER.md
index 04763ae..d05ba0b 100644
--- a/docs/disclaimer.md
+++ b/DISCLAIMER.md
@@ -1,7 +1,7 @@
diff --git a/README.md b/README.md
index a5ca129..e87e52c 100755
--- a/README.md
+++ b/README.md
@@ -8,12 +8,9 @@
-
-
[![Issues Badge][issues-shield]][issues-url]
[![Stars Badge][stars-shield]][stars-url]
[![Downloads Badge][downloads-shield]][downloads-url]
-[![Commits Badge][commits-shield]][commits-url]
[![License Badge][license-shield]][license-url]
@@ -38,9 +35,9 @@ OnTheSpot is a open-source user-friendly music downloader built with Qt and Pyth
### Features
-- [**Cross-Platform**](https://www.techopedia.com/definition/17056/cross-platform) Xgo?hJ3bp(X}p8wZq
z_OJ1?633HUz$bq?8V_o?Hfu8lK-&i<*lD@~TDCjwL+I*NfwjA>UMA$Zg#YFM?*A7|
z;{gt9xneA6 0r5JN>jpo}Cs*?lLQ5uo?SkYWX6v(?IK
zgSVyyo4kDIx0o^tD;jeqc0!mw{W>E1hGQ?N?R}t#M-FO9ilVu^WGZb~`c{EoFz>RX
zww!+OVj{{-xbae})f8X;(}ic8Y<5~k0y1)1W&m;NtHM$?6K2FAlGLJrcwEUA1eUi4
ziS>4J^R?(2@CI`PcdZyjgT0*N@0v8nX3iVuAkD;*Pt2UmRIaXOM>ij^O2DxDk?WUD
z5#0|tI
Available for Windows, macOS, and Linux (Including AppImage, PKGBUILD, and eBuild).
-- [**High-Quality Downloads**](https://www.whathifi.com/advice/high-resolution-audio-everything-you-need-to-know)
Download music up to 320kbps directly from the source.
-- [**Multi-Language Support**](https://phrase.com/blog/posts/multilingual-customer-support/)
Download track and album names translated to your application's language.
+- [**Cross Platform**](https://www.techopedia.com/definition/17056/cross-platform)
Available for Windows, MacOS, and Linux (Including AppImage, PKGBUILD, and eBuild).
+- [**High Quality Downloads**](https://www.whathifi.com/advice/high-resolution-audio-everything-you-need-to-know)
Download music up to 320kbps directly from the source.
+- [**Multi Language Support**](https://phrase.com/blog/posts/multilingual-customer-support/)
Download track and album names translated to your application's language.
- [**Comprehensive Content Coverage**](https://thisisglance.com/blog/why-spotify-is-the-outright-best-music-streaming-app)
Supports songs, podcasts, playlists, albums, singles, compilations, and audiobooks.
- [**Rich Metadata Embedding**](https://sonosuite.com/en/blog/what-is-music-metadata-and-why-is-important-to-digital-music/)
Automatically embed detailed metadata like artist, album, year, and lyrics.
- [**Custom Download Paths**](https://www.microsoft.com/en-us/microsoft-365/business-insights-ideas/resources/11-ideas-for-how-to-organize-digital-files)
Set personalized paths for playlists and episodes for easy organization.
@@ -91,17 +88,14 @@ For full details, please read our [**Disclaimer**](docs/disclaimer.md).
If you have any questions, concerns, or need assistance feel free to [contact us](mailto:justin026@protonmail.com).
-[issues-shield]: https://img.shields.io/github/issues/justin025/onthespot?style=flat&label=Issues&labelColor=003366&color=1DB954
+[issues-shield]: https://img.shields.io/github/issues/justin025/onthespot?style=flat&label=Issues&labelColor=001224&color=1DB954
[issues-url]: https://github.com/justin025/onthespot/issues
-[stars-shield]: https://img.shields.io/github/stars/justin025/onthespot?style=flat&label=Stars&labelColor=003366&color=1DB954
+[stars-shield]: https://img.shields.io/github/stars/justin025/onthespot?style=flat&label=Stars&labelColor=001224&color=1DB954
[stars-url]: https://github.com/justin025/onthespot/stargazers
-[downloads-shield]: https://img.shields.io/github/downloads/justin025/onthespot/total.svg?style=flat&label=Downloads&labelColor=003366&color=1DB954
+[downloads-shield]: https://img.shields.io/github/downloads/justin025/onthespot/total.svg?style=flat&label=Downloads&labelColor=001224&color=1DB954
[downloads-url]: https://github.com/justin025/onthespot/releases/
-
-[commits-shield]: https://img.shields.io/github/commit-activity/m/justin025/onthespot?style=flat&label=Commits&labelColor=003366&color=1DB954
-[commits-url]: https://github.com/justin025/onthespot/commits/main
-[license-shield]: https://img.shields.io/github/license/justin025/onthespot?style=flat&label=License&labelColor=003366&color=1DB954
+[license-shield]: https://img.shields.io/github/license/justin025/onthespot?style=flat&label=License&labelColor=001224&color=1DB954
[license-url]: https://github.com/justin025/onthespot/blob/main/LICENSE
diff --git a/assets/01_Logo/Cover_Black.png b/assets/01_Logo/Cover_Black.png
index 8d67692cc556b49b97268869c3fb1a4c84490136..d3117c9d2b50482d8c9eeb4f0f9d182541ecb19c 100644
GIT binary patch
literal 9709
zcmdUV=RezD*#E~UEkzYon;NxSqc*K-5wmv9QmcxXu~&yGt-TwowZ8VMm?5-9MeG$Z
zqP8Hm+P_a<_oLr~`wzGuBlL=a|7m&$vTWgXmqELzc^F+G;6x_5OZQ
z`JKBj_m;$DfG?@tZNgHj*^X2&ixemgjfiom#w_c0obL|Tly`B;3Y;htr8(~|1#9NY
zz}e=atHSgU0xUiry9w2Rh!P%8_yj|>@d3d&)BAJBZfm#RN0|?cMv}Z8W4cztt$x<1
z8GR%W?fVma_th6Z{DA3LlJBME&|tjQq9OU!6E%l{kx4(QXc2n-vd)H%Zc<(Tbo7l_v&%T-
z;*DVSb}wbehS`zrv>oxz@F@=9+@)AMJb4GykP|;&1n=yM%Z&H5w((b<{>+z7AJ#D_
zSBI8+yua-tWQm`-WO}}>gu5