PrismLauncher-11.0.2/0000755000175100017510000000000015166745067013776 5ustar runnerrunnerPrismLauncher-11.0.2/.github/0000755000175100017510000000000015166745067015336 5ustar runnerrunnerPrismLauncher-11.0.2/.github/ISSUE_TEMPLATE/0000755000175100017510000000000015166745067017521 5ustar runnerrunnerPrismLauncher-11.0.2/.github/ISSUE_TEMPLATE/suggestion.yml0000644000175100017510000000217615166745067022441 0ustar runnerrunnername: Suggestion description: Make a suggestion labels: ["type: enhancement", "status: needs triage"] body: - type: markdown attributes: value: | ### Use this form to suggest a feature for Prism Launcher. - type: input attributes: label: Role description: In what way do you use Prism Launcher that needs this feature? placeholder: I play modded Minecraft. validations: required: true - type: input attributes: label: Suggestion description: What do you want Prism Launcher to do? placeholder: I want the cat button to meow. validations: required: true - type: input attributes: label: Benefit description: Why do you need Prism Launcher to do this? placeholder: so that I can always hear a cat when I need to. validations: required: true - type: checkboxes attributes: label: This suggestion is unique options: - label: I have searched the issue tracker and did not find an issue describing my suggestion, especially not one that has been rejected. required: true - type: textarea attributes: label: You may use the editor below to elaborate further. PrismLauncher-11.0.2/.github/ISSUE_TEMPLATE/bug_report.yml0000644000175100017510000000447415166745067022425 0ustar runnerrunnername: Bug Report description: File a bug report labels: ["bug: unconfirmed", "status: needs triage"] body: - type: markdown attributes: value: | If you need help with running Minecraft, please visit us on our Discord before making a bug report. Before submitting a bug report, please make sure you have read this *entire* form, and that: * You have read the [Prism Launcher wiki](https://prismlauncher.org/wiki/) and it has not answered your question. * Your bug is not caused by Minecraft or any mods you have installed. * Your issue has not been reported before, [make sure to use the search function!](https://github.com/PrismLauncher/PrismLauncher/issues) **Do not forget to give your issue a descriptive title.** "Bug in the instance screen" makes it hard to distinguish issues at a glance. - type: dropdown attributes: label: Operating System description: If you know this bug occurs on multiple operating systems, select all you have tested. multiple: true options: - Windows - macOS - Linux - Other - type: textarea attributes: label: Version of Prism Launcher description: The version of Prism Launcher used in the bug report. placeholder: Prism Launcher 5.0 validations: required: true - type: textarea attributes: label: Version of Qt description: The version of Qt used in the bug report. You can find it in Help -> About Prism Launcher -> About Qt. placeholder: Qt 6.3.0 validations: required: true - type: textarea attributes: label: Description of bug description: What did you expect to happen, what happened, and why is it incorrect? placeholder: The cat button should show a cat, but it showed a dog instead! validations: required: true - type: textarea attributes: label: Steps to reproduce description: A bulleted list, or an exported instance if relevant. placeholder: "* Press the cat button" validations: required: true - type: textarea attributes: label: Suspected cause description: If you know what could be causing this bug, describe it here. validations: required: false - type: checkboxes attributes: label: This issue is unique options: - label: I have searched the issue tracker and did not find an issue describing my bug. required: true PrismLauncher-11.0.2/.github/ISSUE_TEMPLATE/config.yml0000644000175100017510000000031615166745067021511 0ustar runnerrunnerblank_issues_enabled: true contact_links: - name: Prism Launcher Matrix Support Room url: https://matrix.to/#/#prism-support:matrix.org about: Please ask for support here before opening an issue. PrismLauncher-11.0.2/.github/ISSUE_TEMPLATE/rfc.yml0000644000175100017510000000561315166745067021023 0ustar runnerrunner# Template based on https://gitlab.archlinux.org/archlinux/rfcs/-/blob/0ba3b61e987e197f8d1901709409b8564958f78a/rfcs/0000-template.rst name: Request for Comment (RFC) description: Propose a larger change and start a discussion. labels: ["type: enhancement", "status: needs discussion", "status: needs triage"] body: - type: markdown attributes: value: | ### Use this form to suggest a larger change for Prism Launcher. - type: textarea attributes: label: Goal description: Short description, 1-2 sentences. placeholder: Remove the cat from the launcher. validations: required: true - type: textarea attributes: label: Motivation description: | Introduce the topic. If this is a not-well-known section of Prism Launcher, a detailed explanation of the background is recommended. Some example points of discussion: - What specific problems are you facing right now that you're trying to address? - Are there any previous discussions? Link to them and summarize them (don't force your readers to read them though!). - Is there any precedent set by other software? If so, link to resources. placeholder: I don't like cats. I think many users also don't like cats. validations: required: true - type: textarea attributes: label: Specification description: A concrete, thorough explanation of what is being planned. placeholder: Remove the cat button and all references to the cat from the codebase. Including resource files. validations: required: true - type: textarea attributes: label: Drawbacks description: Carefully consider every possible objection and issue with your proposal. This section should be updated as feedback comes in from discussion. placeholder: Some users might like cats. validations: required: true - type: textarea attributes: label: Unresolved Questions description: | Are there any portions of your proposal which need to be discussed with the community before the RFC can proceed? Be careful here -- an RFC with a lot of remaining questions is likely to be stalled. If your RFC is mostly unresolved questions and not too much substance, it may not be ready. placeholder: Do a lot of users care about the cat? validations: required: true - type: textarea attributes: label: Alternatives Considered description: A list of alternatives, that have been considered and offer equal or similar features to the proposed change. placeholder: Maybe the cat could be replaced with an axolotl? validations: required: true - type: checkboxes attributes: label: This suggestion is unique options: - label: I have searched the issue tracker and did not find an issue describing my suggestion, especially not one that has been rejected. required: true - type: textarea attributes: label: You may use the editor below to elaborate further. PrismLauncher-11.0.2/.github/pull_request_template.md0000644000175100017510000000101415166745067022273 0ustar runnerrunner PrismLauncher-11.0.2/.github/codeql/0000755000175100017510000000000015166745067016605 5ustar runnerrunnerPrismLauncher-11.0.2/.github/codeql/codeql-config.yml0000644000175100017510000000007015166745067022037 0ustar runnerrunnerquery-filters: - exclude: id: cpp/fixme-comment PrismLauncher-11.0.2/.github/actions/0000755000175100017510000000000015166745067016776 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/package/0000755000175100017510000000000015166745067020371 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/package/windows/0000755000175100017510000000000015166745067022063 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/package/windows/action.yml0000644000175100017510000001752315166745067024073 0ustar runnerrunnername: Package for Windows description: Create a Windows package for Prism Launcher inputs: version: description: Launcher version required: true build-type: description: Type for the build required: true default: Debug artifact-name: description: Name of the uploaded artifact required: true msystem: description: MSYS2 subsystem to use required: false azure-client-id: description: Client ID for the Azure Signer Application required: true azure-tenant-id: description: Tenant ID for the Azure Signer Application required: true azure-subscription-id: description: Subscription ID for the Azure Signer Application required: true runs: using: composite steps: - name: Package (MinGW) if: ${{ inputs.msystem != '' }} shell: msys2 {0} env: BUILD_DIR: build INSTALL_DIR: install run: | cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} touch ${{ env.INSTALL_DIR }}/manifest.txt for l in $(find ${{ env.INSTALL_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_DIR }}/manifest.txt - name: Package (MSVC) if: ${{ inputs.msystem == '' }} shell: pwsh env: BUILD_DIR: build INSTALL_DIR: install run: | cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} cd ${{ github.workspace }} Get-ChildItem ${{ env.INSTALL_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt - name: Emit warning for unsigned builds if: ${{ env.CI_HAS_ACCESS_TO_AZURE == '' || inputs.azure-client-id == '' }} shell: pwsh run: | ":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY - name: Login to Azure if: ${{ env.CI_HAS_ACCESS_TO_AZURE != '' && inputs.azure-client-id != '' }} uses: azure/login@v3 with: client-id: ${{ inputs.azure-client-id }} tenant-id: ${{ inputs.azure-tenant-id }} subscription-id: ${{ inputs.azure-subscription-id }} - name: Sign executables if: ${{ env.CI_HAS_ACCESS_TO_AZURE != '' && inputs.azure-client-id != '' }} uses: azure/artifact-signing-action@v1 with: endpoint: https://eus.codesigning.azure.net/ trusted-signing-account-name: PrismLauncher certificate-profile-name: PrismLauncher files-folder: ${{ github.workspace }}\install\ files-folder-filter: dll,exe files-folder-recurse: true files-folder-depth: 2 # recommended in https://github.com/Azure/artifact-signing-action#timestamping-1 timestamp-rfc3161: 'http://timestamp.acs.microsoft.com' timestamp-digest: 'SHA256' # TODO(@getchoo): Is this all really needed??? # https://github.com/Azure/trusted-signing-action/blob/fc390cf8ed0f14e248a542af1d838388a47c7a7c/docs/OIDC.md exclude-environment-credential: true exclude-workload-identity-credential: true exclude-managed-identity-credential: true exclude-shared-token-cache-credential: true exclude-visual-studio-credential: true exclude-visual-studio-code-credential: true exclude-azure-cli-credential: false exclude-azure-powershell-credential: true exclude-azure-developer-cli-credential: true exclude-interactive-browser-credential: true - name: Package (MinGW, portable) if: ${{ inputs.msystem != '' }} shell: msys2 {0} env: BUILD_DIR: build INSTALL_DIR: install INSTALL_PORTABLE_DIR: install-portable run: | cp -r ${{ env.INSTALL_DIR }} ${{ env.INSTALL_PORTABLE_DIR }} # cmake install on Windows is slow, let's just copy instead cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt - name: Package (MSVC, portable) if: ${{ inputs.msystem == '' }} shell: pwsh env: BUILD_DIR: build INSTALL_DIR: install INSTALL_PORTABLE_DIR: install-portable run: | cp -r ${{ env.INSTALL_DIR }} ${{ env.INSTALL_PORTABLE_DIR }} # cmake install on Windows is slow, let's just copy instead cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable Get-ChildItem ${{ env.INSTALL_PORTABLE_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_PORTABLE_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt - name: Package (installer) shell: pwsh env: BUILD_DIR: build INSTALL_DIR: install NSCURL_VERSION: "v24.9.26.122" NSCURL_SHA256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" run: | New-Item -Name NSISPlugins -ItemType Directory Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/"${{ env.NSCURL_VERSION }}"/NScurl.zip -OutFile NSISPlugins\NScurl.zip $nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash if ( $nscurl_hash -ne "${{ env.nscurl_sha256 }}") { echo "::error:: NSCurl.zip sha256 mismatch" exit 1 } Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl cd ${{ env.INSTALL_DIR }} makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi" - name: Sign installer if: ${{ env.CI_HAS_ACCESS_TO_AZURE != '' && inputs.azure-client-id != '' }} uses: azure/artifact-signing-action@v1 with: endpoint: https://eus.codesigning.azure.net/ trusted-signing-account-name: PrismLauncher certificate-profile-name: PrismLauncher files: | ${{ github.workspace }}\PrismLauncher-Setup.exe # recommended in https://github.com/Azure/artifact-signing-action#timestamping-1 timestamp-rfc3161: 'http://timestamp.acs.microsoft.com' timestamp-digest: 'SHA256' # TODO(@getchoo): Is this all really needed??? # https://github.com/Azure/trusted-signing-action/blob/fc390cf8ed0f14e248a542af1d838388a47c7a7c/docs/OIDC.md exclude-environment-credential: true exclude-workload-identity-credential: true exclude-managed-identity-credential: true exclude-shared-token-cache-credential: true exclude-visual-studio-credential: true exclude-visual-studio-code-credential: true exclude-azure-cli-credential: false exclude-azure-powershell-credential: true exclude-azure-developer-cli-credential: true exclude-interactive-browser-credential: true - name: Upload binary zip uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-${{ inputs.version }}-${{ inputs.build-type }} path: install/** - name: Upload portable zip uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-Portable-${{ inputs.version }}-${{ inputs.build-type }} path: install-portable/** - name: Upload installer uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-Setup-${{ inputs.version }}-${{ inputs.build-type }} path: PrismLauncher-Setup.exe PrismLauncher-11.0.2/.github/actions/package/linux/0000755000175100017510000000000015166745067021530 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/package/linux/action.yml0000644000175100017510000001407615166745067023540 0ustar runnerrunnername: Package for Linux description: Create Linux packages for Prism Launcher inputs: version: description: Launcher version required: true build-type: description: Type for the build required: true default: Debug artifact-name: description: Name of the uploaded artifact required: true default: Linux qt-version: description: Version of Qt to use required: true gpg-private-key: description: Private key for AppImage signing required: false gpg-private-key-id: description: ID for the gpg-private-key, to select the signing key required: false runs: using: composite steps: - name: Cleanup Qt installation on Linux shell: bash run: | rm -rf "$QT_PLUGIN_PATH"/printsupport rm -rf "$QT_PLUGIN_PATH"/sqldrivers rm -rf "$QT_PLUGIN_PATH"/help rm -rf "$QT_PLUGIN_PATH"/designer rm -rf "$QT_PLUGIN_PATH"/qmltooling rm -rf "$QT_PLUGIN_PATH"/qmlls rm -rf "$QT_PLUGIN_PATH"/qmllint rm -rf "$QT_PLUGIN_PATH"/platformthemes/libqgtk3.so - name: Setup build variables shell: bash run: | # Fixup architecture naming for AppImages dpkg_arch="$(dpkg-architecture -q DEB_HOST_ARCH_CPU)" case "$dpkg_arch" in "amd64") APPIMAGE_ARCH="x86_64" ;; "arm64") APPIMAGE_ARCH="aarch64" ;; *) echo "# 🚨 The Debian architecture \"$deb_arch\" is not recognized!" >> "$GITHUB_STEP_SUMMARY" exit 1 ;; esac echo "APPIMAGE_ARCH=$APPIMAGE_ARCH" >> "$GITHUB_ENV" # Used for the file paths of libraries echo "DEB_HOST_MULTIARCH=$(dpkg-architecture -q DEB_HOST_MULTIARCH)" >> "$GITHUB_ENV" - name: Package AppImage shell: bash env: VERSION: ${{ github.ref_type == 'tag' && github.ref_name || inputs.version }} BUILD_DIR: build INSTALL_APPIMAGE_DIR: install-appdir GPG_PRIVATE_KEY: ${{ inputs.gpg-private-key }} run: | cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_APPIMAGE_DIR }} if [ '${{ inputs.gpg-private-key-id }}' != '' ]; then echo "$GPG_PRIVATE_KEY" > privkey.asc gpg --import privkey.asc gpg --export --armor ${{ inputs.gpg-private-key-id }} > pubkey.asc else echo ":warning: Skipped code signing for Linux AppImage, as gpg key was not present." >> $GITHUB_STEP_SUMMARY fi sharun lib4bin \ --hard-links \ --with-hooks \ --dst-dir "$INSTALL_APPIMAGE_DIR" \ "$INSTALL_APPIMAGE_DIR"/bin/* "$QT_PLUGIN_PATH"/*/*.so cp ~/bin/AppImageUpdate.AppImage "$INSTALL_APPIMAGE_DIR"/bin/ # FIXME(@getchoo): gamemode doesn't seem to be very portable with DBus. Find a way to make it work! find "$INSTALL_APPIMAGE_DIR" -name '*gamemode*' -exec rm {} + #disable OpenGL and Vulkan launcher features until https://github.com/VHSgunzo/sharun/issues/35 echo "PRISMLAUNCHER_DISABLE_GLVULKAN=1" >> "$INSTALL_APPIMAGE_DIR"/.env #makes the launcher use portals for file picking echo "QT_QPA_PLATFORMTHEME=xdgdesktopportal" >> "$INSTALL_APPIMAGE_DIR"/.env ln -s org.prismlauncher.PrismLauncher.metainfo.xml "$INSTALL_APPIMAGE_DIR"/share/metainfo/org.prismlauncher.PrismLauncher.appdata.xml ln -s share/applications/org.prismlauncher.PrismLauncher.desktop "$INSTALL_APPIMAGE_DIR" ln -s share/icons/hicolor/256x256/apps/org.prismlauncher.PrismLauncher.png "$INSTALL_APPIMAGE_DIR" mv "$INSTALL_APPIMAGE_DIR"/{sharun,AppRun} ls -la "$INSTALL_APPIMAGE_DIR" if [[ "${{ github.ref_type }}" == "tag" ]]; then APPIMAGE_DEST="PrismLauncher-Linux-$APPIMAGE_ARCH.AppImage" else APPIMAGE_DEST="PrismLauncher-Linux-$VERSION-${{ inputs.build-type }}-$APPIMAGE_ARCH.AppImage" fi mkappimage \ --updateinformation "gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|PrismLauncher-Linux-$APPIMAGE_ARCH.AppImage.zsync" \ "$INSTALL_APPIMAGE_DIR" \ "$APPIMAGE_DEST" - name: Package portable tarball shell: bash env: BUILD_DIR: build INSTALL_PORTABLE_DIR: install-portable run: | cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable sharun lib4bin \ --with-hooks \ --hard-links \ --dst-dir "$INSTALL_PORTABLE_DIR" \ "$INSTALL_PORTABLE_DIR"/bin/* "$QT_PLUGIN_PATH"/*/*.so # FIXME(@getchoo): gamemode doesn't seem to be very portable with DBus. Find a way to make it work! find "$INSTALL_PORTABLE_DIR" -name '*gamemode*' -exec rm {} + for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f -o -type l); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt cd ${{ env.INSTALL_PORTABLE_DIR }} tar -czf ../PrismLauncher-portable.tar.gz * - name: Upload binary tarball uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-Qt6-Portable-${{ inputs.version }}-${{ inputs.build-type }} path: PrismLauncher-portable.tar.gz - name: Upload AppImage uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ runner.os }}-${{ inputs.version }}-${{ inputs.build-type }}-${{ env.APPIMAGE_ARCH }}.AppImage path: PrismLauncher-${{ runner.os }}-*${{ env.APPIMAGE_ARCH }}.AppImage - name: Upload AppImage Zsync uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ runner.os }}-${{ inputs.version }}-${{ inputs.build-type }}-${{ env.APPIMAGE_ARCH }}.AppImage.zsync path: PrismLauncher-${{ runner.os }}-*${{ env.APPIMAGE_ARCH }}.AppImage.zsync PrismLauncher-11.0.2/.github/actions/package/macos/0000755000175100017510000000000015166745067021473 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/package/macos/action.yml0000644000175100017510000001266415166745067023504 0ustar runnerrunnername: Package for macOS description: Create a macOS package for Prism Launcher inputs: version: description: Launcher version required: true build-type: description: Type for the build required: true default: Debug artifact-name: description: Name of the uploaded artifact required: true default: macOS apple-codesign-cert: description: Certificate for signing macOS builds required: false apple-codesign-password: description: Password for signing macOS builds required: false apple-codesign-id: description: Certificate ID for signing macOS builds required: false apple-notarize-apple-id: description: Apple ID used for notarizing macOS builds required: false apple-notarize-team-id: description: Team ID used for notarizing macOS builds required: false apple-notarize-password: description: Password used for notarizing macOS builds required: false sparkle-ed25519-key: description: Private key for signing Sparkle updates required: false runs: using: composite steps: - name: Fetch codesign certificate shell: bash run: | echo '${{ inputs.apple-codesign-cert }}' | base64 --decode > codesign.p12 if [ -n '${{ inputs.apple-codesign-id }}' ]; then security create-keychain -p '${{ inputs.apple-codesign-password }}' build.keychain security default-keychain -s build.keychain security unlock-keychain -p '${{ inputs.apple-codesign-password }}' build.keychain security import codesign.p12 -k build.keychain -P '${{ inputs.apple-codesign-password }}' -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '${{ inputs.apple-codesign-password }}' build.keychain else echo ":warning: Using ad-hoc code signing for macOS, as certificate was not present." >> $GITHUB_STEP_SUMMARY fi - name: Package shell: bash env: BUILD_DIR: build INSTALL_DIR: install run: | cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} cd ${{ env.INSTALL_DIR }} chmod +x "PrismLauncher.app/Contents/MacOS/prismlauncher" if [ -n '${{ inputs.apple-codesign-id }}' ]; then APPLE_CODESIGN_ID='${{ inputs.apple-codesign-id }}' ENTITLEMENTS_FILE='../program_info/App.entitlements' else APPLE_CODESIGN_ID='-' ENTITLEMENTS_FILE='../program_info/AdhocSignedApp.entitlements' fi sudo codesign --sign "$APPLE_CODESIGN_ID" --deep --force --entitlements "$ENTITLEMENTS_FILE" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher" mv "PrismLauncher.app" "Prism Launcher.app" - name: Notarize shell: bash env: INSTALL_DIR: install run: | cd ${{ env.INSTALL_DIR }} if [ -n '${{ inputs.apple-notarize-password }}' ]; then ditto -c -k --sequesterRsrc --keepParent "Prism Launcher.app" ../PrismLauncher.zip xcrun notarytool submit ../PrismLauncher.zip \ --wait --progress \ --apple-id '${{ inputs.apple-notarize-apple-id }}' \ --team-id '${{ inputs.apple-notarize-team-id }}' \ --password '${{ inputs.apple-notarize-password }}' xcrun stapler staple "Prism Launcher.app" else echo ":warning: Skipping notarization as credentials are not present." >> $GITHUB_STEP_SUMMARY fi ditto -c -k --sequesterRsrc --keepParent "Prism Launcher.app" ../PrismLauncher.zip - name: Create DMG shell: bash env: INSTALL_DIR: install run: | cd ${{ env.INSTALL_DIR }} mkdir -p src cp -R "Prism Launcher.app" src/ ln -s /Applications src/ hdiutil create \ -volname "Prism Launcher ${{ inputs.version }}" \ -srcfolder src \ -ov -format ULMO \ "../PrismLauncher.dmg" - name: Make Sparkle signature shell: bash run: | if [ '${{ inputs.sparkle-ed25519-key }}' != '' ]; then echo '${{ inputs.sparkle-ed25519-key }}' > ed25519-priv.pem signature_zip=$(/opt/homebrew/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.zip -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) signature_dmg=$(/opt/homebrew/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.dmg -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) rm ed25519-priv.pem cat >> $GITHUB_STEP_SUMMARY << EOF ### Artifact Information :information_source: - :memo: Sparkle Signature (ed25519): \`$signature_zip\` (ZIP) - :memo: Sparkle Signature (ed25519): \`$signature_dmg\` (DMG) EOF else cat >> $GITHUB_STEP_SUMMARY << EOF ### Artifact Information :information_source: - :warning: Sparkle Signature (ed25519): No private key available (likely a pull request or fork) EOF fi - name: Upload binary tarball uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-${{ inputs.version }}-${{ inputs.build-type }} path: PrismLauncher.zip - name: Upload disk image uses: actions/upload-artifact@v7 with: name: PrismLauncher-${{ inputs.artifact-name }}-${{ inputs.version }}-${{ inputs.build-type }}.dmg path: PrismLauncher.dmg PrismLauncher-11.0.2/.github/actions/setup-dependencies/0000755000175100017510000000000015166745067022562 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/setup-dependencies/action.yml0000644000175100017510000000467215166745067024573 0ustar runnerrunnername: Setup Dependencies description: Install and setup dependencies for building Prism Launcher inputs: build-type: description: Type for the build required: true default: Debug artifact-name: description: Name of the uploaded artifact required: true msystem: description: MSYS2 subsystem to use required: false vcvars-arch: description: Visual Studio architecture to use required: false qt-architecture: description: Qt architecture required: false qt-version: description: Version of Qt to use required: true outputs: build-type: description: Type of build used value: ${{ inputs.build-type }} qt-version: description: Version of Qt used value: ${{ inputs.qt-version }} runs: using: composite steps: - name: Setup Linux dependencies if: ${{ runner.os == 'Linux' }} uses: ./.github/actions/setup-dependencies/linux - name: Setup macOS dependencies if: ${{ runner.os == 'macOS' }} uses: ./.github/actions/setup-dependencies/macos with: build-type: ${{ inputs.build-type }} - name: Setup Windows dependencies if: ${{ runner.os == 'Windows' }} uses: ./.github/actions/setup-dependencies/windows with: build-type: ${{ inputs.build-type }} msystem: ${{ inputs.msystem }} vcvars-arch: ${{ inputs.vcvars-arch }} # TODO(@getchoo): Get this working on MSYS2! - name: Setup ccache if: ${{ (runner.os != 'Windows' || inputs.msystem == '') && inputs.build-type == 'Debug' }} uses: hendrikmuhs/ccache-action@v1.2.22 with: variant: sccache create-symlink: ${{ runner.os != 'Windows' }} key: ${{ runner.os }}-${{ runner.arch }}-${{ inputs.artifact-name }}-sccache - name: Use ccache on debug builds if: ${{ inputs.build-type == 'Debug' }} shell: bash env: # Only use ccache on MSYS2 CCACHE_VARIANT: ${{ (runner.os == 'Windows' && inputs.msystem != '') && 'ccache' || 'sccache' }} run: | echo "CMAKE_C_COMPILER_LAUNCHER=$CCACHE_VARIANT" >> "$GITHUB_ENV" echo "CMAKE_CXX_COMPILER_LAUNCHER=$CCACHE_VARIANT" >> "$GITHUB_ENV" - name: Install Qt if: ${{ inputs.msystem == '' }} uses: jurplel/install-qt-action@v4 with: aqtversion: "==3.1.*" version: ${{ inputs.qt-version }} modules: qtimageformats qtnetworkauth cache: ${{ inputs.build-type == 'Debug' }} PrismLauncher-11.0.2/.github/actions/setup-dependencies/windows/0000755000175100017510000000000015166745067024254 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/setup-dependencies/windows/action.yml0000644000175100017510000000616715166745067026266 0ustar runnerrunnername: Setup Windows Dependencies description: Install and setup dependencies for building Prism Launcher inputs: build-type: description: Type for the build required: true default: Debug msystem: description: MSYS2 subsystem to use required: false vcvars-arch: description: Visual Studio architecture to use required: true default: amd64 runs: using: composite steps: # NOTE: Installed on MinGW as well for SignTool - name: Enter VS Developer shell if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ inputs.vcvars-arch }} vsversion: 2022 - name: Setup Java (MSVC) uses: actions/setup-java@v5 with: # NOTE(@getchoo): We should probably stay on Zulu. # Temurin doesn't have Java 17 builds for WoA distribution: zulu java-version: 17 - name: Setup vcpkg cache (MSVC) if: ${{ inputs.msystem == '' && inputs.build-type == 'Debug' }} shell: pwsh env: USERNAME: ${{ github.repository_owner }} GITHUB_TOKEN: ${{ github.token }} FEED_URL: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json run: | .$(vcpkg fetch nuget) ` sources add ` -Source "$env:FEED_URL" ` -StorePasswordInClearText ` -Name GitHubPackages ` -UserName "$env:USERNAME" ` -Password "$env:GITHUB_TOKEN" .$(vcpkg fetch nuget) ` setapikey "$env:GITHUB_TOKEN" ` -Source "$env:FEED_URL" "VCPKG_BINARY_SOURCES=clear;nuget,$env:FEED_URL,readwrite" | Out-File -Append $env:GITHUB_ENV - name: Setup vcpkg environment (MSVC) if: ${{ inputs.msystem == '' }} shell: bash run: | echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> "$GITHUB_ENV" - name: Setup MSYS2 (MinGW) if: ${{ inputs.msystem != '' }} uses: msys2/setup-msys2@v2 with: msystem: ${{ inputs.msystem }} update: true install: >- git pacboy: >- toolchain:p ccache:p cmake:p extra-cmake-modules:p ninja:p qt6-base:p qt6-svg:p qt6-imageformats:p qt6-networkauth:p cmark:p qrencode:p tomlplusplus:p libarchive:p - name: List pacman packages (MinGW) if: ${{ inputs.msystem != '' }} shell: msys2 {0} run: | pacman -Qe - name: Retrieve ccache cache (MinGW) if: ${{ inputs.msystem != '' && inputs.build-type == 'Debug' }} uses: actions/cache@v5.0.4 with: path: '${{ github.workspace }}\.ccache' key: ${{ runner.os }}-mingw-w64-ccache-${{ github.run_id }} restore-keys: | ${{ runner.os }}-mingw-w64-ccache - name: Setup ccache (MinGW) if: ${{ inputs.msystem != '' && inputs.build-type == 'Debug' }} shell: msys2 {0} run: | ccache --set-config=cache_dir='${{ github.workspace }}\.ccache' ccache --set-config=max_size='500M' ccache --set-config=compression=true ccache -p # Show config PrismLauncher-11.0.2/.github/actions/setup-dependencies/linux/0000755000175100017510000000000015166745067023721 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/setup-dependencies/linux/action.yml0000644000175100017510000000336515166745067025730 0ustar runnerrunnername: Setup Linux dependencies description: Install and setup dependencies for building Prism Launcher runs: using: composite steps: - name: Install host dependencies shell: bash run: | sudo apt-get -y update sudo apt-get -y install \ dpkg-dev \ ninja-build extra-cmake-modules pkg-config scdoc \ cmark gamemode-dev libarchive-dev libcmark-dev libqrencode-dev zlib1g-dev \ libxcb-cursor-dev libtomlplusplus-dev libvulkan-dev - name: Setup AppImage tooling shell: bash env: GH_TOKEN: ${{ github.token }} run: | # Determinate AppImage architecture to use dpkg_arch="$(dpkg-architecture -q DEB_HOST_ARCH_CPU)" case "$dpkg_arch" in "amd64") APPIMAGE_ARCH="x86_64" ;; "arm64") APPIMAGE_ARCH="aarch64" ;; *) echo "# 🚨 The Debian architecture \"$deb_arch\" is not recognized!" >> "$GITHUB_STEP_SUMMARY" exit 1 ;; esac gh release download \ --repo VHSgunzo/sharun \ --pattern "sharun-$APPIMAGE_ARCH-aio" \ --output ~/bin/sharun # FIXME!: revert this to probonopd/go-appimage once https://github.com/probonopd/go-appimage/pull/377 is merged! gh release download continuous \ --repo DioEgizio/go-appimage \ --pattern "mkappimage-*-$APPIMAGE_ARCH.AppImage" \ --output ~/bin/mkappimage gh release download \ --repo AppImageCommunity/AppImageUpdate \ --pattern "AppImageUpdate-$APPIMAGE_ARCH.AppImage" \ --output ~/bin/AppImageUpdate.AppImage chmod +x ~/bin/* echo "$HOME/bin" >> "$GITHUB_PATH" PrismLauncher-11.0.2/.github/actions/setup-dependencies/macos/0000755000175100017510000000000015166745067023664 5ustar runnerrunnerPrismLauncher-11.0.2/.github/actions/setup-dependencies/macos/action.yml0000644000175100017510000000245215166745067025667 0ustar runnerrunnername: Setup macOS dependencies inputs: build-type: description: Type for the build required: true default: Debug runs: using: composite steps: - name: Install dependencies shell: bash run: | brew update brew install ninja extra-cmake-modules temurin@17 mono - name: Set JAVA_HOME shell: bash run: | echo "JAVA_HOME=$(/usr/libexec/java_home -v 17)" >> "$GITHUB_ENV" - name: Setup vcpkg cache if: ${{ inputs.build-type == 'Debug' }} shell: bash env: USERNAME: ${{ github.repository_owner }} GITHUB_TOKEN: ${{ github.token }} FEED_URL: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json run: | mono `vcpkg fetch nuget | tail -n 1` \ sources add \ -Source "$FEED_URL" \ -StorePasswordInClearText \ -Name GitHubPackages \ -UserName "$USERNAME" \ -Password "$GITHUB_TOKEN" mono `vcpkg fetch nuget | tail -n 1` \ setapikey "$GITHUB_TOKEN" \ -Source "$FEED_URL" echo "VCPKG_BINARY_SOURCES=clear;nuget,$FEED_URL,readwrite" >> "$GITHUB_ENV" - name: Setup vcpkg environment shell: bash run: | echo "VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT" >> "$GITHUB_ENV" PrismLauncher-11.0.2/.github/FUNDING.yml0000644000175100017510000000003715166745067017153 0ustar runnerrunneropen_collective: prismlauncher PrismLauncher-11.0.2/.github/dco.yml0000644000175100017510000000005415166745067016625 0ustar runnerrunnerallowRemediationCommits: individual: true PrismLauncher-11.0.2/.github/workflows/0000755000175100017510000000000015166745067017373 5ustar runnerrunnerPrismLauncher-11.0.2/.github/workflows/merge-blocking-pr.yml0000644000175100017510000000424115166745067023423 0ustar runnerrunnername: Merged Blocking Pull Request Automation on: pull_request_target: types: - closed workflow_dispatch: inputs: pr_id: description: Local Pull Request number to work on required: true type: number permissions: {} jobs: update-blocked-status: name: Update Blocked Status runs-on: ubuntu-slim # a pr that was a `blocking:` label was merged. # find the open pr's it was blocked by and trigger a refresh of their state if: "${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'status: blocking') }}" steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v3 with: app-id: ${{ vars.PULL_REQUEST_APP_ID }} private-key: ${{ secrets.PULL_REQUEST_APP_PRIVATE_KEY }} - name: Gather Dependent PRs id: gather_deps env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} PR_NUMBER: ${{ inputs.pr_id || github.event.pull_request.number }} run: | blocked_prs=$( gh -R ${{ github.repository }} pr list --label 'status: blocked' --json 'number,body' \ | jq -c --argjson pr "$PR_NUMBER" ' reduce ( .[] | select( .body | scan("(?:blocked (?:by|on)|stacked on):? #([0-9]+)") | map(tonumber) | any(.[]; . == $pr) )) as $i ([]; . + [$i]) ' ) { echo "deps=$blocked_prs" echo "numdeps=$(jq -r '. | length' <<< "$blocked_prs")" } >> "$GITHUB_OUTPUT" - name: Trigger Blocked PR Workflows for Dependants if: fromJSON(steps.gather_deps.outputs.numdeps) > 0 env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} DEPS: ${{ steps.gather_deps.outputs.deps }} run: | while read -r pr ; do gh -R ${{ github.repository }} workflow run 'blocked-prs.yml' -r "${{ github.ref_name }}" -f pr_id="$pr" done < <(jq -c '.[].number' <<< "$DEPS") PrismLauncher-11.0.2/.github/workflows/codeql.yml0000644000175100017510000000226415166745067021371 0ustar runnerrunnername: "CodeQL Code Scanning" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: merge_group: types: [checks_requested] pull_request: workflow_dispatch: permissions: {} jobs: CodeQL: runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - name: Checkout repository uses: actions/checkout@v6 with: submodules: "true" - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: config-file: ./.github/codeql/codeql-config.yml queries: security-and-quality languages: cpp, java - name: Setup dependencies uses: ./.github/actions/setup-dependencies with: build-type: Debug qt-version: 6.4.3 - name: Configure and Build run: | cmake --preset linux -DLauncher_USE_PCH=OFF cmake --build --preset linux --config Debug - name: Run tests run: | ctest --preset linux --build-config Debug --extra-verbose --output-on-failure - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 PrismLauncher-11.0.2/.github/workflows/release.yml0000644000175100017510000001320015166745067021532 0ustar runnerrunnername: Build Application and Make Release on: push: tags: - "*" permissions: {} jobs: build_release: name: Build Release uses: ./.github/workflows/build.yml permissions: contents: read # Required for Azure Trusted Signing id-token: write # Required for vcpkg binary cache packages: write with: build-type: Release environment: Release secrets: inherit create_release: needs: build_release permissions: contents: write runs-on: ubuntu-slim outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: Checkout uses: actions/checkout@v6 with: submodules: "true" path: "PrismLauncher-source" - name: Download artifacts uses: actions/download-artifact@v8 - name: Grab and store version run: | tag_name=$(echo ${{ github.ref }} | grep -oE "[^/]+$") echo "VERSION=$tag_name" >> $GITHUB_ENV - name: Package artifacts properly run: | mv ${{ github.workspace }}/PrismLauncher-source PrismLauncher-${{ env.VERSION }} mv PrismLauncher-Linux-Qt6-Portable*/PrismLauncher-portable.tar.gz PrismLauncher-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz mv PrismLauncher-Linux-aarch64-Qt6-Portable*/PrismLauncher-portable.tar.gz PrismLauncher-Linux-aarch64-Qt6-Portable-${{ env.VERSION }}.tar.gz mv PrismLauncher-*.AppImage/PrismLauncher-*-x86_64.AppImage PrismLauncher-Linux-x86_64.AppImage mv PrismLauncher-*.AppImage.zsync/PrismLauncher-*-x86_64.AppImage.zsync PrismLauncher-Linux-x86_64.AppImage.zsync mv PrismLauncher-*.AppImage/PrismLauncher-*-aarch64.AppImage PrismLauncher-Linux-aarch64.AppImage mv PrismLauncher-*.AppImage.zsync/PrismLauncher-*-aarch64.AppImage.zsync PrismLauncher-Linux-aarch64.AppImage.zsync mv PrismLauncher-macOS*/PrismLauncher.zip PrismLauncher-macOS-${{ env.VERSION }}.zip mv PrismLauncher-macOS*/PrismLauncher.dmg PrismLauncher-macOS-${{ env.VERSION }}.dmg tar --exclude='.git' -czf PrismLauncher-${{ env.VERSION }}.tar.gz PrismLauncher-${{ env.VERSION }} for d in PrismLauncher-Windows-MSVC*; do cd "${d}" || continue LEGACY="$(echo -n ${d} | grep -o Legacy || true)" ARM64="$(echo -n ${d} | grep -o arm64 || true)" INST="$(echo -n ${d} | grep -o Setup || true)" PORT="$(echo -n ${d} | grep -o Portable || true)" NAME="PrismLauncher-Windows-MSVC" test -z "${LEGACY}" || NAME="${NAME}-Legacy" test -z "${ARM64}" || NAME="${NAME}-arm64" test -z "${PORT}" || NAME="${NAME}-Portable" test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" * cd .. done for d in PrismLauncher-Windows-MinGW-w64*; do cd "${d}" || continue INST="$(echo -n ${d} | grep -o Setup || true)" PORT="$(echo -n ${d} | grep -o Portable || true)" NAME="PrismLauncher-Windows-MinGW-w64" test -z "${PORT}" || NAME="${NAME}-Portable" test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" * cd .. done for d in PrismLauncher-Windows-MinGW-arm64*; do cd "${d}" || continue INST="$(echo -n ${d} | grep -o Setup || true)" PORT="$(echo -n ${d} | grep -o Portable || true)" NAME="PrismLauncher-Windows-MinGW-arm64" test -z "${PORT}" || NAME="${NAME}-Portable" test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" * cd .. done - name: Create release id: create_release uses: softprops/action-gh-release@v2 with: token: ${{ secrets.GITHUB_TOKEN }} tag_name: ${{ github.ref }} name: Prism Launcher ${{ env.VERSION }} draft: true prerelease: false fail_on_unmatched_files: true files: | PrismLauncher-Linux-x86_64.AppImage PrismLauncher-Linux-x86_64.AppImage.zsync PrismLauncher-Linux-aarch64.AppImage PrismLauncher-Linux-aarch64.AppImage.zsync PrismLauncher-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz PrismLauncher-Linux-aarch64-Qt6-Portable-${{ env.VERSION }}.tar.gz PrismLauncher-Windows-MinGW-w64-${{ env.VERSION }}.zip PrismLauncher-Windows-MinGW-w64-Portable-${{ env.VERSION }}.zip PrismLauncher-Windows-MinGW-w64-Setup-${{ env.VERSION }}.exe PrismLauncher-Windows-MinGW-arm64-${{ env.VERSION }}.zip PrismLauncher-Windows-MinGW-arm64-Portable-${{ env.VERSION }}.zip PrismLauncher-Windows-MinGW-arm64-Setup-${{ env.VERSION }}.exe PrismLauncher-Windows-MSVC-arm64-${{ env.VERSION }}.zip PrismLauncher-Windows-MSVC-arm64-Portable-${{ env.VERSION }}.zip PrismLauncher-Windows-MSVC-arm64-Setup-${{ env.VERSION }}.exe PrismLauncher-Windows-MSVC-${{ env.VERSION }}.zip PrismLauncher-Windows-MSVC-Portable-${{ env.VERSION }}.zip PrismLauncher-Windows-MSVC-Setup-${{ env.VERSION }}.exe PrismLauncher-macOS-${{ env.VERSION }}.zip PrismLauncher-macOS-${{ env.VERSION }}.dmg PrismLauncher-${{ env.VERSION }}.tar.gz PrismLauncher-11.0.2/.github/workflows/backport.yml0000644000175100017510000000232215166745067021722 0ustar runnerrunnername: Backport on: pull_request_target: types: [closed, labeled] # WARNING: # When extending this action, be aware that $GITHUB_TOKEN allows write access to # the GitHub repository. This means that it should not evaluate user input in a # way that allows code injection. permissions: {} jobs: backport: permissions: contents: write # for korthout/backport-action to create branch pull-requests: write # for korthout/backport-action to create PR to backport actions: write # for korthout/backport-action to create PR with workflow changes name: Backport Pull Request if: github.repository_owner == 'PrismLauncher' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name)) runs-on: ubuntu-slim steps: - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} - name: Create backport PRs uses: korthout/backport-action@v4.3.0 with: # Config README: https://github.com/korthout/backport-action#backport-action pull_description: |- Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}. PrismLauncher-11.0.2/.github/workflows/update-flake.yml0000644000175100017510000000143615166745067022464 0ustar runnerrunnername: Update Flake Lockfile on: schedule: # run weekly on sunday - cron: "0 0 * * 0" workflow_dispatch: permissions: {} jobs: update-flake: if: github.repository == 'PrismLauncher/PrismLauncher' permissions: contents: write pull-requests: write runs-on: ubuntu-slim steps: - uses: actions/checkout@v6 - uses: cachix/install-nix-action@96951a368ba55167b55f1c916f7d416bac6505fe # v31 - uses: DeterminateSystems/update-flake-lock@v28 with: commit-msg: "chore(nix): update lockfile" pr-title: "chore(nix): update lockfile" pr-labels: | platform: Linux area: packaging complexity: low priority: low type: robot changelog:omit PrismLauncher-11.0.2/.github/workflows/blocked-prs.yml0000644000175100017510000002426615166745067022335 0ustar runnerrunnername: Blocked/Stacked Pull Requests Automation on: pull_request_target: types: - opened - reopened - edited - synchronize workflow_dispatch: inputs: pr_id: description: Local Pull Request number to work on required: true type: number permissions: {} jobs: blocked_status: name: Check Blocked Status runs-on: ubuntu-slim steps: - name: Generate token id: generate-token uses: actions/create-github-app-token@v3 with: app-id: ${{ vars.PULL_REQUEST_APP_ID }} private-key: ${{ secrets.PULL_REQUEST_APP_PRIVATE_KEY }} - name: Setup From Dispatch Event if: github.event_name == 'workflow_dispatch' id: dispatch_event_setup env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} PR_NUMBER: ${{ inputs.pr_id }} run: | # setup env for the rest of the workflow OWNER=$(dirname "${{ github.repository }}") REPO=$(basename "${{ github.repository }}") PR_JSON=$( gh api \ -H "Accept: application/vnd.github.raw+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "/repos/$OWNER/$REPO/pulls/$PR_NUMBER" ) echo "PR_JSON=$PR_JSON" >> "$GITHUB_ENV" - name: Setup Environment id: env_setup env: EVENT_PR_JSON: ${{ toJSON(github.event.pull_request) }} run: | # setup env for the rest of the workflow PR_JSON=${PR_JSON:-"$EVENT_PR_JSON"} { echo "REPO=$(jq -r '.base.repo.name' <<< "$PR_JSON")" echo "OWNER=$(jq -r '.base.repo.owner.login' <<< "$PR_JSON")" echo "PR_NUMBER=$(jq -r '.number' <<< "$PR_JSON")" echo "JOB_DATA=$(jq -c ' { "repo": .base.repo.name, "owner": .base.repo.owner.login, "repoUrl": .base.repo.html_url, "prNumber": .number, "prHeadSha": .head.sha, "prHeadLabel": .head.label, "prBody": (.body // ""), "prLabels": (reduce .labels[].name as $l ([]; . + [$l])) } ' <<< "$PR_JSON")" } >> "$GITHUB_ENV" - name: Find Blocked/Stacked PRs in body id: pr_ids run: | prs=$( jq -c ' .prBody as $body | ( $body | reduce ( . | scan("[Bb]locked (?:[Bb]y|[Oo]n):? #([0-9]+)") | map({ "type": "Blocked on", "number": ( . | tonumber ) }) ) as $i ([]; . + [$i[]]) ) as $bprs | ( $body | reduce ( . | scan("[Ss]tacked [Oo]n:? #([0-9]+)") | map({ "type": "Stacked on", "number": ( . | tonumber ) }) ) as $i ([]; . + [$i[]]) ) as $sprs | ($bprs + $sprs) as $prs | { "blocking": $prs, "numBlocking": ( $prs | length), } ' <<< "$JOB_DATA" ) echo "prs=$prs" >> "$GITHUB_OUTPUT" - name: Collect Blocked PR Data id: blocking_data if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} BLOCKING_PRS: ${{ steps.pr_ids.outputs.prs }} run: | blocked_pr_data=$( while read -r pr_data ; do gh api \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "/repos/$OWNER/$REPO/pulls/$(jq -r '.number' <<< "$pr_data")" \ | jq -c --arg type "$(jq -r '.type' <<< "$pr_data")" \ ' . | { "type": $type, "number": .number, "merged": .merged, "state": (if .state == "open" then "Open" elif .merged then "Merged" else "Closed" end), "labels": (reduce .labels[].name as $l ([]; . + [$l])), "basePrUrl": .html_url, "baseRepoName": .head.repo.name, "baseRepoOwner": .head.repo.owner.login, "baseRepoUrl": .head.repo.html_url, "baseSha": .head.sha, "baseRefName": .head.ref, } ' done < <(jq -c '.blocking[]' <<< "$BLOCKING_PRS") | jq -c -s ) { echo "data=$blocked_pr_data"; echo "all_merged=$(jq -r 'all(.[] | (.type == "Stacked on" and .merged) or (.type == "Blocked on" and (.state != "Open")); .)' <<< "$blocked_pr_data")"; echo "current_blocking=$(jq -c 'map( select( (.type == "Stacked on" and (.merged | not)) or (.type == "Blocked on" and (.state == "Open")) ) | .number )' <<< "$blocked_pr_data" )"; } >> "$GITHUB_OUTPUT" - name: Add 'blocked' Label if Missing id: label_blocked if: "(fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0) && !contains(fromJSON(env.JOB_DATA).prLabels, 'status: blocked') && !fromJSON(steps.blocking_data.outputs.all_merged)" continue-on-error: true env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh -R ${{ github.repository }} issue edit --add-label 'status: blocked' "$PR_NUMBER" - name: Remove 'blocked' Label if All Dependencies Are Merged id: unlabel_blocked if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 && fromJSON(steps.blocking_data.outputs.all_merged) continue-on-error: true env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} run: | gh -R ${{ github.repository }} issue edit --remove-label 'status: blocked' "$PR_NUMBER" - name: Apply 'blocking' Label to Unmerged Dependencies id: label_blocking if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 continue-on-error: true env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} BLOCKING_ISSUES: ${{ steps.blocking_data.outputs.current_blocking }} run: | while read -r pr ; do gh -R ${{ github.repository }} issue edit --add-label 'status: blocking' "$pr" || true done < <(jq -c '.[]' <<< "$BLOCKING_ISSUES") - name: Apply Blocking PR Status Check id: blocked_check if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 continue-on-error: true env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} BLOCKING_DATA: ${{ steps.blocking_data.outputs.data }} run: | pr_head_sha=$(jq -r '.prHeadSha' <<< "$JOB_DATA") # create commit Status, overwrites previous identical context while read -r pr_data ; do DESC=$( jq -r 'if .type == "Stacked on" then "Stacked PR #" + (.number | tostring) + " is " + (if .merged then "" else "not yet " end) + "merged" else "Blocking PR #" + (.number | tostring) + " is " + (if .state == "Open" then "" else "not yet " end) + "merged or closed" end ' <<< "$pr_data" ) gh api \ --method POST \ -H "Accept: application/vnd.github+json" \ -H "X-GitHub-Api-Version: 2022-11-28" \ "/repos/${OWNER}/${REPO}/statuses/${pr_head_sha}" \ -f "state=$(jq -r 'if (.type == "Stacked on" and .merged) or (.type == "Blocked on" and (.state != "Open")) then "success" else "failure" end' <<< "$pr_data")" \ -f "target_url=$(jq -r '.basePrUrl' <<< "$pr_data" )" \ -f "description=$DESC" \ -f "context=ci/blocking-pr-check:$(jq '.number' <<< "$pr_data")" done < <(jq -c '.[]' <<< "$BLOCKING_DATA") - name: Context Comment id: generate-comment if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 continue-on-error: true env: BLOCKING_DATA: ${{ steps.blocking_data.outputs.data }} run: | COMMENT_PATH="$(pwd)/temp_comment_file.txt" echo '

PR Dependencies :pushpin:

' > "$COMMENT_PATH" echo >> "$COMMENT_PATH" pr_head_label=$(jq -r '.prHeadLabel' <<< "$JOB_DATA") while read -r pr_data ; do base_pr=$(jq -r '.number' <<< "$pr_data") base_ref_name=$(jq -r '.baseRefName' <<< "$pr_data") base_repo_owner=$(jq -r '.baseRepoOwner' <<< "$pr_data") base_repo_name=$(jq -r '.baseRepoName' <<< "$pr_data") compare_url="https://github.com/$base_repo_owner/$base_repo_name/compare/$base_ref_name...$pr_head_label" status=$(jq -r ' if .type == "Stacked on" then if .merged then ":heavy_check_mark: Merged" else ":x: Not Merged (" + .state + ")" end else if .state != "Open" then ":white_check_mark: " + .state else ":x: Open" end end ' <<< "$pr_data") type=$(jq -r '.type' <<< "$pr_data") echo " - $type #$base_pr $status [(compare)]($compare_url)" >> "$COMMENT_PATH" done < <(jq -c '.[]' <<< "$BLOCKING_DATA") { echo 'body<> "$GITHUB_OUTPUT" - name: 💬 PR Comment if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 continue-on-error: true env: GH_TOKEN: ${{ steps.generate-token.outputs.token }} COMMENT_BODY: ${{ steps.generate-comment.outputs.body }} run: | gh -R ${{ github.repository }} issue comment "$PR_NUMBER" \ --body "$COMMENT_BODY" \ --create-if-none \ --edit-last PrismLauncher-11.0.2/.github/workflows/nix.yml0000644000175100017510000000555715166745067020730 0ustar runnerrunnername: Nix concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: push: branches: - "develop" - "release-*" tags: - "*" paths: # File types - "**.cpp" - "**.h" - "**.java" - "**.ui" - "**.md" # Build files - "**.nix" - "nix/**" - "flake.lock" # Directories - "buildconfig/**" - "cmake/**" - "launcher/**" - "libraries/**" - "program_info/**" - "tests/**" # Files - "CMakeLists.txt" # Workflows - ".github/workflows/nix.yml" pull_request: paths: # File types - "**.cpp" - "**.h" - "**.java" - "**.ui" - "**.md" # Build files - "**.nix" - "nix/**" - "flake.lock" # Directories - "buildconfig/**" - "cmake/**" - "launcher/**" - "libraries/**" - "program_info/**" - "tests/**" # Files - "CMakeLists.txt" # Workflows - ".github/workflows/nix.yml" workflow_dispatch: permissions: {} env: DEBUG: ${{ github.ref_type != 'tag' }} jobs: build: name: Build (${{ matrix.system }}) permissions: contents: read strategy: fail-fast: false matrix: include: - os: ubuntu-22.04 system: x86_64-linux - os: ubuntu-22.04-arm system: aarch64-linux - os: macos-26 system: aarch64-darwin runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v6 - name: Install Nix uses: cachix/install-nix-action@v31 # For PRs - name: Setup Nix Magic Cache if: ${{ github.event_name == 'pull_request' }} uses: DeterminateSystems/magic-nix-cache-action@v13 with: diagnostic-endpoint: "" use-flakehub: false # For in-tree builds - name: Setup Cachix if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} uses: cachix/cachix-action@v17 with: name: prismlauncher authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - name: Run Flake checks run: | nix flake check --print-build-logs --show-trace - name: Build debug package if: ${{ env.DEBUG == 'true' }} run: | nix build \ --no-link --print-build-logs --print-out-paths \ .#prismlauncher-debug >> "$GITHUB_STEP_SUMMARY" - name: Build release package if: ${{ env.DEBUG == 'false' }} env: TAG: ${{ github.ref_name }} SYSTEM: ${{ matrix.system }} run: | nix build --no-link --print-out-paths .#prismlauncher \ | tee -a "$GITHUB_STEP_SUMMARY" \ | xargs cachix pin prismlauncher "$TAG"-"$SYSTEM" PrismLauncher-11.0.2/.github/workflows/container.yml0000644000175100017510000001143515166745067022104 0ustar runnerrunnername: Development Container concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: merge_group: types: [checks_requested] pull_request: workflow_dispatch: permissions: {} env: REGISTRY: ghcr.io jobs: build: name: Build (${{ matrix.arch }}) permissions: contents: read packages: write outputs: image-name: ${{ steps.image-name.outputs.image-name }} strategy: fail-fast: false matrix: include: - arch: arm64 os: ubuntu-24.04-arm - arch: amd64 os: ubuntu-24.04-arm runs-on: ${{ matrix.os }} steps: - name: Set image name id: image-name run: | echo "image-name=${REGISTRY}/${GITHUB_REPOSITORY_OWNER,,}/devcontainer" >> "$GITHUB_OUTPUT" - name: Install Podman uses: redhat-actions/podman-install@main # TODO(@getchoo): Always use this when the action properly supports ARM if: ${{ runner.arch == 'X64' || runner.arch == 'X86' }} with: github-token: ${{ github.token }} - name: Checkout repository uses: actions/checkout@v6 - name: Determine metadata for image id: image-metadata uses: docker/metadata-action@v6 with: images: | ${{ steps.image-name.outputs.image-name }} flavor: | latest=false tags: | type=raw,value=latest,enable=${{ github.event.merge_group.base_ref == 'refs/heads/develop' }} type=sha type=sha,format=long type=ref,event=branch type=ref,event=tag - name: Build image id: build-image uses: redhat-actions/buildah-build@v2 with: containerfiles: | ./Containerfile tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} - name: Push image id: push-image if: ${{ github.event_name != 'pull_request' }} uses: redhat-actions/push-to-registry@v2 with: tags: ${{ steps.build-image.outputs.tags }} username: ${{ github.repository_owner }} password: ${{ github.token }} tls-verify: true - name: Export image digest if: ${{ github.event_name != 'pull_request' }} env: DIGEST: ${{ steps.push-image.outputs.digest }} run: | mkdir -p "$RUNNER_TEMP"/digests touch "$RUNNER_TEMP"/digests/"${DIGEST#sha256:}" - name: Upload digest artifact if: ${{ github.event_name != 'pull_request' }} uses: actions/upload-artifact@v7 with: name: digests-${{ matrix.arch }} path: ${{ runner.temp }}/digests/* if-no-files-found: error retention-days: 1 manifest: name: Create manifest needs: [ build ] if: ${{ github.event_name != 'pull_request' }} permissions: contents: read packages: write runs-on: ubuntu-24.04 steps: - name: Download digests uses: actions/download-artifact@v8 with: path: ${{ runner.temp }}/digests pattern: digests-* merge-multiple: true - name: Install Podman # TODO(@getchoo): Always use this when the action properly supports ARM if: ${{ runner.arch == 'X64' || runner.arch == 'X86' }} uses: redhat-actions/podman-install@main with: github-token: ${{ github.token }} - name: Login to registry uses: redhat-actions/podman-login@v1 with: registry: ${{ env.REGISTRY }} username: ${{ github.repository_owner }} password: ${{ github.token }} - name: Determine metadata for manifest id: manifest-metadata uses: docker/metadata-action@v6 with: images: | ${{ needs.build.outputs.image-name }} flavor: | latest=false tags: | type=raw,value=latest,enable=${{ github.event.merge_group.base_ref == 'refs/heads/develop' }} type=sha type=sha,format=long type=ref,event=branch type=ref,event=tag - name: Create manifest list working-directory: ${{ runner.temp }}/digests env: IMAGE_NAME: ${{ needs.build.outputs.image-name }} run: | while read -r tag; do podman manifest create "$tag" \ $(printf "$IMAGE_NAME@sha256:%s " *) done <<< "$DOCKER_METADATA_OUTPUT_TAGS" - name: Push manifest uses: redhat-actions/push-to-registry@v2 with: tags: ${{ steps.manifest-metadata.outputs.tags }} username: ${{ github.repository_owner }} password: ${{ github.token }} tls-verify: true PrismLauncher-11.0.2/.github/workflows/publish.yml0000644000175100017510000000101015166745067021554 0ustar runnerrunnername: Publish on: release: types: [ released ] permissions: {} jobs: winget: name: Winget permissions: contents: read runs-on: ubuntu-slim steps: - name: Publish on Winget uses: vedantmgoyal2009/winget-releaser@v2 with: identifier: PrismLauncher.PrismLauncher version: ${{ github.event.release.tag_name }} installers-regex: 'PrismLauncher-Windows-MSVC(:?-arm64|-Legacy)?-Setup-.+\.exe$' token: ${{ secrets.WINGET_TOKEN }} PrismLauncher-11.0.2/.github/workflows/build.yml0000644000175100017510000001272515166745067021224 0ustar runnerrunnername: Build concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: merge_group: types: [checks_requested] pull_request: workflow_call: inputs: build-type: description: Type of build (Debug or Release) type: string default: Debug environment: description: Deployment environment to run under type: string workflow_dispatch: inputs: build-type: description: Type of build (Debug or Release) type: string default: Debug permissions: {} jobs: build: name: Build (${{ matrix.artifact-name }}) environment: ${{ inputs.environment || '' }} permissions: contents: read # Required for Azure Trusted Signing id-token: write # Required for vcpkg binary cache packages: write strategy: fail-fast: false matrix: include: - os: ubuntu-24.04 artifact-name: Linux cmake-preset: linux qt-version: 6.10.2 - os: ubuntu-24.04-arm artifact-name: Linux-aarch64 cmake-preset: linux qt-version: 6.10.2 - os: windows-2022 artifact-name: Windows-MinGW-w64 cmake-preset: windows_mingw msystem: CLANG64 vcvars-arch: amd64_x86 - os: windows-11-arm artifact-name: Windows-MinGW-arm64 cmake-preset: windows_mingw msystem: CLANGARM64 vcvars-arch: arm64 - os: windows-2022 artifact-name: Windows-MSVC cmake-preset: windows_msvc # TODO(@getchoo): This is the default in setup-dependencies/windows. Why isn't it working?!?! vcvars-arch: amd64 qt-version: 6.10.2 - os: windows-11-arm artifact-name: Windows-MSVC-arm64 cmake-preset: windows_msvc vcvars-arch: arm64 qt-version: 6.10.2 - os: macos-26 artifact-name: macOS cmake-preset: macos_universal macosx-deployment-target: 12.0 qt-version: 6.9.3 runs-on: ${{ matrix.os }} defaults: run: shell: ${{ matrix.msystem != '' && 'msys2 {0}' || 'bash' }} env: ARTIFACT_NAME: ${{ matrix.artifact-name }}-Qt6 BUILD_PLATFORM: official BUILD_TYPE: ${{ inputs.build-type || 'Debug' }} CMAKE_PRESET: ${{ matrix.cmake-preset }} MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx-deployment-target }} steps: ## # SETUP ## - name: Checkout uses: actions/checkout@v6 with: submodules: true - name: Setup dependencies id: setup-dependencies uses: ./.github/actions/setup-dependencies with: build-type: ${{ env.BUILD_TYPE }} artifact-name: ${{ matrix.artifact-name }} msystem: ${{ matrix.msystem }} vcvars-arch: ${{ matrix.vcvars-arch }} qt-version: ${{ matrix.qt-version }} ## # BUILD ## - name: Configure project run: | cmake --preset "$CMAKE_PRESET" - name: Run build run: | cmake --build --preset "$CMAKE_PRESET" --config "$BUILD_TYPE" - name: Run tests run: | ctest --preset "$CMAKE_PRESET" --build-config "$BUILD_TYPE" ## # PACKAGE ## - name: Get short version id: short-version shell: bash run: | echo "version=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" - name: Package (Linux) if: ${{ runner.os == 'Linux' }} uses: ./.github/actions/package/linux with: version: ${{ steps.short-version.outputs.version }} build-type: ${{ steps.setup-dependencies.outputs.build-type }} artifact-name: ${{ matrix.artifact-name }} qt-version: ${{ steps.setup-dependencies.outputs.qt-version }} gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-private-key-id: ${{ secrets.GPG_PRIVATE_KEY_ID }} - name: Package (macOS) if: ${{ runner.os == 'macOS' }} uses: ./.github/actions/package/macos with: version: ${{ steps.short-version.outputs.version }} build-type: ${{ steps.setup-dependencies.outputs.build-type }} artifact-name: ${{ matrix.artifact-name }} apple-codesign-cert: ${{ secrets.APPLE_CODESIGN_CERT }} apple-codesign-password: ${{ secrets.APPLE_CODESIGN_PASSWORD }} apple-codesign-id: ${{ secrets.APPLE_CODESIGN_ID }} apple-notarize-apple-id: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }} apple-notarize-team-id: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }} apple-notarize-password: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} sparkle-ed25519-key: ${{ secrets.SPARKLE_ED25519_KEY }} - name: Package (Windows) if: ${{ runner.os == 'Windows' }} uses: ./.github/actions/package/windows env: CI_HAS_ACCESS_TO_AZURE: ${{ vars.CI_HAS_ACCESS_TO_AZURE || '' }} with: version: ${{ steps.short-version.outputs.version }} build-type: ${{ steps.setup-dependencies.outputs.build-type }} artifact-name: ${{ matrix.artifact-name }} msystem: ${{ matrix.msystem }} azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} PrismLauncher-11.0.2/.github/workflows/clang-tidy.yml0000644000175100017510000000261515166745067022155 0ustar runnerrunnername: Clang-Tidy Code Scanning concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: merge_group: types: [checks_requested] pull_request: permissions: {} jobs: clang-tidy: name: Run Clang-Tidy runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - name: Checkout repository uses: actions/checkout@v6 with: fetch-depth: 0 # Required for diffing later on submodules: "true" - name: Setup sccache uses: hendrikmuhs/ccache-action@v1.2.22 with: variant: sccache - name: Install Nix uses: cachix/install-nix-action@v31 - name: Run build # TODO(@getchoo): Figure out how to make this work with PCH run: | nix develop --command bash -c ' cmake -B build -D Launcher_USE_PCH=OFF -D CMAKE_CXX_COMPILER_LAUNCHER=sccache && cmake --build build ' # TODO: Use SARIF after https://github.com/psastras/sarif-rs/issues/638 is fixed - name: Run clang-tidy-diff env: BASE_REF: ${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha }} run: | nix develop --command bash -c ' clang-tidy -verify-config && git diff -U0 --no-color "$BASE_REF" | clang-tidy-diff.py -p1 -quiet -only-check-in-db ' PrismLauncher-11.0.2/cmake/0000755000175100017510000000000015166745067015056 5ustar runnerrunnerPrismLauncher-11.0.2/cmake/vcpkg-ports/0000755000175100017510000000000015166745067017335 5ustar runnerrunnerPrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/0000755000175100017510000000000015166745067022541 5ustar runnerrunnerPrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/adjust-args.patch0000644000175100017510000000117115166745067026006 0ustar runnerrunnerdiff --git a/mesonbuild/cmake/toolchain.py b/mesonbuild/cmake/toolchain.py index 11a00be5d..89ae490ff 100644 --- a/mesonbuild/cmake/toolchain.py +++ b/mesonbuild/cmake/toolchain.py @@ -202,7 +202,7 @@ class CMakeToolchain: @staticmethod def is_cmdline_option(compiler: 'Compiler', arg: str) -> bool: if compiler.get_argument_syntax() == 'msvc': - return arg.startswith('/') + return arg.startswith(('/','-')) else: if os.path.basename(compiler.get_exe()) == 'zig' and arg in {'ar', 'cc', 'c++', 'dlltool', 'lib', 'ranlib', 'objcopy', 'rc'}: return True PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/vcpkg_configure_meson.cmake0000644000175100017510000005202415166745067030122 0ustar runnerrunnerfunction(z_vcpkg_meson_set_proglist_variables config_type) if(VCPKG_TARGET_IS_WINDOWS) set(proglist MT AR) else() set(proglist AR RANLIB STRIP NM OBJDUMP DLLTOOL MT) endif() foreach(prog IN LISTS proglist) if(VCPKG_DETECTED_CMAKE_${prog}) if(meson_${prog}) string(TOUPPER "MESON_${meson_${prog}}" var_to_set) set("${var_to_set}" "${meson_${prog}} = ['${VCPKG_DETECTED_CMAKE_${prog}}']" PARENT_SCOPE) elseif(${prog} STREQUAL AR AND VCPKG_COMBINED_STATIC_LINKER_FLAGS_${config_type}) # Probably need to move AR somewhere else string(TOLOWER "${prog}" proglower) z_vcpkg_meson_convert_compiler_flags_to_list(ar_flags "${VCPKG_COMBINED_STATIC_LINKER_FLAGS_${config_type}}") list(PREPEND ar_flags "${VCPKG_DETECTED_CMAKE_${prog}}") z_vcpkg_meson_convert_list_to_python_array(ar_flags ${ar_flags}) set("MESON_AR" "${proglower} = ${ar_flags}" PARENT_SCOPE) else() string(TOUPPER "MESON_${prog}" var_to_set) string(TOLOWER "${prog}" proglower) set("${var_to_set}" "${proglower} = ['${VCPKG_DETECTED_CMAKE_${prog}}']" PARENT_SCOPE) endif() endif() endforeach() set(compilers "${arg_LANGUAGES}") if(VCPKG_TARGET_IS_WINDOWS) list(APPEND compilers RC) endif() set(meson_RC windres) set(meson_Fortran fortran) set(meson_CXX cpp) foreach(prog IN LISTS compilers) if(VCPKG_DETECTED_CMAKE_${prog}_COMPILER) string(TOUPPER "MESON_${prog}" var_to_set) if(meson_${prog}) if(VCPKG_COMBINED_${prog}_FLAGS_${config_type}) # Need compiler flags in prog vars for sanity check. z_vcpkg_meson_convert_compiler_flags_to_list(${prog}flags "${VCPKG_COMBINED_${prog}_FLAGS_${config_type}}") endif() list(PREPEND ${prog}flags "${VCPKG_DETECTED_CMAKE_${prog}_COMPILER}") list(FILTER ${prog}flags EXCLUDE REGEX "(-|/)nologo") # Breaks compiler detection otherwise z_vcpkg_meson_convert_list_to_python_array(${prog}flags ${${prog}flags}) set("${var_to_set}" "${meson_${prog}} = ${${prog}flags}" PARENT_SCOPE) if (DEFINED VCPKG_DETECTED_CMAKE_${prog}_COMPILER_ID AND NOT VCPKG_DETECTED_CMAKE_${prog}_COMPILER_ID MATCHES "^(GNU|Intel)$" AND VCPKG_DETECTED_CMAKE_LINKER) string(TOUPPER "MESON_${prog}_LD" var_to_set) set(${var_to_set} "${meson_${prog}}_ld = ['${VCPKG_DETECTED_CMAKE_LINKER}']" PARENT_SCOPE) endif() else() if(VCPKG_COMBINED_${prog}_FLAGS_${config_type}) # Need compiler flags in prog vars for sanity check. z_vcpkg_meson_convert_compiler_flags_to_list(${prog}flags "${VCPKG_COMBINED_${prog}_FLAGS_${config_type}}") endif() list(PREPEND ${prog}flags "${VCPKG_DETECTED_CMAKE_${prog}_COMPILER}") list(FILTER ${prog}flags EXCLUDE REGEX "(-|/)nologo") # Breaks compiler detection otherwise z_vcpkg_meson_convert_list_to_python_array(${prog}flags ${${prog}flags}) string(TOLOWER "${prog}" proglower) set("${var_to_set}" "${proglower} = ${${prog}flags}" PARENT_SCOPE) if (DEFINED VCPKG_DETECTED_CMAKE_${prog}_COMPILER_ID AND NOT VCPKG_DETECTED_CMAKE_${prog}_COMPILER_ID MATCHES "^(GNU|Intel)$" AND VCPKG_DETECTED_CMAKE_LINKER) string(TOUPPER "MESON_${prog}_LD" var_to_set) set(${var_to_set} "${proglower}_ld = ['${VCPKG_DETECTED_CMAKE_LINKER}']" PARENT_SCOPE) endif() endif() endif() endforeach() endfunction() function(z_vcpkg_meson_convert_compiler_flags_to_list out_var compiler_flags) separate_arguments(cmake_list NATIVE_COMMAND "${compiler_flags}") list(TRANSFORM cmake_list REPLACE ";" [[\\;]]) set("${out_var}" "${cmake_list}" PARENT_SCOPE) endfunction() function(z_vcpkg_meson_convert_list_to_python_array out_var) z_vcpkg_function_arguments(flag_list 1) vcpkg_list(REMOVE_ITEM flag_list "") # remove empty elements if any vcpkg_list(JOIN flag_list "', '" flag_list) set("${out_var}" "['${flag_list}']" PARENT_SCOPE) endfunction() # Generates the required compiler properties for meson function(z_vcpkg_meson_set_flags_variables config_type) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) set(libpath_flag /LIBPATH:) else() set(libpath_flag -L) endif() if(config_type STREQUAL "DEBUG") set(path_suffix "/debug") else() set(path_suffix "") endif() set(includepath "-I${CURRENT_INSTALLED_DIR}/include") set(libpath "${libpath_flag}${CURRENT_INSTALLED_DIR}${path_suffix}/lib") foreach(lang IN LISTS arg_LANGUAGES) z_vcpkg_meson_convert_compiler_flags_to_list(${lang}flags "${VCPKG_COMBINED_${lang}_FLAGS_${config_type}}") if(lang MATCHES "^(C|CXX)$") vcpkg_list(APPEND ${lang}flags "${includepath}") endif() z_vcpkg_meson_convert_list_to_python_array(${lang}flags ${${lang}flags}) set(lang_mapping "${lang}") if(lang STREQUAL "Fortran") set(lang_mapping "FC") endif() string(TOLOWER "${lang_mapping}" langlower) if(lang STREQUAL "CXX") set(langlower cpp) endif() set(MESON_${lang_mapping}FLAGS "${langlower}_args = ${${lang}flags}\n") set(linker_flags "${VCPKG_COMBINED_SHARED_LINKER_FLAGS_${config_type}}") z_vcpkg_meson_convert_compiler_flags_to_list(linker_flags "${linker_flags}") vcpkg_list(APPEND linker_flags "${libpath}") z_vcpkg_meson_convert_list_to_python_array(linker_flags ${linker_flags}) string(APPEND MESON_${lang_mapping}FLAGS "${langlower}_link_args = ${linker_flags}\n") set(MESON_${lang_mapping}FLAGS "${MESON_${lang_mapping}FLAGS}" PARENT_SCOPE) endforeach() endfunction() function(z_vcpkg_get_build_and_host_system build_system host_system is_cross) #https://mesonbuild.com/Cross-compilation.html set(build_unknown FALSE) if(CMAKE_HOST_WIN32) if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) set(build_arch $ENV{PROCESSOR_ARCHITEW6432}) else() set(build_arch $ENV{PROCESSOR_ARCHITECTURE}) endif() if(build_arch MATCHES "(amd|AMD)64") set(build_cpu_fam x86_64) set(build_cpu x86_64) elseif(build_arch MATCHES "(x|X)86") set(build_cpu_fam x86) set(build_cpu i686) elseif(build_arch MATCHES "^(ARM|arm)64$") set(build_cpu_fam aarch64) set(build_cpu armv8) elseif(build_arch MATCHES "^(ARM|arm)$") set(build_cpu_fam arm) set(build_cpu armv7hl) else() if(NOT DEFINED VCPKG_MESON_CROSS_FILE OR NOT DEFINED VCPKG_MESON_NATIVE_FILE) message(WARNING "Unsupported build architecture ${build_arch}! Please set VCPKG_MESON_(CROSS|NATIVE)_FILE to a meson file containing the build_machine entry!") endif() set(build_unknown TRUE) endif() elseif(CMAKE_HOST_UNIX) # at this stage, CMAKE_HOST_SYSTEM_PROCESSOR is not defined execute_process( COMMAND uname -m OUTPUT_VARIABLE MACHINE OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY) # Show real machine architecture to visually understand whether we are in a native Apple Silicon terminal or running under Rosetta emulation debug_message("Machine: ${MACHINE}") if(MACHINE MATCHES "arm64|aarch64") set(build_cpu_fam aarch64) set(build_cpu armv8) elseif(MACHINE MATCHES "armv7h?l") set(build_cpu_fam arm) set(build_cpu ${MACHINE}) elseif(MACHINE MATCHES "x86_64|amd64") set(build_cpu_fam x86_64) set(build_cpu x86_64) elseif(MACHINE MATCHES "x86|i686") set(build_cpu_fam x86) set(build_cpu i686) elseif(MACHINE MATCHES "i386") set(build_cpu_fam x86) set(build_cpu i386) elseif(MACHINE MATCHES "loongarch64") set(build_cpu_fam loongarch64) set(build_cpu loongarch64) else() # https://github.com/mesonbuild/meson/blob/master/docs/markdown/Reference-tables.md#cpu-families if(NOT DEFINED VCPKG_MESON_CROSS_FILE OR NOT DEFINED VCPKG_MESON_NATIVE_FILE) message(WARNING "Unhandled machine: ${MACHINE}! Please set VCPKG_MESON_(CROSS|NATIVE)_FILE to a meson file containing the build_machine entry!") endif() set(build_unknown TRUE) endif() else() if(NOT DEFINED VCPKG_MESON_CROSS_FILE OR NOT DEFINED VCPKG_MESON_NATIVE_FILE) message(WARNING "Failed to detect the build architecture! Please set VCPKG_MESON_(CROSS|NATIVE)_FILE to a meson file containing the build_machine entry!") endif() set(build_unknown TRUE) endif() set(build "[build_machine]\n") # Machine the build is performed on string(APPEND build "endian = 'little'\n") if(CMAKE_HOST_WIN32) string(APPEND build "system = 'windows'\n") elseif(CMAKE_HOST_APPLE) string(APPEND build "system = 'darwin'\n") elseif(CYGWIN) string(APPEND build "system = 'cygwin'\n") elseif(CMAKE_HOST_UNIX) string(APPEND build "system = 'linux'\n") else() set(build_unknown TRUE) endif() if(DEFINED build_cpu_fam) string(APPEND build "cpu_family = '${build_cpu_fam}'\n") endif() if(DEFINED build_cpu) string(APPEND build "cpu = '${build_cpu}'") endif() if(NOT build_unknown) set(${build_system} "${build}" PARENT_SCOPE) endif() set(host_unkown FALSE) if(VCPKG_TARGET_ARCHITECTURE MATCHES "(amd|AMD|x|X)64") set(host_cpu_fam x86_64) set(host_cpu x86_64) elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "(x|X)86") set(host_cpu_fam x86) set(host_cpu i686) elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "^(ARM|arm)64$") set(host_cpu_fam aarch64) set(host_cpu armv8) elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "^(ARM|arm)$") set(host_cpu_fam arm) set(host_cpu armv7hl) elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "loongarch64") set(host_cpu_fam loongarch64) set(host_cpu loongarch64) elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "wasm32") set(host_cpu_fam wasm32) set(host_cpu wasm32) else() if(NOT DEFINED VCPKG_MESON_CROSS_FILE OR NOT DEFINED VCPKG_MESON_NATIVE_FILE) message(WARNING "Unsupported target architecture ${VCPKG_TARGET_ARCHITECTURE}! Please set VCPKG_MESON_(CROSS|NATIVE)_FILE to a meson file containing the host_machine entry!" ) endif() set(host_unkown TRUE) endif() set(host "[host_machine]\n") # host=target in vcpkg. string(APPEND host "endian = 'little'\n") if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_TARGET_IS_MINGW OR VCPKG_TARGET_IS_UWP) set(meson_system_name "windows") else() string(TOLOWER "${VCPKG_CMAKE_SYSTEM_NAME}" meson_system_name) endif() string(APPEND host "system = '${meson_system_name}'\n") string(APPEND host "cpu_family = '${host_cpu_fam}'\n") string(APPEND host "cpu = '${host_cpu}'") if(NOT host_unkown) set(${host_system} "${host}" PARENT_SCOPE) endif() if(NOT build_cpu_fam MATCHES "${host_cpu_fam}" OR VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_UWP OR (VCPKG_TARGET_IS_MINGW AND NOT CMAKE_HOST_WIN32)) set(${is_cross} TRUE PARENT_SCOPE) endif() endfunction() function(z_vcpkg_meson_setup_extra_windows_variables config_type) ## b_vscrt if(VCPKG_CRT_LINKAGE STREQUAL "static") set(crt_type "mt") else() set(crt_type "md") endif() if(config_type STREQUAL "DEBUG") set(crt_type "${crt_type}d") endif() set(MESON_VSCRT_LINKAGE "b_vscrt = '${crt_type}'" PARENT_SCOPE) ## winlibs separate_arguments(c_winlibs NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES}") separate_arguments(cpp_winlibs NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") z_vcpkg_meson_convert_list_to_python_array(c_winlibs ${c_winlibs}) z_vcpkg_meson_convert_list_to_python_array(cpp_winlibs ${cpp_winlibs}) set(MESON_WINLIBS "c_winlibs = ${c_winlibs}\n") string(APPEND MESON_WINLIBS "cpp_winlibs = ${cpp_winlibs}") set(MESON_WINLIBS "${MESON_WINLIBS}" PARENT_SCOPE) endfunction() function(z_vcpkg_meson_setup_variables config_type) set(meson_var_list VSCRT_LINKAGE WINLIBS MT AR RC C C_LD CXX CXX_LD OBJC OBJC_LD OBJCXX OBJCXX_LD FC FC_LD WINDRES CFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS FCFLAGS SHARED_LINKER_FLAGS) foreach(var IN LISTS meson_var_list) set(MESON_${var} "") endforeach() if(VCPKG_TARGET_IS_WINDOWS) z_vcpkg_meson_setup_extra_windows_variables("${config_type}") endif() z_vcpkg_meson_set_proglist_variables("${config_type}") z_vcpkg_meson_set_flags_variables("${config_type}") foreach(var IN LISTS meson_var_list) set(MESON_${var} "${MESON_${var}}" PARENT_SCOPE) endforeach() endfunction() function(vcpkg_generate_meson_cmd_args) cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUTPUT;CONFIG" "OPTIONS;LANGUAGES;ADDITIONAL_BINARIES;ADDITIONAL_PROPERTIES" ) if(NOT arg_LANGUAGES) set(arg_LANGUAGES C CXX) endif() vcpkg_list(JOIN arg_ADDITIONAL_BINARIES "\n" MESON_ADDITIONAL_BINARIES) vcpkg_list(JOIN arg_ADDITIONAL_PROPERTIES "\n" MESON_ADDITIONAL_PROPERTIES) set(buildtype "${arg_CONFIG}") if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE) z_vcpkg_select_default_vcpkg_chainload_toolchain() endif() vcpkg_list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS "-DVCPKG_LANGUAGES=${arg_LANGUAGES}") vcpkg_cmake_get_vars(cmake_vars_file) debug_message("Including cmake vars from: ${cmake_vars_file}") include("${cmake_vars_file}") vcpkg_list(APPEND arg_OPTIONS --backend ninja --wrap-mode nodownload -Doptimization=plain) z_vcpkg_get_build_and_host_system(MESON_HOST_MACHINE MESON_BUILD_MACHINE IS_CROSS) if(arg_CONFIG STREQUAL "DEBUG") set(suffix "dbg") else() string(SUBSTRING "${arg_CONFIG}" 0 3 suffix) string(TOLOWER "${suffix}" suffix) endif() set(meson_input_file_${buildtype} "${CURRENT_BUILDTREES_DIR}/meson-${TARGET_TRIPLET}-${suffix}.log") if(IS_CROSS) # VCPKG_CROSSCOMPILING is not used since it regresses a lot of ports in x64-windows-x triplets # For consistency this should proably be changed in the future? vcpkg_list(APPEND arg_OPTIONS --native "${SCRIPTS}/buildsystems/meson/none.txt") vcpkg_list(APPEND arg_OPTIONS --cross "${meson_input_file_${buildtype}}") else() vcpkg_list(APPEND arg_OPTIONS --native "${meson_input_file_${buildtype}}") endif() # User provided cross/native files if(VCPKG_MESON_NATIVE_FILE) vcpkg_list(APPEND arg_OPTIONS --native "${VCPKG_MESON_NATIVE_FILE}") endif() if(VCPKG_MESON_NATIVE_FILE_${buildtype}) vcpkg_list(APPEND arg_OPTIONS --native "${VCPKG_MESON_NATIVE_FILE_${buildtype}}") endif() if(VCPKG_MESON_CROSS_FILE) vcpkg_list(APPEND arg_OPTIONS --cross "${VCPKG_MESON_CROSS_FILE}") endif() if(VCPKG_MESON_CROSS_FILE_${buildtype}) vcpkg_list(APPEND arg_OPTIONS --cross "${VCPKG_MESON_CROSS_FILE_${buildtype}}") endif() vcpkg_list(APPEND arg_OPTIONS --libdir lib) # else meson install into an architecture describing folder vcpkg_list(APPEND arg_OPTIONS --pkgconfig.relocatable) if(arg_CONFIG STREQUAL "RELEASE") vcpkg_list(APPEND arg_OPTIONS -Ddebug=false --prefix "${CURRENT_PACKAGES_DIR}") vcpkg_list(APPEND arg_OPTIONS "--pkg-config-path;['${CURRENT_INSTALLED_DIR}/lib/pkgconfig','${CURRENT_INSTALLED_DIR}/share/pkgconfig']") if(VCPKG_TARGET_IS_WINDOWS) vcpkg_list(APPEND arg_OPTIONS "-Dcmake_prefix_path=['${CURRENT_INSTALLED_DIR}','${CURRENT_INSTALLED_DIR}/debug','${CURRENT_INSTALLED_DIR}/share']") else() vcpkg_list(APPEND arg_OPTIONS "-Dcmake_prefix_path=['${CURRENT_INSTALLED_DIR}','${CURRENT_INSTALLED_DIR}/debug']") endif() elseif(arg_CONFIG STREQUAL "DEBUG") vcpkg_list(APPEND arg_OPTIONS -Ddebug=true --prefix "${CURRENT_PACKAGES_DIR}/debug" --includedir ../include) vcpkg_list(APPEND arg_OPTIONS "--pkg-config-path;['${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig','${CURRENT_INSTALLED_DIR}/share/pkgconfig']") if(VCPKG_TARGET_IS_WINDOWS) vcpkg_list(APPEND arg_OPTIONS "-Dcmake_prefix_path=['${CURRENT_INSTALLED_DIR}/debug','${CURRENT_INSTALLED_DIR}','${CURRENT_INSTALLED_DIR}/share']") else() vcpkg_list(APPEND arg_OPTIONS "-Dcmake_prefix_path=['${CURRENT_INSTALLED_DIR}/debug','${CURRENT_INSTALLED_DIR}']") endif() else() message(FATAL_ERROR "Unknown configuration. Only DEBUG and RELEASE are valid values.") endif() # Allow overrides / additional configuration variables from triplets if(DEFINED VCPKG_MESON_CONFIGURE_OPTIONS) vcpkg_list(APPEND arg_OPTIONS ${VCPKG_MESON_CONFIGURE_OPTIONS}) endif() if(DEFINED VCPKG_MESON_CONFIGURE_OPTIONS_${buildtype}) vcpkg_list(APPEND arg_OPTIONS ${VCPKG_MESON_CONFIGURE_OPTIONS_${buildtype}}) endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") set(MESON_DEFAULT_LIBRARY shared) else() set(MESON_DEFAULT_LIBRARY static) endif() set(MESON_CMAKE_BUILD_TYPE "${cmake_build_type_${buildtype}}") z_vcpkg_meson_setup_variables(${buildtype}) configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/meson.template.in" "${meson_input_file_${buildtype}}" @ONLY) set("${arg_OUTPUT}" ${arg_OPTIONS} PARENT_SCOPE) endfunction() function(vcpkg_configure_meson) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 arg "NO_PKG_CONFIG" "SOURCE_PATH" "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;LANGUAGES;ADDITIONAL_BINARIES;ADDITIONAL_NATIVE_BINARIES;ADDITIONAL_CROSS_BINARIES;ADDITIONAL_PROPERTIES" ) if(DEFINED arg_ADDITIONAL_NATIVE_BINARIES OR DEFINED arg_ADDITIONAL_CROSS_BINARIES) message(WARNING "Options ADDITIONAL_(NATIVE|CROSS)_BINARIES have been deprecated. Only use ADDITIONAL_BINARIES!") endif() vcpkg_list(APPEND arg_ADDITIONAL_BINARIES ${arg_ADDITIONAL_NATIVE_BINARIES} ${arg_ADDITIONAL_CROSS_BINARIES}) vcpkg_list(REMOVE_DUPLICATES arg_ADDITIONAL_BINARIES) file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel") file(REMOVE_RECURSE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg") vcpkg_find_acquire_program(MESON) get_filename_component(CMAKE_PATH "${CMAKE_COMMAND}" DIRECTORY) vcpkg_add_to_path("${CMAKE_PATH}") # Make CMake invokeable for Meson vcpkg_find_acquire_program(NINJA) if(NOT arg_NO_PKG_CONFIG) vcpkg_find_acquire_program(PKGCONFIG) set(ENV{PKG_CONFIG} "${PKGCONFIG}") endif() vcpkg_find_acquire_program(PYTHON3) get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) vcpkg_add_to_path(PREPEND "${PYTHON3_DIR}") set(buildtypes "") if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") set(buildname "DEBUG") set(cmake_build_type_${buildname} "Debug") vcpkg_list(APPEND buildtypes "${buildname}") set(path_suffix_${buildname} "debug/") set(suffix_${buildname} "dbg") endif() if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") set(buildname "RELEASE") set(cmake_build_type_${buildname} "Release") vcpkg_list(APPEND buildtypes "${buildname}") set(path_suffix_${buildname} "") set(suffix_${buildname} "rel") endif() # configure build foreach(buildtype IN LISTS buildtypes) message(STATUS "Configuring ${TARGET_TRIPLET}-${suffix_${buildtype}}") file(MAKE_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix_${buildtype}}") vcpkg_generate_meson_cmd_args( OUTPUT cmd_args CONFIG ${buildtype} LANGUAGES ${arg_LANGUAGES} OPTIONS ${arg_OPTIONS} ${arg_OPTIONS_${buildtype}} ADDITIONAL_BINARIES ${arg_ADDITIONAL_BINARIES} ADDITIONAL_PROPERTIES ${arg_ADDITIONAL_PROPERTIES} ) vcpkg_execute_required_process( COMMAND ${MESON} setup ${cmd_args} ${arg_SOURCE_PATH} WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix_${buildtype}}" LOGNAME config-${TARGET_TRIPLET}-${suffix_${buildtype}} SAVE_LOG_FILES meson-logs/meson-log.txt meson-info/intro-dependencies.json meson-logs/install-log.txt ) message(STATUS "Configuring ${TARGET_TRIPLET}-${suffix_${buildtype}} done") endforeach() endfunction() PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/portfile.cmake0000644000175100017510000000325415166745067025373 0ustar runnerrunner# This port represents a dependency on the Meson build system. # In the future, it is expected that this port acquires and installs Meson. # Currently is used in ports that call vcpkg_find_acquire_program(MESON) in order to force rebuilds. set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) set(patches meson-intl.patch adjust-python-dep.patch adjust-args.patch remove-freebsd-pcfile-specialization.patch fix-libcpp-enable-assertions.patch # https://github.com/mesonbuild/meson/pull/14548, Remove in 1.8.3 universal-osx.patch # NOTE(@getchoo): THIS IS THE ONLY CHANGE NEEDED FOR PRISM ) set(scripts vcpkg-port-config.cmake vcpkg_configure_meson.cmake vcpkg_install_meson.cmake meson.template.in ) set(to_hash "${CMAKE_CURRENT_LIST_DIR}/vcpkg.json" "${CMAKE_CURRENT_LIST_DIR}/portfile.cmake" ) foreach(file IN LISTS patches scripts) set(filepath "${CMAKE_CURRENT_LIST_DIR}/${file}") list(APPEND to_hash "${filepath}") file(COPY "${filepath}" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") endforeach() set(meson_path_hash "") foreach(filepath IN LISTS to_hash) file(SHA1 "${filepath}" to_append) string(APPEND meson_path_hash "${to_append}") endforeach() string(SHA512 meson_path_hash "${meson_path_hash}") string(SUBSTRING "${meson_path_hash}" 0 6 MESON_SHORT_HASH) list(TRANSFORM patches REPLACE [[^(..*)$]] [["${CMAKE_CURRENT_LIST_DIR}/\0"]]) list(JOIN patches "\n " PATCHES) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) vcpkg_install_copyright(FILE_LIST "${VCPKG_ROOT_DIR}/LICENSE.txt") include("${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake") PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/vcpkg_install_meson.cmake0000644000175100017510000000616715166745067027616 0ustar runnerrunnerfunction(vcpkg_install_meson) cmake_parse_arguments(PARSE_ARGV 0 arg "ADD_BIN_TO_PATH" "" "") vcpkg_find_acquire_program(NINJA) unset(ENV{DESTDIR}) # installation directory was already specified with '--prefix' option if(VCPKG_TARGET_IS_OSX) vcpkg_backup_env_variables(VARS SDKROOT MACOSX_DEPLOYMENT_TARGET) set(ENV{SDKROOT} "${VCPKG_DETECTED_CMAKE_OSX_SYSROOT}") set(ENV{MACOSX_DEPLOYMENT_TARGET} "${VCPKG_DETECTED_CMAKE_OSX_DEPLOYMENT_TARGET}") endif() foreach(buildtype IN ITEMS "debug" "release") if(DEFINED VCPKG_BUILD_TYPE AND NOT VCPKG_BUILD_TYPE STREQUAL buildtype) continue() endif() if(buildtype STREQUAL "debug") set(short_buildtype "dbg") else() set(short_buildtype "rel") endif() message(STATUS "Package ${TARGET_TRIPLET}-${short_buildtype}") if(arg_ADD_BIN_TO_PATH) vcpkg_backup_env_variables(VARS PATH) if(buildtype STREQUAL "debug") vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/debug/bin") else() vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/bin") endif() endif() vcpkg_execute_required_process( COMMAND "${NINJA}" install -v WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${short_buildtype}" LOGNAME package-${TARGET_TRIPLET}-${short_buildtype} ) if(arg_ADD_BIN_TO_PATH) vcpkg_restore_env_variables(VARS PATH) endif() endforeach() vcpkg_list(SET renamed_libs) if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL static AND NOT VCPKG_TARGET_IS_MINGW) # Meson names all static libraries lib.a which basically breaks the world file(GLOB_RECURSE gen_libraries "${CURRENT_PACKAGES_DIR}*/**/lib*.a") foreach(gen_library IN LISTS gen_libraries) get_filename_component(libdir "${gen_library}" DIRECTORY) get_filename_component(libname "${gen_library}" NAME) string(REGEX REPLACE ".a$" ".lib" fixed_librawname "${libname}") string(REGEX REPLACE "^lib" "" fixed_librawname "${fixed_librawname}") file(RENAME "${gen_library}" "${libdir}/${fixed_librawname}") # For cmake fixes. string(REGEX REPLACE ".a$" "" origin_librawname "${libname}") string(REGEX REPLACE ".lib$" "" fixed_librawname "${fixed_librawname}") vcpkg_list(APPEND renamed_libs ${fixed_librawname}) set(${librawname}_old ${origin_librawname}) set(${librawname}_new ${fixed_librawname}) endforeach() file(GLOB_RECURSE cmake_files "${CURRENT_PACKAGES_DIR}*/*.cmake") foreach(cmake_file IN LISTS cmake_files) foreach(current_lib IN LISTS renamed_libs) vcpkg_replace_string("${cmake_file}" "${${current_lib}_old}" "${${current_lib}_new}" IGNORE_UNCHANGED) endforeach() endforeach() endif() if(VCPKG_TARGET_IS_OSX) vcpkg_restore_env_variables(VARS SDKROOT MACOSX_DEPLOYMENT_TARGET) endif() endfunction() PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/install.cmake0000644000175100017510000000030315166745067025205 0ustar runnerrunnerfile(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/meson") file(INSTALL "${SOURCE_PATH}/meson.py" "${SOURCE_PATH}/mesonbuild" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/meson" ) PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/vcpkg-port-config.cmake0000644000175100017510000000474315166745067027112 0ustar runnerrunnerinclude("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-cmake-get-vars/vcpkg-port-config.cmake") # Overwrite builtin scripts include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_configure_meson.cmake") include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_install_meson.cmake") set(meson_short_hash @MESON_SHORT_HASH@) # Setup meson: set(program MESON) set(program_version @VERSION@) set(program_name meson) set(search_names meson meson.py) set(ref "${program_version}") set(path_to_search "${DOWNLOADS}/tools/meson-${program_version}-${meson_short_hash}") set(download_urls "https://github.com/mesonbuild/meson/archive/${ref}.tar.gz") set(download_filename "meson-${ref}.tar.gz") set(download_sha512 bd2e65f0863d9cb974e659ff502d773e937b8a60aaddfd7d81e34cd2c296c8e82bf214d790ac089ba441543059dfc2677ba95ed51f676df9da420859f404a907) find_program(SCRIPT_MESON NAMES ${search_names} PATHS "${path_to_search}" NO_DEFAULT_PATH) # NO_DEFAULT_PATH due top patching if(NOT SCRIPT_MESON) vcpkg_download_distfile(archive_path URLS ${download_urls} SHA512 "${download_sha512}" FILENAME "${download_filename}" ) file(REMOVE_RECURSE "${path_to_search}") file(REMOVE_RECURSE "${path_to_search}-tmp") file(MAKE_DIRECTORY "${path_to_search}-tmp") file(ARCHIVE_EXTRACT INPUT "${archive_path}" DESTINATION "${path_to_search}-tmp" #PATTERNS "**/mesonbuild/*" "**/*.py" ) z_vcpkg_apply_patches( SOURCE_PATH "${path_to_search}-tmp/meson-${ref}" PATCHES @PATCHES@ ) file(MAKE_DIRECTORY "${path_to_search}") file(RENAME "${path_to_search}-tmp/meson-${ref}/meson.py" "${path_to_search}/meson.py") file(RENAME "${path_to_search}-tmp/meson-${ref}/mesonbuild" "${path_to_search}/mesonbuild") file(REMOVE_RECURSE "${path_to_search}-tmp") set(SCRIPT_MESON "${path_to_search}/meson.py") endif() # Check required python version vcpkg_find_acquire_program(PYTHON3) vcpkg_execute_in_download_mode( COMMAND "${PYTHON3}" --version OUTPUT_VARIABLE version_contents WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}" ) string(REGEX MATCH [[[0-9]+\.[0-9]+\.[0-9]+]] python_ver "${version_contents}") set(min_required 3.7) if(python_ver VERSION_LESS "${min_required}") message(FATAL_ERROR "Found Python version '${python_ver} at ${PYTHON3}' is insufficient for meson. meson requires at least version '${min_required}'") else() message(STATUS "Found Python version '${python_ver} at ${PYTHON3}'") endif() message(STATUS "Using meson: ${SCRIPT_MESON}") PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/meson.template.in0000644000175100017510000000172115166745067026025 0ustar runnerrunner[binaries] cmake = ['@CMAKE_COMMAND@'] ninja = ['@NINJA@'] pkg-config = ['@PKGCONFIG@'] @MESON_MT@ @MESON_AR@ @MESON_RC@ @MESON_C@ @MESON_C_LD@ @MESON_CXX@ @MESON_CXX_LD@ @MESON_OBJC@ @MESON_OBJC_LD@ @MESON_OBJCPP@ @MESON_OBJCPP_LD@ @MESON_FC@ @MESON_FC_LD@ @MESON_WINDRES@ @MESON_ADDITIONAL_BINARIES@ [properties] cmake_toolchain_file = '@SCRIPTS@/buildsystems/vcpkg.cmake' @MESON_ADDITIONAL_PROPERTIES@ [cmake] CMAKE_BUILD_TYPE = '@MESON_CMAKE_BUILD_TYPE@' VCPKG_TARGET_TRIPLET = '@TARGET_TRIPLET@' VCPKG_HOST_TRIPLET = '@_HOST_TRIPLET@' VCPKG_CHAINLOAD_TOOLCHAIN_FILE = '@VCPKG_CHAINLOAD_TOOLCHAIN_FILE@' VCPKG_CRT_LINKAGE = '@VCPKG_CRT_LINKAGE@' _VCPKG_INSTALLED_DIR = '@_VCPKG_INSTALLED_DIR@' @MESON_HOST_MACHINE@ @MESON_BUILD_MACHINE@ [built-in options] default_library = '@MESON_DEFAULT_LIBRARY@' werror = false @MESON_CFLAGS@ @MESON_CXXFLAGS@ @MESON_FCFLAGS@ @MESON_OBJCFLAGS@ @MESON_OBJCPPFLAGS@ # b_vscrt @MESON_VSCRT_LINKAGE@ # c_winlibs/cpp_winlibs @MESON_WINLIBS@PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/universal-osx.patch0000644000175100017510000000155215166745067026404 0ustar runnerrunnerdiff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py index f57957f0b..a72e72a0b 100644 --- a/mesonbuild/compilers/detect.py +++ b/mesonbuild/compilers/detect.py @@ -1472,6 +1472,11 @@ def _get_clang_compiler_defines(compiler: T.List[str], lang: str) -> T.Dict[str, """ from .mixins.clang import clang_lang_map + # Filter out `-arch` flags passed to the compiler for Universal Binaries + # https://github.com/mesonbuild/meson/issues/5290 + # https://github.com/mesonbuild/meson/issues/8206 + compiler = [arg for i, arg in enumerate(compiler) if not (i > 0 and compiler[i - 1] == "-arch") and not arg == "-arch"] + def _try_obtain_compiler_defines(args: T.List[str]) -> str: mlog.debug(f'Running command: {join_args(args)}') p, output, error = Popen_safe(compiler + args, write='', stdin=subprocess.PIPE) PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/meson-intl.patch0000644000175100017510000000102515166745067025645 0ustar runnerrunnerdiff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -593,7 +593,8 @@ iconv_factory = DependencyFactory( packages['intl'] = intl_factory = DependencyFactory( 'intl', + [DependencyMethods.BUILTIN, DependencyMethods.SYSTEM, DependencyMethods.CMAKE], + cmake_name='Intl', - [DependencyMethods.BUILTIN, DependencyMethods.SYSTEM], builtin_class=IntlBuiltinDependency, system_class=IntlSystemDependency, ) PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/README.md0000644000175100017510000000026415166745067024022 0ustar runnerrunnerThe only difference between this and the upstream vcpkg port is the addition of `universal-osx.patch`. It's very annoying we need to bundle this entire tree to do that. -@getchoo PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/adjust-python-dep.patch0000644000175100017510000000553615166745067027152 0ustar runnerrunnerdiff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py index 883a29a..d9a82af 100644 --- a/mesonbuild/dependencies/python.py +++ b/mesonbuild/dependencies/python.py @@ -232,8 +232,10 @@ class _PythonDependencyBase(_Base): else: if self.is_freethreaded: libpath = Path('libs') / f'python{vernum}t.lib' + libpath = Path('libs') / f'..' / f'..' / f'..' / f'lib' / f'python{vernum}t.lib' else: libpath = Path('libs') / f'python{vernum}.lib' + libpath = Path('libs') / f'..' / f'..' / f'..' / f'lib' / f'python{vernum}.lib' # For a debug build, pyconfig.h may force linking with # pythonX_d.lib (see meson#10776). This cannot be avoided # and won't work unless we also have a debug build of @@ -250,6 +252,8 @@ class _PythonDependencyBase(_Base): vscrt = self.env.coredata.optstore.get_value('b_vscrt') if vscrt in {'mdd', 'mtd', 'from_buildtype', 'static_from_buildtype'}: vscrt_debug = True + if is_debug_build: + libpath = Path('libs') / f'..' / f'..' / f'..' / f'debug/lib' / f'python{vernum}_d.lib' if is_debug_build and vscrt_debug and not self.variables.get('Py_DEBUG'): mlog.warning(textwrap.dedent('''\ Using a debug build type with MSVC or an MSVC-compatible compiler @@ -350,9 +354,10 @@ class PythonSystemDependency(SystemDependency, _PythonDependencyBase): self.is_found = True # compile args + verdot = self.variables.get('py_version_short') inc_paths = mesonlib.OrderedSet([ self.variables.get('INCLUDEPY'), - self.paths.get('include'), + self.paths.get('include') + f'/../../../include/python${verdot}', self.paths.get('platinclude')]) self.compile_args += ['-I' + path for path in inc_paths if path] @@ -416,7 +421,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice', candidates.append(functools.partial(wrap_in_pythons_pc_dir, pkg_name, env, kwargs, installation)) # We only need to check both, if a python install has a LIBPC. It might point to the wrong location, # e.g. relocated / cross compilation, but the presence of LIBPC indicates we should definitely look for something. - if pkg_libdir is not None: + if True or pkg_libdir is not None: candidates.append(functools.partial(PythonPkgConfigDependency, pkg_name, env, kwargs, installation)) else: candidates.append(functools.partial(PkgConfigDependency, 'python3', env, kwargs)) PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/remove-freebsd-pcfile-specialization.patch0000644000175100017510000000312615166745067032745 0ustar runnerrunnerdiff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index cc0450a52..13501466d 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -701,16 +701,8 @@ class PkgConfigModule(NewExtensionModule): pcfile = filebase + '.pc' pkgroot = pkgroot_name = kwargs['install_dir'] or default_install_dir if pkgroot is None: - m = state.environment.machines.host - if m.is_freebsd(): - pkgroot = os.path.join(_as_str(state.environment.coredata.optstore.get_value_for(OptionKey('prefix'))), 'libdata', 'pkgconfig') - pkgroot_name = os.path.join('{prefix}', 'libdata', 'pkgconfig') - elif m.is_haiku(): - pkgroot = os.path.join(_as_str(state.environment.coredata.optstore.get_value_for(OptionKey('prefix'))), 'develop', 'lib', 'pkgconfig') - pkgroot_name = os.path.join('{prefix}', 'develop', 'lib', 'pkgconfig') - else: - pkgroot = os.path.join(_as_str(state.environment.coredata.optstore.get_value_for(OptionKey('libdir'))), 'pkgconfig') - pkgroot_name = os.path.join('{libdir}', 'pkgconfig') + pkgroot = os.path.join(_as_str(state.environment.coredata.optstore.get_value_for(OptionKey('libdir'))), 'pkgconfig') + pkgroot_name = os.path.join('{libdir}', 'pkgconfig') relocatable = state.get_option('pkgconfig.relocatable') self._generate_pkgconfig_file(state, deps, subdirs, name, description, url, version, pcfile, conflicts, variables, PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/fix-libcpp-enable-assertions.patch0000644000175100017510000000452615166745067031242 0ustar runnerrunnerFrom a16ec8b0fb6d7035b669a13edd4d97ff0c307a0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20D=C3=B8rum?= Date: Fri, 2 May 2025 10:56:28 +0200 Subject: [PATCH] cpp: fix _LIBCPP_ENABLE_ASSERTIONS warning libc++ deprecated _LIBCPP_ENABLE_ASSERTIONS from version 18. However, the libc++ shipped with Apple Clang backported that deprecation in version 17 already, which is the version which Apple currently ships for macOS. This PR changes the _LIBCPP_ENABLE_ASSERTIONS deprecation check to use version ">=17" on Apple Clang. --- mesonbuild/compilers/cpp.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 01b9bb9fa34f..f7dc150e8608 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -311,6 +311,9 @@ def get_option_link_args(self, target: 'BuildTarget', env: 'Environment', subpro return libs return [] + def is_libcpp_enable_assertions_deprecated(self) -> bool: + return version_compare(self.version, ">=18") + def get_assert_args(self, disable: bool, env: 'Environment') -> T.List[str]: if disable: return ['-DNDEBUG'] @@ -323,7 +326,7 @@ def get_assert_args(self, disable: bool, env: 'Environment') -> T.List[str]: if self.language_stdlib_provider(env) == 'stdc++': return ['-D_GLIBCXX_ASSERTIONS=1'] else: - if version_compare(self.version, '>=18'): + if self.is_libcpp_enable_assertions_deprecated(): return ['-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST'] elif version_compare(self.version, '>=15'): return ['-D_LIBCPP_ENABLE_ASSERTIONS=1'] @@ -343,7 +346,12 @@ class ArmLtdClangCPPCompiler(ClangCPPCompiler): class AppleClangCPPCompiler(AppleCompilerMixin, AppleCPPStdsMixin, ClangCPPCompiler): - pass + def is_libcpp_enable_assertions_deprecated(self) -> bool: + # Upstream libc++ deprecated _LIBCPP_ENABLE_ASSERTIONS + # in favor of _LIBCPP_HARDENING_MODE from version 18 onwards, + # but Apple Clang 17's libc++ has back-ported that change. + # See: https://github.com/mesonbuild/meson/issues/14440 + return version_compare(self.version, ">=17") class EmscriptenCPPCompiler(EmscriptenMixin, ClangCPPCompiler): PrismLauncher-11.0.2/cmake/vcpkg-ports/vcpkg-tool-meson/vcpkg.json0000644000175100017510000000037215166745067024550 0ustar runnerrunner{ "name": "vcpkg-tool-meson", "version": "1.8.2", "description": "Meson build system", "homepage": "https://github.com/mesonbuild/meson", "license": "Apache-2.0", "supports": "native", "dependencies": [ "vcpkg-cmake-get-vars" ] } PrismLauncher-11.0.2/cmake/GetGitRevisionDescription.cmake.in0000644000175100017510000000251215166745067023573 0ustar runnerrunner# # Internal file for GetGitRevisionDescription.cmake # # Requires CMake 2.6 or newer (uses the 'function' command) # # Original Author: # 2009-2010 Ryan Pavlik # http://academic.cleardefinition.com # Iowa State University HCI Graduate Program/VRAC # # Copyright 2009-2012, Iowa State University # Copyright 2011-2015, Contributors # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) # SPDX-License-Identifier: BSL-1.0 set(HEAD_HASH) file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) if(HEAD_CONTENTS MATCHES "ref") # named branch string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") if(EXISTS "@GIT_DIR@/${HEAD_REF}") configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) else() configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") set(HEAD_HASH "${CMAKE_MATCH_1}") endif() endif() else() # detached HEAD configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) endif() if(NOT HEAD_HASH) file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) string(STRIP "${HEAD_HASH}" HEAD_HASH) endif() PrismLauncher-11.0.2/cmake/GitFunctions.cmake0000644000175100017510000000211415166745067020472 0ustar runnerrunnerif(__GITFUNCTIONS_CMAKE__) return() endif() set(__GITFUNCTIONS_CMAKE__ TRUE) find_package(Git QUIET) include(CMakeParseArguments) if(GIT_FOUND) function(git_run) set(oneValueArgs OUTPUT_VAR DEFAULT) set(multiValueArgs COMMAND) cmake_parse_arguments(GIT_RUN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) execute_process(COMMAND ${GIT_EXECUTABLE} ${GIT_RUN_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} RESULT_VARIABLE GIT_RESULTVAR OUTPUT_VARIABLE GIT_OUTVAR OUTPUT_STRIP_TRAILING_WHITESPACE ) if(GIT_RESULTVAR EQUAL 0) set(${GIT_RUN_OUTPUT_VAR} "${GIT_OUTVAR}" PARENT_SCOPE) else() set(${GIT_RUN_OUTPUT_VAR} ${GIT_RUN_DEFAULT}) message(STATUS "Failed to run Git: ${GIT_OUTVAR}") endif() endfunction() else() function(git_run) set(oneValueArgs OUTPUT_VAR DEFAULT) set(multiValueArgs COMMAND) cmake_parse_arguments(GIT_RUN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(${GIT_RUN_OUTPUT_VAR} ${GIT_RUN_DEFAULT}) endfunction(git_run) endif() PrismLauncher-11.0.2/cmake/GetGitRevisionDescription.cmake0000644000175100017510000002245715166745067023200 0ustar runnerrunner# - Returns a version string from Git # # These functions force a re-configure on each git commit so that you can # trust the values of the variables in your build system. # # get_git_head_revision( [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR]) # # Returns the refspec and sha hash of the current head revision # # git_describe( [ ...]) # # Returns the results of git describe on the source tree, and adjusting # the output so that it tests false if an error occurs. # # git_describe_working_tree( [ ...]) # # Returns the results of git describe on the working tree (--dirty option), # and adjusting the output so that it tests false if an error occurs. # # git_get_exact_tag( [ ...]) # # Returns the results of git describe --exact-match on the source tree, # and adjusting the output so that it tests false if there was no exact # matching tag. # # git_local_changes() # # Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes. # Uses the return code of "git diff-index --quiet HEAD --". # Does not regard untracked files. # # Requires CMake 2.6 or newer (uses the 'function' command) # # Original Author: # 2009-2020 Ryan Pavlik # http://academic.cleardefinition.com # # Copyright 2009-2013, Iowa State University. # Copyright 2013-2020, Ryan Pavlik # Copyright 2013-2020, Contributors # SPDX-License-Identifier: BSL-1.0 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) if(__get_git_revision_description) return() endif() set(__get_git_revision_description YES) # We must run the following at "include" time, not at function call time, # to find the path to this module rather than the path to a calling list file get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) # Function _git_find_closest_git_dir finds the next closest .git directory # that is part of any directory in the path defined by _start_dir. # The result is returned in the parent scope variable whose name is passed # as variable _git_dir_var. If no .git directory can be found, the # function returns an empty string via _git_dir_var. # # Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and # neither foo nor bar contain a file/directory .git. This wil return # C:/bla/.git # function(_git_find_closest_git_dir _start_dir _git_dir_var) set(cur_dir "${_start_dir}") set(git_dir "${_start_dir}/.git") while(NOT EXISTS "${git_dir}") # .git dir not found, search parent directories set(git_previous_parent "${cur_dir}") get_filename_component(cur_dir "${cur_dir}" DIRECTORY) if(cur_dir STREQUAL git_previous_parent) # We have reached the root directory, we are not in git set(${_git_dir_var} "" PARENT_SCOPE) return() endif() set(git_dir "${cur_dir}/.git") endwhile() set(${_git_dir_var} "${git_dir}" PARENT_SCOPE) endfunction() function(get_git_head_revision _refspecvar _hashvar) _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR) if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE) else() set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE) endif() if(NOT "${GIT_DIR}" STREQUAL "") file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}" "${GIT_DIR}") if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) # We've gone above the CMake root dir. set(GIT_DIR "") endif() endif() if("${GIT_DIR}" STREQUAL "") set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) return() endif() # Check if the current source dir is a git submodule or a worktree. # In both cases .git is a file instead of a directory. # if(NOT IS_DIRECTORY ${GIT_DIR}) # The following git command will return a non empty string that # points to the super project working tree if the current # source dir is inside a git submodule. # Otherwise the command will return an empty string. # execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --show-superproject-working-tree WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT "${out}" STREQUAL "") # If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule file(READ ${GIT_DIR} submodule) string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE ${submodule}) string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") else() # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree file(READ ${GIT_DIR} worktree_ref) # The .git directory contains a path to the worktree information directory # inside the parent git repo of the worktree. # string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir ${worktree_ref}) string(STRIP ${git_worktree_dir} git_worktree_dir) _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR) set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") endif() else() set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") endif() set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") if(NOT EXISTS "${GIT_DATA}") file(MAKE_DIRECTORY "${GIT_DATA}") endif() if(NOT EXISTS "${HEAD_SOURCE_FILE}") return() endif() set(HEAD_FILE "${GIT_DATA}/HEAD") configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" "${GIT_DATA}/grabRef.cmake" @ONLY) include("${GIT_DATA}/grabRef.cmake") set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) endfunction() function(git_describe _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() get_git_head_revision(refspec hash) if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() if(NOT hash) set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) return() endif() # TODO sanitize #if((${ARGN}" MATCHES "&&") OR # (ARGN MATCHES "||") OR # (ARGN MATCHES "\\;")) # message("Please report the following error to the project!") # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") #endif() #message(STATUS "Arguments to execute_process: ${ARGN}") execute_process( COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT res EQUAL 0) set(out "${out}-${res}-NOTFOUND") endif() set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_describe_working_tree _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() execute_process( COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT res EQUAL 0) set(out "${out}-${res}-NOTFOUND") endif() set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_get_exact_tag _var) git_describe(out --exact-match ${ARGN}) set(${_var} "${out}" PARENT_SCOPE) endfunction() function(git_local_changes _var) if(NOT GIT_FOUND) find_package(Git QUIET) endif() get_git_head_revision(refspec hash) if(NOT GIT_FOUND) set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) return() endif() if(NOT hash) set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) return() endif() execute_process( COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(res EQUAL 0) set(${_var} "CLEAN" PARENT_SCOPE) else() set(${_var} "DIRTY" PARENT_SCOPE) endif() endfunction() PrismLauncher-11.0.2/cmake/MacOSXBundleInfo.plist.in0000644000175100017510000000735215166745067021607 0ustar runnerrunner NSCameraUsageDescription A Minecraft mod wants to access your camera. NSMicrophoneUsageDescription A Minecraft mod wants to access your microphone. NSDownloadsFolderUsageDescription ${Launcher_DisplayName} uses access to your Downloads folder to help you more quickly add mods that can't be automatically downloaded to your instance. You can change where ${Launcher_DisplayName} scans for downloaded mods in Settings or the prompt that appears. NSLocalNetworkUsageDescription Minecraft uses the local network to find and connect to LAN servers. NSPrincipalClass NSApplication NSHighResolutionCapable True CFBundleDevelopmentRegion English CFBundleExecutable ${MACOSX_BUNDLE_EXECUTABLE_NAME} CFBundleGetInfoString ${MACOSX_BUNDLE_INFO_STRING} CFBundleIconFile ${Launcher_Name} CFBundleIconName ${Launcher_Name} CFBundleIdentifier ${MACOSX_BUNDLE_GUI_IDENTIFIER} CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString ${MACOSX_BUNDLE_LONG_VERSION_STRING} CFBundleName ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundlePackageType APPL CFBundleShortVersionString ${MACOSX_BUNDLE_SHORT_VERSION_STRING} CFBundleSignature ???? CFBundleVersion ${MACOSX_BUNDLE_BUNDLE_VERSION} CSResourcesFileMapped LSRequiresCarbon LSApplicationCategoryType public.app-category.games NSHumanReadableCopyright ${MACOSX_BUNDLE_COPYRIGHT} SUPublicEDKey ${MACOSX_SPARKLE_UPDATE_PUBLIC_KEY} SUFeedURL ${MACOSX_SPARKLE_UPDATE_FEED_URL} CFBundleDocumentTypes CFBundleTypeExtensions zip mrpack CFBundleTypeName ${Launcher_DisplayName} instance CFBundleTypeOSTypes TEXT utxt TUTX **** CFBundleTypeRole Viewer LSHandlerRank Alternate CFBundleURLTypes CFBundleURLName Curseforge CFBundleURLSchemes curseforge CFBundleURLName ${Launcher_Name} CFBundleURLSchemes prismlauncher ${MACOSX_BUNDLE_EXECUTABLE_NAME} PrismLauncher-11.0.2/cmake/vcpkg-triplets/0000755000175100017510000000000015166745067020034 5ustar runnerrunnerPrismLauncher-11.0.2/cmake/vcpkg-triplets/universal-osx.cmake0000644000175100017510000000045615166745067023662 0ustar runnerrunner# See https://github.com/microsoft/vcpkg/discussions/19454 # NOTE: Try to keep in sync with default arm64-osx definition set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_CMAKE_SYSTEM_NAME Darwin) set(VCPKG_OSX_ARCHITECTURES "arm64;x86_64") PrismLauncher-11.0.2/buildconfig/0000755000175100017510000000000015166745067016263 5ustar runnerrunnerPrismLauncher-11.0.2/buildconfig/BuildConfig.h0000644000175100017510000001515415166745067020627 0ustar runnerrunner// SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 Jamie Mansfield * Copyright (C) 2022 Sefa Eyeoglu * Copyright (C) 2023 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * This file incorporates work covered by the following copyright and * permission notice: * * Copyright 2013-2021 MultiMC Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include /** * \brief The Config class holds all the build-time information passed from the build system. */ class Config { public: Config(); QString LAUNCHER_NAME; QString LAUNCHER_APP_BINARY_NAME; QString LAUNCHER_DISPLAYNAME; QString LAUNCHER_COPYRIGHT; QString LAUNCHER_DOMAIN; QString LAUNCHER_CONFIGFILE; QString LAUNCHER_GIT; QString LAUNCHER_APPID; QString LAUNCHER_SVGFILENAME; QString LAUNCHER_ENVNAME; /// The major version number. int VERSION_MAJOR; /// The minor version number. int VERSION_MINOR; /// The patch version number. int VERSION_PATCH; /** * The version channel * This is used by the updater to determine what channel the current version came from. */ QString VERSION_CHANNEL; bool UPDATER_ENABLED = false; bool JAVA_DOWNLOADER_ENABLED = false; /// A short string identifying this build's platform or distribution. QString BUILD_PLATFORM; /// A short string identifying this build's valid artifacts int he updater. For example, "lin64" or "win32". QString BUILD_ARTIFACT; /// A string containing the build timestamp QString BUILD_DATE; /// A string identifying the compiler use to build QString COMPILER_NAME; /// A string identifying the compiler version used to build QString COMPILER_VERSION; /// A string identifying the compiler target system os QString COMPILER_TARGET_SYSTEM; /// A String identifying the compiler target system version QString COMPILER_TARGET_SYSTEM_VERSION; /// A String identifying the compiler target processor QString COMPILER_TARGET_SYSTEM_PROCESSOR; /// URL for the updater's channel QString UPDATER_GITHUB_REPO; /// The public key used to sign releases for the Sparkle updater appcast QString MAC_SPARKLE_PUB_KEY; /// URL for the Sparkle updater's appcast QString MAC_SPARKLE_APPCAST_URL; /// User-Agent to use. QString USER_AGENT; /// The git commit hash of this build QString GIT_COMMIT; /// The git tag of this build QString GIT_TAG; /// The git refspec of this build QString GIT_REFSPEC; /** * This is used to fetch the news RSS feed. * It defaults in CMakeLists.txt to "https://multimc.org/rss.xml" */ QString NEWS_RSS_URL; /** * URL that gets opened when the user clicks "More News" */ QString NEWS_OPEN_URL; /** * URL that gets opened when the user clicks 'Launcher Help' */ QString WIKI_URL; /** * URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help in a dialog window */ QString HELP_URL; /** * URL that gets opened when the user succesfully logins. */ QString LOGIN_CALLBACK_URL; /** * Client ID you can get from Imgur when you register an application */ QString IMGUR_CLIENT_ID; /** * Client ID you can get from Microsoft Identity Platform when you register an application */ QString MSA_CLIENT_ID; /** * Client API key for CurseForge */ QString FLAME_API_KEY; /** * Metadata repository URL prefix */ QString META_URL; QString GLFW_LIBRARY_NAME; QString OPENAL_LIBRARY_NAME; QString BUG_TRACKER_URL; QString TRANSLATIONS_URL; QString MATRIX_URL; QString DISCORD_URL; QString SUBREDDIT_URL; QString DEFAULT_RESOURCE_BASE = "https://resources.download.minecraft.net/"; QString LIBRARY_BASE = "https://libraries.minecraft.net/"; QString IMGUR_BASE_URL = "https://api.imgur.com/3/"; QString LEGACY_FMLLIBS_BASE_URL; QString TRANSLATION_FILES_URL; QString FTB_API_BASE_URL = "https://api.feed-the-beast.com/v1/modpacks/public"; QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/"; QString ATL_DOWNLOAD_SERVER_URL = "https://download.nodecdn.net/containers/atl/"; QString ATL_API_BASE_URL = "https://api.atlauncher.com/v1/"; QString TECHNIC_API_BASE_URL = "https://api.technicpack.net/"; /** * The build that is reported to the Technic API. */ QString TECHNIC_API_BUILD = "multimc"; QString MODRINTH_STAGING_URL = "https://staging-api.modrinth.com/v2"; QString MODRINTH_PROD_URL = "https://api.modrinth.com/v2"; QStringList MODRINTH_MRPACK_HOSTS{ "cdn.modrinth.com", "github.com", "raw.githubusercontent.com", "gitlab.com" }; QString FLAME_BASE_URL = "https://api.curseforge.com/v1"; QString versionString() const; /** * \brief Converts the Version to a string. * \return The version number in string format (major.minor.revision.build). */ QString printableVersionString() const; /** * \brief Compiler ID String * \return a string of the form "Name - Version" of just "Name" if the version is empty */ QString compilerID() const; /** * \brief System ID String * \return a string of the form "OS Verison Processor" */ QString systemID() const; }; extern const Config BuildConfig; PrismLauncher-11.0.2/buildconfig/CMakeLists.txt0000644000175100017510000000063415166745067021026 0ustar runnerrunner######## Configure the file with build properties ######## configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BuildConfig.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp") add_library(BuildConfig STATIC BuildConfig.h ${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp ) target_link_libraries(BuildConfig Qt${QT_VERSION_MAJOR}::Core) target_include_directories(BuildConfig PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") PrismLauncher-11.0.2/buildconfig/BuildConfig.cpp.in0000644000175100017510000001315715166745067021570 0ustar runnerrunner// SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2022 Sefa Eyeoglu * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * This file incorporates work covered by the following copyright and * permission notice: * * Copyright 2013-2021 MultiMC Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include "BuildConfig.h" const Config BuildConfig; Config::Config() { // Name and copyright LAUNCHER_NAME = "@Launcher_Name@"; LAUNCHER_APP_BINARY_NAME = "@Launcher_APP_BINARY_NAME@"; LAUNCHER_DISPLAYNAME = "@Launcher_DisplayName@"; LAUNCHER_COPYRIGHT = "@Launcher_Copyright@"; LAUNCHER_DOMAIN = "@Launcher_Domain@"; LAUNCHER_CONFIGFILE = "@Launcher_ConfigFile@"; LAUNCHER_GIT = "@Launcher_Git@"; LAUNCHER_APPID = "@Launcher_AppID@"; LAUNCHER_SVGFILENAME = "@Launcher_SVGFileName@"; LAUNCHER_ENVNAME = "@Launcher_ENVName@"; USER_AGENT = "@Launcher_UserAgent@"; // Version information VERSION_MAJOR = @Launcher_VERSION_MAJOR@; VERSION_MINOR = @Launcher_VERSION_MINOR@; VERSION_PATCH = @Launcher_VERSION_PATCH@; BUILD_PLATFORM = "@Launcher_BUILD_PLATFORM@"; BUILD_ARTIFACT = "@Launcher_BUILD_ARTIFACT@"; BUILD_DATE = "@Launcher_BUILD_TIMESTAMP@"; UPDATER_GITHUB_REPO = "@Launcher_UPDATER_GITHUB_REPO@"; COMPILER_NAME = "@Launcher_COMPILER_NAME@"; COMPILER_VERSION = "@Launcher_COMPILER_VERSION@"; COMPILER_TARGET_SYSTEM = "@Launcher_COMPILER_TARGET_SYSTEM@"; COMPILER_TARGET_SYSTEM_VERSION = "@Launcher_COMPILER_TARGET_SYSTEM_VERSION@"; COMPILER_TARGET_SYSTEM_PROCESSOR = "@Launcher_COMPILER_TARGET_PROCESSOR@"; MAC_SPARKLE_PUB_KEY = "@MACOSX_SPARKLE_UPDATE_PUBLIC_KEY@"; MAC_SPARKLE_APPCAST_URL = "@MACOSX_SPARKLE_UPDATE_FEED_URL@"; if (!MAC_SPARKLE_PUB_KEY.isEmpty() && !MAC_SPARKLE_APPCAST_URL.isEmpty()) { UPDATER_ENABLED = true; } else if (!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) { UPDATER_ENABLED = true; } #cmakedefine01 Launcher_ENABLE_JAVA_DOWNLOADER JAVA_DOWNLOADER_ENABLED = Launcher_ENABLE_JAVA_DOWNLOADER; GIT_COMMIT = "@Launcher_GIT_COMMIT@"; GIT_TAG = "@Launcher_GIT_TAG@"; GIT_REFSPEC = "@Launcher_GIT_REFSPEC@"; // Assume that builds outside of Git repos are "stable" if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND") || GIT_TAG == QStringLiteral("GITDIR-NOTFOUND") || GIT_REFSPEC == QStringLiteral("") || GIT_TAG == QStringLiteral("GIT-NOTFOUND")) { GIT_REFSPEC = "refs/heads/stable"; GIT_TAG = versionString(); GIT_COMMIT = ""; } if (GIT_REFSPEC.startsWith("refs/heads/")) { VERSION_CHANNEL = GIT_REFSPEC; VERSION_CHANNEL.remove("refs/heads/"); } else if (!GIT_COMMIT.isEmpty()) { VERSION_CHANNEL = GIT_COMMIT.mid(0, 8); } else { VERSION_CHANNEL = "unknown"; } NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@"; NEWS_OPEN_URL = "@Launcher_NEWS_OPEN_URL@"; WIKI_URL = "@Launcher_WIKI_URL@"; HELP_URL = "@Launcher_HELP_URL@"; LOGIN_CALLBACK_URL = "@Launcher_LOGIN_CALLBACK_URL@"; IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@"; MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@"; FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@"; META_URL = "@Launcher_META_URL@"; LEGACY_FMLLIBS_BASE_URL = "@Launcher_LEGACY_FMLLIBS_BASE_URL@"; GLFW_LIBRARY_NAME = "@Launcher_GLFW_LIBRARY_NAME@"; OPENAL_LIBRARY_NAME = "@Launcher_OPENAL_LIBRARY_NAME@"; BUG_TRACKER_URL = "@Launcher_BUG_TRACKER_URL@"; TRANSLATIONS_URL = "@Launcher_TRANSLATIONS_URL@"; TRANSLATION_FILES_URL = "@Launcher_TRANSLATION_FILES_URL@"; MATRIX_URL = "@Launcher_MATRIX_URL@"; DISCORD_URL = "@Launcher_DISCORD_URL@"; SUBREDDIT_URL = "@Launcher_SUBREDDIT_URL@"; } QString Config::versionString() const { return QString("%1.%2.%3").arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_PATCH); } QString Config::printableVersionString() const { QString vstr = versionString(); // If the build is not a main release, append the channel if (VERSION_CHANNEL != "stable" && GIT_TAG != vstr) { vstr += "-" + VERSION_CHANNEL; } return vstr; } QString Config::compilerID() const { if (COMPILER_VERSION.isEmpty()) return COMPILER_NAME; return QStringLiteral("%1 - %2").arg(COMPILER_NAME).arg(COMPILER_VERSION); } QString Config::systemID() const { return QStringLiteral("%1 %2 %3").arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION, COMPILER_TARGET_SYSTEM_PROCESSOR); } PrismLauncher-11.0.2/CONTRIBUTING.md0000644000175100017510000001665415166745067016243 0ustar runnerrunner# Contributions Guidelines ## Restrictions on Generative AI Usage (AI Policy) > [!NOTE] > The following is adapted from [matplotlib's contributing guide](https://matplotlib.org/devdocs/devel/contribute.html#generative-ai) and the [Linux Kernel policy guide](https://www.kernel.org/doc./html/next/process/coding-assistants.html) We expect authentic engagement in our community. - Do not post output from Large Language Models or similar generative AI as comments on GitHub or our discord server, as such comments tend to be formulaic and low-quality content. - If you use generative AI tools as an aid in developing code or documentation changes, ensure that you fully understand the proposed changes and can explain why they are the correct approach. Make sure you have added value based on your personal competency to your contributions. Just taking some input, feeding it to an AI and posting the result is not of value to the project. To preserve precious core developer capacity, we reserve the right to rigorously reject seemingly AI generated low-value contributions. ### Signed-off-by and Developer Certificate of Origin AI agents MUST NOT add Signed-off-by tags. Only humans can legally certify the Developer Certificate of Origin (DCO). The human submitter is responsible for: - Reviewing all AI-generated code - Ensuring compliance with licensing requirements - Adding their own Signed-off-by tag to certify the DCO - Taking full responsibility for the contribution See [Signing your work](#signing-your-work) for more information. ### Attribution When AI tools contribute to development, proper attribution helps track the evolving role of AI in the development process. Contributions should include an Assisted-by tag in the commit message with the following format: ```text Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2] ``` Where: - `AGENT_NAME` is the name of the AI tool or framework - `MODEL_VERSION` is the specific model version used - `[TOOL1] [TOOL2]` are optional specialized analysis tools used (e.g., coccinelle, sparse, smatch, clang-tidy) Basic development tools (git, gcc, make, editors) should not be listed. Example: ```text Assisted-by: Claude:claude-3-opus coccinelle sparse ``` ## Code style All files are formatted with `clang-format` using the configuration in `.clang-format`. Ensure it is run on changed files before committing! Please also follow the project's conventions for C++: - Class and type names should be formatted as `PascalCase`: `MyClass`. - Private or protected class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. - Private or protected `static` class data members should be formatted as `camelCase` prefixed with `s_`: `s_instance`. - Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`. - Public, private or protected `static const` class data members should be formatted as `SCREAMING_SNAKE_CASE`: `MAX_VALUE`. - Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`. - Global functions and non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. - `const` global variables and macros should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. - enum constants should be formatted as `PascalCase`: `CamelusBactrianus` - Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`. - Avoid using `[[nodiscard]]` unless ignoring the return value is likely to cause a bug in cases such as: - A function allocates memory or another resource and the caller needs to clean it up. - A function has side effects and an error status is returned. - A function is likely be mistaken for having side effects. - A plain getter is unlikely to cause confusion and adding `[[nodiscard]]` can create clutter and inconsistency. Most of these rules are included in the `.clang-tidy` file, so you can run `clang-tidy` to check for any violations. Here is what these conventions with the formatting configuration look like: ```c++ #define AWESOMENESS 10 constexpr double PI = 3.14159; enum class PizzaToppings { HamAndPineapple, OreoAndKetchup }; struct Person { QString name; QDateTime dateOfBirth; long daysOld() const { return dateOfBirth.daysTo(QDateTime::currentDateTime()); } }; class ImportantClass { public: void incrementCounter() { if (m_counter + 1 > MAX_COUNTER_VALUE) throw std::runtime_error("Counter has reached limit!"); ++m_counter; } int counter() const { return m_counter; } private: static constexpr int MAX_COUNTER_VALUE = 100; int m_counter; }; ImportantClass importantClassInstance; ``` If you see any names which do not follow these conventions, it is preferred that you leave them be - renames increase the number of changes therefore make reviewing harder and make your PR more prone to conflicts. However, if you're refactoring a whole class anyway, it's fine. ## Signing your work In an effort to ensure that the code you contribute is actually compatible with the licenses in this codebase, we require you to sign-off all your contributions. This can be done by appending `-s` to your `git commit` call, or by manually appending the following text to your commit message: ```text Signed-off-by: Author name ``` By signing off your work, you agree to the terms below: ```text Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` These terms will be enforced once you create a pull request, and you will be informed automatically if any of your commits aren't signed-off by you. As a bonus, you can also [cryptographically sign your commits][gh-signing-commits] and enable [vigilant mode][gh-vigilant-mode] on GitHub. [gh-signing-commits]: https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits [gh-vigilant-mode]: https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits ## Backporting to Release Branches We use [automated backports](https://github.com/PrismLauncher/PrismLauncher/blob/develop/.github/workflows/backport.yml) to merge specific contributions from develop into `release` branches. This is done when pull requests are merged and have labels such as `backport release-7.x` - which should be added along with the milestone for the release. PrismLauncher-11.0.2/CODE_OF_CONDUCT.md0000644000175100017510000001310415166745067016574 0ustar runnerrunner# Contributor Covenant Code of Conduct This is a modified version of the Contributor Covenant. See commit history to see our changes. ## Our Pledge We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. ## Our Standards Examples of behavior that contributes to a positive environment for our community include: * Demonstrating empathy and kindness toward other people * Being respectful of differing opinions, viewpoints, and experiences * Giving and gracefully accepting constructive feedback * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience * Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: * The use of sexualized language or imagery, and sexual attention or advances of any kind * Trolling (antagonistic, inflammatory, insincere behaviour), insulting or derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or email address, without their explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. ## Scope This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement via email at [coc@scrumplex.net](mailto:coc@scrumplex.net) (Email address subject to change). All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. ## Enforcement Guidelines Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: ### 1. Correction **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. ### 2. Warning **Community Impact**: A violation through a single incident or series of actions. **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. ### 3. Temporary Ban **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within the community. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations]. [homepage]: https://www.contributor-covenant.org [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html [Mozilla CoC]: https://github.com/mozilla/diversity [FAQ]: https://www.contributor-covenant.org/faq [translations]: https://www.contributor-covenant.org/translations PrismLauncher-11.0.2/.gitignore0000644000175100017510000000122615166745067015767 0ustar runnerrunnerThumbs.db *.kdev4 .user .directory resources/CMakeFiles *~ *.swp html/ # Project Files *.pro.user CMakeLists.txt.user CMakeLists.txt.user.* CMakeSettings.json /CMakeFiles CMakeCache.txt CMakeUserPresets.json /.project /.settings /.idea /.vscode /.vs cmake-build-*/ Debug compile_commands.json # Build dirs build /build-* # Install dirs install /install-* # Ctags File tags # YouCompleteMe config stuff. .ycm_extra_conf.* #OSX Stuff .DS_Store branding/ secrets/ run/ .cache/ # Nix/NixOS .direnv/ ## Used when manually invoking stdenv phases outputs/ ## Regular artifacts result result-* repl-result-* # Flatpak .flatpak-builder flatbuild # Snap *.snap PrismLauncher-11.0.2/flake.nix0000644000175100017510000001566615166745067015616 0ustar runnerrunner{ description = "A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)"; nixConfig = { extra-substituters = [ "https://prismlauncher.cachix.org" ]; extra-trusted-public-keys = [ "prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c=" ]; }; inputs = { nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; libnbtplusplus = { url = "github:PrismLauncher/libnbtplusplus"; flake = false; }; }; outputs = { self, nixpkgs, libnbtplusplus, }: let inherit (nixpkgs) lib; # While we only officially support aarch and x86_64 on Linux and MacOS, # we expose a reasonable amount of other systems for users who want to # build for most exotic platforms systems = lib.systems.flakeExposed; forAllSystems = lib.genAttrs systems; nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system}); in { checks = forAllSystems ( system: let pkgs = nixpkgsFor.${system}; llvm = pkgs.llvmPackages_22; in { formatting = pkgs.runCommand "check-formatting" { nativeBuildInputs = with pkgs; [ deadnix llvm.clang-tools markdownlint-cli nixfmt-rfc-style statix ]; } '' cd ${self} echo "Running clang-format...." clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp} echo "Running deadnix..." deadnix --fail echo "Running markdownlint..." markdownlint --dot . echo "Running nixfmt..." find -type f -name '*.nix' -exec nixfmt --check {} + echo "Running statix" statix check . touch $out ''; } ); devShells = forAllSystems ( system: let pkgs = nixpkgsFor.${system}; llvm = pkgs.llvmPackages_22; python = pkgs.python3; mkShell = pkgs.mkShell.override { inherit (llvm) stdenv; }; packages' = self.packages.${system}; welcomeMessage = '' Welcome to the Prism Launcher repository! 🌈 We just set some things up for you. To get building, you can run: ``` $ cd "$cmakeBuildDir" $ ninjaBuildPhase $ ninjaInstallPhase ``` Feel free to ask any questions in our Discord server or Matrix space: - https://prismlauncher.org/discord - https://matrix.to/#/#prismlauncher:matrix.org And thanks for helping out :) ''; # Re-use our package wrapper to wrap our development environment qt-wrapper-env = packages'.prismlauncher.overrideAttrs (old: { name = "qt-wrapper-env"; # Required to use script-based makeWrapper below strictDeps = true; # We don't need/want the unwrapped Prism package paths = [ ]; nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ # Ensure the wrapper is script based so it can be sourced pkgs.makeWrapper ]; # Inspired by https://discourse.nixos.org/t/python-qt-woes/11808/10 buildCommand = '' makeQtWrapper ${lib.getExe pkgs.runtimeShellPackage} "$out" sed -i '/^exec/d' "$out" ''; }); in { default = mkShell { name = "prism-launcher"; inputsFrom = [ packages'.prismlauncher-unwrapped ]; packages = [ pkgs.ccache llvm.clang-tools python # NOTE(@getchoo): Required for run-clang-tidy, etc. (pkgs.stdenvNoCC.mkDerivation { pname = "clang-tidy-diff"; inherit (llvm.clang) version; nativeBuildInputs = [ pkgs.installShellFiles python.pkgs.wrapPython ]; dontUnpack = true; dontConfigure = true; dontBuild = true; postInstall = "installBin ${llvm.libclang.python}/share/clang/clang-tidy-diff.py"; postFixup = "wrapPythonPrograms"; }) ]; cmakeBuildType = "Debug"; cmakeFlags = [ "-GNinja" ] ++ packages'.prismlauncher-unwrapped.cmakeFlags; dontFixCmake = true; shellHook = '' echo "Sourcing ${qt-wrapper-env}" source ${qt-wrapper-env} git submodule update --init --force if [ ! -f compile_commands.json ]; then cmakeConfigurePhase cd .. ln -s "$cmakeBuildDir"/compile_commands.json compile_commands.json fi echo ${lib.escapeShellArg welcomeMessage} ''; }; } ); formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style); overlays.default = final: prev: let llvm = final.llvmPackages_22 or prev.llvmPackages_22; in { prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { inherit (llvm) stdenv; inherit libnbtplusplus self ; }; prismlauncher = final.callPackage ./nix/wrapper.nix { }; }; packages = forAllSystems ( system: let pkgs = nixpkgsFor.${system}; # Build a scope from our overlay prismPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs); # Grab our packages from it and set the default packages = { inherit (prismPackages) prismlauncher-unwrapped prismlauncher; default = prismPackages.prismlauncher; }; in # Only output them if they're available on the current system lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages ); # We put these under legacyPackages as they are meant for CI, not end user consumption legacyPackages = forAllSystems ( system: let packages' = self.packages.${system}; legacyPackages' = self.legacyPackages.${system}; in { prismlauncher-debug = packages'.prismlauncher.override { prismlauncher-unwrapped = legacyPackages'.prismlauncher-unwrapped-debug; }; prismlauncher-unwrapped-debug = packages'.prismlauncher-unwrapped.overrideAttrs { cmakeBuildType = "Debug"; dontStrip = true; }; } ); }; } PrismLauncher-11.0.2/launcher/0000755000175100017510000000000015166745067015577 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/LoggedProcess.cpp0000644000175100017510000001352015166745067021044 0ustar runnerrunner// SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2022,2023 Sefa Eyeoglu * Copyright (c) 2023 flowln * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * This file incorporates work covered by the following copyright and * permission notice: * * Copyright 2013-2021 MultiMC Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "LoggedProcess.h" #include #include #include "MessageLevel.h" LoggedProcess::LoggedProcess(const QStringConverter::Encoding output_codec, QObject* parent) : QProcess(parent), m_err_decoder(output_codec), m_out_decoder(output_codec) { // QProcess has a strange interface... let's map a lot of those into a few. connect(this, &QProcess::readyReadStandardOutput, this, &LoggedProcess::on_stdOut); connect(this, &QProcess::readyReadStandardError, this, &LoggedProcess::on_stdErr); connect(this, &QProcess::finished, this, &LoggedProcess::on_exit); connect(this, &QProcess::errorOccurred, this, &LoggedProcess::on_error); connect(this, &QProcess::stateChanged, this, &LoggedProcess::on_stateChange); } LoggedProcess::~LoggedProcess() { if (m_is_detachable) { setProcessState(QProcess::NotRunning); } } QStringList LoggedProcess::reprocess(const QByteArray& data, QStringDecoder& decoder) { QString str = decoder(data); if (!m_leftover_line.isEmpty()) { str.prepend(m_leftover_line); m_leftover_line = ""; } auto lines = str.remove(QChar::CarriageReturn).split(QChar::LineFeed); m_leftover_line = lines.takeLast(); return lines; } void LoggedProcess::on_stdErr() { auto lines = reprocess(readAllStandardError(), m_err_decoder); emit log(lines, MessageLevel::StdErr); } void LoggedProcess::on_stdOut() { auto lines = reprocess(readAllStandardOutput(), m_out_decoder); emit log(lines, MessageLevel::StdOut); } void LoggedProcess::on_exit(int exit_code, QProcess::ExitStatus status) { // save the exit code m_exit_code = exit_code; // based on state, send signals if (!m_is_aborting) { if (status == QProcess::NormalExit) { //: Message displayed on instance exit emit log({ tr("Process exited with code %1.").arg(exit_code) }, MessageLevel::Launcher); changeState(LoggedProcess::Finished); } else { //: Message displayed on instance crashed if (exit_code == -1) emit log({ tr("Process crashed.") }, MessageLevel::Launcher); else emit log({ tr("Process crashed with exitcode %1.").arg(exit_code) }, MessageLevel::Launcher); changeState(LoggedProcess::Crashed); } } else { //: Message displayed after the instance exits due to kill request emit log({ tr("Process was killed by user.") }, MessageLevel::Error); changeState(LoggedProcess::Aborted); } } void LoggedProcess::on_error(QProcess::ProcessError error) { switch (error) { case QProcess::FailedToStart: { emit log({ tr("The process failed to start.") }, MessageLevel::Fatal); changeState(LoggedProcess::FailedToStart); break; } // we'll just ignore those... never needed them case QProcess::Crashed: case QProcess::ReadError: case QProcess::Timedout: case QProcess::UnknownError: case QProcess::WriteError: break; } } void LoggedProcess::kill() { m_is_aborting = true; QProcess::kill(); } int LoggedProcess::exitCode() const { return m_exit_code; } void LoggedProcess::changeState(LoggedProcess::State state) { if (state == m_state) return; m_state = state; emit stateChanged(m_state); } LoggedProcess::State LoggedProcess::state() const { return m_state; } void LoggedProcess::on_stateChange(QProcess::ProcessState state) { switch (state) { case QProcess::NotRunning: break; // let's not - there are too many that handle this already. case QProcess::Starting: { if (m_state != LoggedProcess::NotRunning) { qWarning() << "Wrong state change for process from state" << m_state << "to" << (int)LoggedProcess::Starting; } changeState(LoggedProcess::Starting); return; } case QProcess::Running: { if (m_state != LoggedProcess::Starting) { qWarning() << "Wrong state change for process from state" << m_state << "to" << (int)LoggedProcess::Running; } changeState(LoggedProcess::Running); return; } } } void LoggedProcess::setDetachable(bool detachable) { m_is_detachable = detachable; } PrismLauncher-11.0.2/launcher/resources/0000755000175100017510000000000015166745067017611 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/sources/0000755000175100017510000000000015166745067021274 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/sources/enderpearl.svg0000644000175100017510000002353015166745067024141 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/steve.svg0000644000175100017510000003340415166745067023147 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/magitech.svg0000644000175100017510000012035515166745067023604 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/netherstar.svg0000644000175100017510000002635215166745067024204 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/meat.svg0000644000175100017510000002216715166745067022753 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/cattiversary.xcf0000644000175100017510000035551315166745067024532 0ustar runnerrunnergimp xcf v011¡u–BBÍgimp-image-grid¬(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 16) (yspacing 16) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) gimp-image-metadataå 8 8 8 629 417 1 2 300/1 300/1 1 1 LN uburfcat_hat.pngÿ!?€ "     %$ÿÿÿÿ#ÿÿÿÿ\ u˜MïMûNN uØèK[k{‹›$833>3N3^3n3~=7J™J¯J¿JÏJßJïJÿKKK/K?KOK_KoKKKŸK¯K¿KÏKßKïKÿLLL/L?LOL_LoLLLŸL¯L¿LÏLßLïLÿMMM/M?MOM_MoMMMŸM¯M¿MÏMß­üSc(ü  úS®òòi&ø þ}òÿh&ÿþ þÄòÿg&þÿþÓòþà'ý þþ½òýæh*þ þþ…òþŽ-ýÿÿSòýÆS0óŽòòª,î(/  CòòŽ+í;Y„‘m?6'ò›)üG—÷W ·*þ —ÿaÿ(þ;‘—þvC9ÿú D8'$ø e——A9ÿùEŽ~A$üuSû2 ý Do—ýŽ?-ù M¨?üCx—ý9*÷ M¦ÖZþB—þo(öTÓÛŸ)þB—ý%ô,Ïñ¼. þB—þŽ%ô#Ïñæe þB—ÿ\$ú™òíˆü  úh—b#ú~òò”úý;$þkòÿQøD-úÝòòœÿýT\-û1êòòWÿüH÷,û§ðã5ÿ úQÿÐ,ü‚B÷oÿÿ¥4ù —ÿþƒ7ýVÏãÿþû,7ÿVÿÿ‹8ÿVÿúÏ\N4ÿVÿùd;;3ÿVÿþ0;ÿG3ÿVÿþ;þ0 2ÿVÿþ0;þ81ÿVÿýd;ÿI1ÿVÿýÇ=þY0ÿVÿü=;þ^0ÿVÿüû;ý /ÿVÿ÷Ïd00dǽ.ÿVÿþ“-ÿVÿþw,ÿVÿÿV,ÿVÿþÚ+ÿVÿþ¨*ÿVÿþ…)ÿVÿÿZ)ÿVÿþí(ÿV ÿÿ“ÿþÀ'ÿV ÿþÛÿþ“&ÿV ÿýdçÿÿw&ÿV ÿüç³ÿ&ÿV ÿüp‹ÿ&þèÿûç\ÿ'ÿËÿûp(«(0ÿ'ð´H@`ƒ§Ëëÿï5Ãò—ûÿ'ýËç(ø —òòÙ(Óÿ'õËÿç(5Ÿ——Ãòö—$Hl¯Ó÷ÿ'ùËÿÿç<§òÿÒ—ÿ(ÿd'ÿËÿüó<(Ò òú—8¿ÿ'ÿËÿüóD(Òòûà—($¯ÿ­ü=H(üN8 ú=±±M&ø`›¨¨|8 þ[±ÿL&ÿe¨þIþ±ÿK&þ" ¨ÿ:þš±þ¤'ýFž¨þ þбý¨L*þW¨þ„þa±þh-ý8Œ¨ÿ:ÿ=±ý‘=0óe¨¨Šh±±|,îN¨¨=1±±h+í%8=<.8¨¨±q)ü <@÷$¨†*þ 6 @ÿ)1þ=@þ2ÿú$ø*@@<ÿ`ÿ<ý5$ü1#û$`ý/@ý<-ù8z.`‰ý 2@ý;*÷ 8yAh†hþ@þ/(ö=šŸt8¨;þ@þ5 &ô–°Š" 8¨vþ@þ; %ô—°¨JK¨¨8þ@ÿ&$úp±­c üV¨¨Gú,@;*#ú\±±l új¨¨^ý$þN±ÿ;ø•¨¨‰-ú¡±±rÿ8¨ý8-û$«±±@ÿ8¨ü8D,ûz¯¦(ÿ=¨úQG9,ü_0¨÷|8GG.4ù¨I*Gþ$7ý9?GþE 7ÿGÿ&8ÿGú9"¢’'4ÿGù!¦¨¨ %3ÿGþ m¨ÿƒ3ÿGþm¨ÿ)2ÿGþ m¨þ¤'1ÿGý!¦¨ÿ†1ÿGý7n¨þ¤0ÿGü#!n¦¨ÿ™1ÿGüE#!mý!/ÿG÷9  74.ÿGþ)-ÿGþ!,ÿGÿ,ÿGþ<+ÿGþ.*ÿGþ%)ÿGÿ)ÿGþB(ÿ Gÿ(Gþ5'ÿ Gþ<Gþ)&ÿ Gý@Gÿ!&ÿ Gü@1G&ÿ Gü&G&þ@Gû@G'ÿ8Gû(( G'ð1$.8AGB.š±€EG'ý8@ ø€±±§(:G'õ8G@ .…€€š±ö€ '0:DG'ù8GG@бÿ¢€ÿ(ÿ'ÿ8GüC(¢ ±ú€5G'ÿ8GüC(¢±ûª€( 0G­ü(üS< ú+==&øf¥³³…< þ=ÿ&ÿk³þNþ1=ÿ&þ$ª³ÿ>þ5=þ8'ýK©³þªþ/=ý:*þ]³þþ!=þ#-ý<–³ÿ>ÿ=ý20ól³³“#==*,î6@ T³³A==#+íOy³ÄÔUI<³³ =')ü'`¿Ì÷u ³.*þ ¯ Ìÿ„þ'þPÄÌþ [Mÿú\M5$øˆÌÌ¿WMÿgù^ÃÂÁªX$üŸqû gý\—ÌýÀU-ù*g’ü\¢Ìý¿M*÷)6nnþYÌþ•)÷46( <³?þYÌý­(&õ 3<. <³~þYÌþÁ(%û 3<9üP³³<þYÌÿ~$ú&=;!ü\³³LúÌ¿†#ú==$úq³³dýP$þ=ÿøž³³’ -ú7=='ÿ<³ý< #-û :==ÿ<³ü<_ ,û)<8 ÿA³úWbP ,ü ³÷„<*bb? 4ù³N:bþ27ý!OWbþ`7ÿ!bÿ58ÿ!búOŒ|4ÿ!bù& ³³—3ÿ!bþ[³ÿo3ÿ!bþ[³þ¦2ÿ!bþ[³þ1ÿ!bý& ³ÿq1ÿ!býL^³þŽ0ÿ!bü0^ ³ÿ…1ÿ!bü`0[ý/ÿ!b÷O&&LH .ÿ!bþ8 -ÿ!bþ. ,ÿ!bÿ!,ÿ!bþT +ÿ!bþ@ *ÿ!bþ3 )ÿ!bÿ")ÿ!bþ[ (ÿ! bÿ8bþJ 'ÿ! bþT bþ8 &ÿ! bý&Xbÿ.&ÿ! büXDb&ÿ! bü+5b&þ YbûX#b'ÿNbû+#W#b'ðE$2@NZb[*L=N`b'ýNXø N==K#Qb'õNbX*RNNL=öN )6CQ^b'ùNbbXU=ÿLNÿ#ÿ&'ÿNbü]#L =úNIb'ÿNbü]#L=ûIN# Cb.ü+…Ò˜$û_Rý“ßÿþå !÷S¦åÿó› ÷`ëÿÿôíü± õ3¢Üòôêÿÿï`õ »ÿÿèÿÿðùŒóHâúóßëÿÿæÿÿ€üT÷ÿõÿýñôs û »þûÝÿýýÿƒüTûÿæÿýñïh úøÿùÄðÿýüÿPü ÷ÿèÿüìòø~ þðÿþñîÿ÷ðÿó¿ÿçÿþðñÿÿt!ø$`Ïÿÿóÿùåÿ—`ÿòÿùïÿÿÓ–i&ûH¿ÿÿæÿüüû$ÛÿûæÿÿÏP'ê8t€x“ôÿìÿÿåÿÀÿïÿÿèÿóT'ý8¯÷ÿúóÿùÿÿúÿüïÿç0&õ0Ãÿÿýéë÷øëøÿüëÿÏ%ú”üÿòðÿÿôÿûö×ÿß &ü°ÿþð ÿòàÿÿþÿþÿý´ Ÿ|P "ü4èïúÿþêôÿÿþ ÿý÷¯P ørïõÿÿðöÿÿïßÿëÿõñÚ÷ðõñüÿÿÏLöRæõÚçÿÿ·XþNâÿÿùÿÿöÿúîñÿÿŸ ù1Íöõÿ×4û…ÿÿöÿú“|Óÿÿíÿûì÷ÿÛ(úCëÿ´ùºÿþöÿüÿùþ<dëÿýÿüîÿë<üHóÏ ø(Ûÿüêÿõðÿùé›ÿýÿüîÿó<þ( ø çÿ÷üûÿWÿù¿ÿýÿüõÿô2!õ ×ÿñùûÿ¬ ÿìÿÿ‹ýÿýÿüêÿêô»ÿíÿúÿå8ÿåÿÿTö£ÿçÿ÷ñôûÿ|ô—ÿóÿÿöÿLTÿÛÿóó(ïÿõûûò¼xý0ûüÿúÏ€ÿèÿñøÿÿÓ lÿýÚªnôÁÿïÿÿêÿd«ÿõúÿÿ§Úÿ!ü\ÿ÷øÿûïÓÿÿóÿút:C"ótõûûþõÿ‹ûúÿûåÿÿû@&õLÖøñÞÿLXÿÿüÿûêÿÿç&óZæöûÿ£ÿÿîÿ÷õÿÿË "û¢õÿíÿìÿÿ÷ÿ÷þÿÿ´ !óFÛÿÆ8ÿýólß ÿúš!ü€Óyû, ßÿöýÿÿüc +ÿß ÿúò-+ÿß ÿûÚ+ÿßÿüŸ+ÿÛÿüþ`+ÿ¿ÿýö1+ÿ¿ ÿûþÿÿÛ+ÿ¿ÿÿ“+ÿ¿ÿÿ\*ÿ¿ÿûæÿÿó,)ÿ¿ÿûîÿÿÛ (ÿ¿ÿüùÿÿ³(ÿ¿ÿÿ|'ÿ¿ÿûçÿÿûD&ÿŸÿûéÿÿë%ÿŸÿûóÿÿË$ÿŸÿüüÿÿ—$ÿŸÿÿìÿ$ÿŸÿýæÿÿ$ÿŸÿþîÿ$ÿŸÿÿù$ÿŸÿ$ÿŸÿ$üƒÿÿêÿ$ü€ÿÿÕÿ$ü€ÿÿÙÿ$ü€ÿÿÕÿ$ü€ÿÿÕÿ$ü€ÿÿÕÿ$ü€ÿÿÕÿ$ü€ÿÿÕÿ @ÿ>ÿV>þÜ=ýÿ¬<ÿþ…;ÿÿZ;ÿþî:ÿþÅ9ÿ÷ÿþ˜8ÿþw7ÿÿV7 @ÿ>ÿ>þ==ýG0<Gþ%;Gÿ;GþB:Gþ69ÿDGþ*8Gþ!7Gÿ7 @ÿ >ÿ!>þT =ýbB <bþ3 ;bÿ";bþ[ :bþK 9ÿ^bþ: 8bþ. 7bÿ!7 €ÿ`>þó0=ýÿß<ÿÿ·<ÿÿ€;ûçÿÿûH:úÿèÿÿë 9ÿûóÿÿË8ÿüüÿÿ›8ÿÿíÿÿ`7ÿûæÿÿ÷46ÿûíÿÿß5ÿûùÿÿ·4 ÿÿ€4'ÿËÿýó—òûÃ(›ûÿ'ÿ´ÿý(ÜòüîRp÷ÿ'ÿ±ÿý÷—òÿÜòþ—“ÿ'ÿ±ÿô«òË—RÆòò—dÿ'ÿ±ÿóû$(—(Ph(Æò—4ÿ'ÿ±ÿÿŸ÷@Ëÿÿƒ(—(ÿ'ÿ±ÿü$0·ÿÿÿÓÿ'ú±ÿÿ¯£ÿü§ÿ'û±ÿÿ³÷ ÿý—tÿ'ÿ±ÿþ«Pÿ'ÿšÿÿÃÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ“ÿ'ÿ~ÿ'ÿsÿ'ÿsÿ'ÿsÿ'ÿsÿ'ÿsÿ'ÿsÿùÏd00dÇ ÿ'ÿsÿüû‹;üûÿ'ÿsÿü‹=;ü;=ÿ'úaÿÿÏ=ý=Ïÿ'úVÿÿd;ý;lÿ'ûVÿÿ0;þ;4ÿ'ûVÿÿ;þ; ÿ'ûVÿÿ0;þ;0ÿ'úVÿÿd;ý;dÿ'úVÿÿÇ=ý=Çÿ'ÿVÿü=;ü;=tÿ'ÿVÿüû;ütûÿ'ÿVÿùÏd00dÇ ÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿ'ÿVÿý‡ÿÿ'ÿVÿüóóÿ'ÿVÿü££ÿ'ÿVÿüPPÿ'ÿVÿûóó'ÿVÿÿ£ÿ£'ÿVÿûX*·*\'ÿVÿú÷*Âò  'ÿVÿÿûßúŸyòòØ'ÿVÿþ«ÿ òÿy'ÿVÿþãDÿB°ÿÛòÿÛ'ÿV ÿü‹¼ò'ÿ8GýC€±ûš(+EG'ÿ2Gý'(¨±ü°MDG'ÿ1GýD€±ÿ¨±þ€(G'ÿ1Gô'±ž€Mœ±±€G'ÿ1GóE (€((œ±€G'ÿ1Gÿ,÷8GG$(€(G'ÿ1Gü 2Gÿ'ÿ:G'ú1GG0-Gü'.G'û1GG1D Gý* G'ÿ1Gþ/G'ÿ+Gÿ6G'ÿ)G'ÿ)G'ÿ)G'ÿ)G'ÿ)G'ÿ)G'ÿ)G'ÿ)G'ÿ#G'ÿ G'ÿ G'ÿ G'ÿ G'ÿ G'ÿ Gù9  7 G'ÿ GüE&!mü!#EG'ÿ Gü&!n¦¨ü¦n!#G'úGG9n¨ýn9G'úGG!¦¨ý¦!G'ûGG m¨þmG'ûGGm¨þmG'ûGG m¨þm G'úGG!¦¨ý¦!G'úGG7n¨ýn7G'ÿGü#!n¦¨ü¦n! G'ÿGüE#!mü! EG'ÿGù9  7 G'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿG'ÿGý%GG'ÿGüCCG'ÿGü--G'ÿGüG'ÿGûCC'ÿGÿ-ÿ-'ÿGû(('ÿGúD–±‚'ÿGÿE>ú,^±±£'ÿGþ/ÿ‚±ÿ^'ÿGþ?ÿ0Œÿ¦±ÿ¦'ÿ Gü&“±'ÿNbý]N=ûL# ;`b'ÿEbý6#K=ü?;+^b'ÿDbý^ N=ÿG=þN8b'ÿDbô6W=MN;M==N&b'ÿDbó` #N#'#M=Nb'ÿDbÿ=÷Nbb2#N#b'ÿDbü Fbÿ6ÿQb'úDbbC >bü6@b'ûDbbD^ bý:,b'ÿDbþAb'ÿ;bÿJb'ÿ8b'ÿ8b'ÿ8b'ÿ8b'ÿ8b'ÿ8b'ÿ8b'ÿ8b'ÿ0b'ÿ,b'ÿ,b'ÿ,b'ÿ,b'ÿ,b'ÿ,bùO&&L b'ÿ,bü`5[ü0`b'ÿ,bü5^ ³ü ^0b'ú%bbO^³ý^Ob'ú!bb& ³ý )b'û!bb[³þ[b'û!bb[³þ[b'û!bb[³þ[b'ú!bb& ³ý &b'ú!bbL^³ý^Lb'ÿ!bü0^ ³ü ^,b'ÿ!bü`0[ü,`b'ÿ!bùO&&L b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!b'ÿ!bý3bb'ÿ!bü]]b'ÿ!bü>>b'ÿ!büb'ÿ!bû]]'ÿ!bÿ>ÿ>'ÿ!bû! O #'ÿ!bú^ D=H'ÿ!bÿ`Uú=+==F'ÿ!bþAÿH=ÿ+'ÿ!bþWÿ*MÿE=ÿE'ÿ! bü5Q=$ü€ÿÿÕÿ$üdÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$ü`ÿÿ×ÿ$üHÿÿÝÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü@ÿÿàÿ$ü,ÿÿçÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$ü ÿÿìÿ$üÿÿ÷ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿïÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿßÿ%ÿÓÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ¿ÿ%ÿ·ÿ%ÿŸÿ%ÿŸÿ%ÿŸÿ%ÿŸÿ%ÿŸÿ%ÿŸÿ%ÿŸÿ%ÿŸÿÿþà6ÿþ²5ÿþ…4 ÿÿZ4 ÿþò3 ÿþÉ2 ÿþš1 ÿþw0 ÿÿV0 ÿþã/ÿþµ.ÿþŠ-ÿÿZ-ÿþô,ÿþÍ+ÿþŸ*ÿþ|)ÿÿ‡ÿÿV) ÿþ×ÿþå( ÿýƒÃÿþµ' ÿý0pÿþŠ& ÿüÛÿÿZ& ÿûƒ-©-Âÿþõ% ÿû0©ò©oÿþÐ$ÿÿ›`ú\-ÛòØ=`ýß#ÿ÷û|-©©ØòôØ©©-«ÿÿ|"ÿü¿©òü©<ãÿÿV"ÿüïP-ØòüØ/xûÿþè! ÿý—3ØòýØ?»ÿþº ÿþD©òþ©ƒ ÿþŽ ÿöê­òòèòò©0 ÿÿ\ ÿõš:¯©[©±-Ú ÿþ÷ ÿÿDý\Ö@ÿƒ ÿþÒÿôï¦ÿÿû†3 ÿþ¥ÿü£@ßÿüÊ$ã ÿþƒÿýTƒûÿýóXŽ ÿÿZÿÿË ÿÿÊ ÿþè#ÿþº$ÿþŽ%ÿþw&ÿÿV&ÿþ×'ÿþ¥(ÿþƒ)ÿÿZ)ÿþë*ÿþ½+ÿþ“,ÿþw-ÿÿV-ÿþÚüKQÿùÏd00dÇÿþ¨ü'q—2ÿüû‹;üûÿÿ¿÷@ HKÿü‹=;ü;=ÿöÛKK2qÿÿýÏ=ý=ÏÿìdX——’h‹Gÿýd;ý;lÿûçK—•—ôs’^; ÿþ0;þ;4 ÿövˆ—”R—þnÿþ;þ; ÿõêï2—„%—þuÿþ0;ú;0ÿô÷þÿøü•“apú1——nÿ÷ÿýd;ã;dÿÅ`q‚©½Ü¨ ŸJ4*„|bÿŸß ÿýÇ=ï=ÇýÙ(6& ¹ ]ù# þ« ÿü=;ñ;=O«ÿô[=…ZOc^þDù°ÿBþHã ÿüû;Þr+$÷ñ  w””—%*`% NˆB2òüº‹ÿÛÏd00dÇŸÿÜ:Q[R“qu——”‘)†|xo6Gþ>6Gþ15Gþ%4 Gÿ4 GþC3 Gþ82 Gþ+1 Gþ!0 Gÿ0 Gþ?/Gþ2.Gþ&-Gÿ-GþD,Gþ9+Gþ,*Gþ")Gÿ%Gÿ) Gþ;Gþ@( Gý$6Gþ2' Gý Gþ&& Gü<Gÿ& Gû$..6GþD% Gû ±Gþ9$Gÿ+ú.¨±§6ý6,#G÷E".§±ô§./GG""Gü5±ü?Gÿ"GüB.§±ü§/!EGþ@! Gý*0§±ý§54Gþ3 Gþ±þ$ Gþ' GöA’±±­±± Gÿ Gõ*3“W”.< GþD Gÿý;ÿ$ Gþ:GôB.GGE% Gþ.Gü->Gü8 ? Gþ$Gý$EGýC' GÿGÿ8 Gÿ8 Gþ@#Gþ3$Gþ'%Gþ!&Gÿ&Gþ;'Gþ.(Gþ$)Gÿ)GþA*Gþ4+Gþ),Gþ!-Gÿ-Gþ<ü"Gù9  7Gþ.ü/@GüE&!mü!#EGÿ5#÷ Gü&!n¦¨ü¦n!#Gö< /ÿGý9n¨ýn9Gì#@@<+:6Gý!¦¨ý¦!Gû@ @>@ô0='< Gþ m¨þm Gö# /6@>"@þ.Gþm¨þmGõAB@7;@ÿ1Gþ m¨úm GCDFGøF)(&/û<@@.ÿDGý!¦¨ã¦!G6$/4=.,745)ÿ,> Gý7n¨ïn7F<  3$÷   þ/ Gü#!n¦¨ñ¦n!/GC2!&#þùŒÿ0þ? GüE#!mÞ! DC,-> >@ =( 9±ü’&GÛ9  7,'G= &"=01@@>= 943/bþV 6bþD 5bþ3 4 bÿ"4 bþ] 3 bþM 2 bþ; 1 bþ. 0 bÿ!0 bþW /bþE .bþ5 -bÿ"-bþ] ,bþN +bþ= *bþ0 )bÿ3bÿ!) bþR bþX ( bý2JbþE ' bý+bþ5 & büT bÿ"& bû2+Y+Jbþ^ % bûY=Y*bþP $bÿ;$ú#+K=L3$ýJ= #b÷`/+YYL=ôLYY+Abb0 "büI Y=üYWbÿ!"bü[+L=üL,.`bþY ! bý:.L=ýL4GbþG bþY=þY2 bþ6  böYZ==C==Y bÿ# bõ;2[YIY[+S bþ_  bÿý#Rÿ2 bþP bô[?bb`3 bþ? bü>UbüM W bþ2 bý 2`bý]!6 bÿ"bÿN bÿM bþY #bþG $bþ6 %bþ. &bÿ!&bþR 'bþ? (bþ2 )bÿ")bþZ *bþH +bþ8 ,bþ. -bÿ!-bþT üenbùO&&Lbþ@ ü5˜ÌDbü`5[ü0`bÿI0÷b)fbü5^ ³ü ^0böTffD˜ÿbýO^³ý^Obì&qÌ̹ˆ»¯ `bý& ³ý )bûXfÌÄÌôœÅÂP#,bþ[³þ[ bö0“¥ÌÈoÌþ•bþ[³þ[bõY[ D̲3¿ÌþŸbþ[³ú[b]^abï`98s˜CÂÌÌ•ÿ^bý& ³ã &bK$+1@HT@=VF9²¨¬…ÿ=U býL^³ï^LaSGm&ù/& þA bü0^ ³ñ ^Ab]"+‹^Sjcþ\ùMÿ*þW bü`0[Þ+ ^\=~È&ÈÌ$ 39Ã2j¸YD=üQ5bÛO&&L=6bT\|oÀ™žÌÌÇÄ%8¶§¢•IÿÿçÿÿH3ÿûèÿÿï 2ÿûóÿÿÏ1 ÿüüÿÿŸ1 ÿÿïÿÿd0 ÿûæÿÿû4/ ÿûìÿÿã. ÿûùÿÿ»-ÿÿƒ- ÿÿéÿÿL,ÿûçÿÿï$+ÿûñÿÿÏ *ÿüüÿÿŸ*ÿÿñÿÿl)ÿûæÿÿû8(ÿûëÿÿã'ÿû÷ÿÿ»&ÿÿ‡&ÿÿêÿÿP%ÿûçÿÿó$$ÿûñÿÿÓ #ÿüüÿÿ£#ÿÿñÿÿp"ÿûåÿÿûÿ0¿ÿ>ÿ¿'þõ ÿüË$*Õò(ÿË ÿüó`*Àò(ÿË ÿýƒ:áò(ÿË ÿþdyò(ÿË ÿýû òýËòò(ÿË ÿ÷¿´òÚy:yÚ(ÿË ÿ÷pB¢*L×L*(ÿË ÿûÿÿ(ÿË ÿûÃ$Ïÿ(ýʯ« ÿüp`óÿ(ü­,$÷ÿþoÿ(ügÿüã&$÷ÿ(ûïÿüŸÿ#ö 2 [dxÿø÷ïÿ¿#õ8‡e KKãÿ÷ƒ[dxÿÛ&ü&†<ì @M{ë2——2ãÿd #æ'A K =ŽUWHv—’" ;ã$õxxocŒn 6ÿ2—ÿÿ%ÿ0—ó” (ez…–—ÿ;þ #!ü ETd—ÿú*f—ùW([1i!ü@”’a—éuŽH;Yz”i——–Œ/ î@z V—R88—zŠ–yü #—– ù 7=þu—–÷’x-*’—ÿn$î!*4^3h——•–—sþ#l—ÿY"ã `e——’…“‹ ?‹[*-–NHZ"í2e[l*|—–‰‰—–x—ü„ %%úxu÷ Sn„•:I—ÿ +ñ>sT1—ý&*ûm——nûz——B-û2——”úO—w.ûMV2 ü2——2;üMV'þD Gü8 (¢±(ÿ8 GüC(•±(ÿ8 Gý$+§±(ÿ8 Gþ^±(ÿ8 GýE‚±ý›±±(ÿ8 G÷5±¥^+^¥(ÿ8 G÷0„(;((ÿ8 Gû'Gÿ'(ÿ8 Gû6 9G(ý80/ GüCG(ü0 DGþG(ü'Gü> DG(ûBGü,'G#ö"&!GøDBG5##õ9*  ?G÷$"&!G<&ü9<í##"A@@?G#ç 6##.@= #?%õ33/*:.;ÿ@ÿ ÿ%ÿ@ù>*/ ý->@ÿþ!ü#*@ÿ ü+@ù$&5,!ü>=(@é1 <%3>,@@?; î;3 $@" @3:?3ü@? ù 5þ1@?÷=2=@ÿ.$î'+@@??@0þ-@ÿ%"ã;(*@@=8>;:&? %"í*&-4@?::@?2@ü7%ú3 1÷".;7?@ÿ+ñ0#  @ÿ,û.@@.û3@@-û@@>ú!@2.û $ü@@;ü $'þ ^ büN F=(ÿN bü]$ D=(ÿN bý2B=(ÿN bþ&+=(ÿN bý`H=ýB==(ÿN b÷IO=F++F(ÿN b÷+*I R (ÿN bû 6bÿ6(ÿN bûJ Ob(ýMCA bü+$]b(üB ^bþ *b(ü'6büV ^b(û[bü=6b#öD dl.bø^ [bI0#õK¶‰!ee!Wb÷2dl.bT&ü3µÁQì00/ZDÌÌDWb&#æ5W!eS—00 !ˆÌÅ& 0W$õ¢¢–†¼• ¿GÿDÌÿ&ÿ%ÿAÌóÈ6ˆŽ%nÃÌÿPþ.!ü^r†Ìÿ&ú5ˆÌùu6|C¬!üVÇÆ„ÌéŸ #ÁbPx¥ÈÌÌ˾? îW¿¥+uÌoLLÌ¥»Ë¤ü0ÌþËÊ ùJ S¬òŸÌËÊËÅ¢<9ÅÌÿ•$î,9FEÌÌÊËÌœ þ0’Ìÿx"ã¿‚ˆÌÌÆ´Æ½ V¼|9<Ëiaz"íDˆ|’9¨Ì˹¹ÌË¢Ìü² 2%ú¢#Ÿ ÷ p•À²ÉOcÌÿ+ñTœrC &Ìý3*û”ÌÌ•û¥ÌÌY -ûDÌÌÈ úlÌ¡.ûiuDüDÌÌD;üiu%ü›ÿÿñÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü€ÿÿÕÿ%ü|ÿÿÕÿ$ûDÿÿØÿ#úÏéÿÿæÿ#ÿdÿÿûÿ"þéÿÿD€ü¯ÿöìÿþ$÷ÿýýíûÿÿƒÿø ãÿÿñÔÔäÿý\ÿþÿûlÿóÿíÿûïÿõþÿù“ÿøöòÿîÿþ(ûÿÿõÿÿ4`þeöÿ!ý|ÿý ÿÿý ÿþþò þï ÿüþÿúþ ÿÿþÿ ùÿñÔôöíÿýûÿú ÿýù×ùþ$ûÿÿýÿûòïÿúùÿúùÿùžçÿÿ@€ý»ÿæÿÿýÿ&þ÷ÿñüÿÿù˜–ÖÿúÿÿåÿËŒ€'ó€ÿåßÿÛÿûL÷ÿþû$,øçÿÿïSÿlú€ÿåßÿ.úlÿÿ|xúçÿÿï.üÛãülÿÿ|0þX\üÛã<þX\òüÕ*$Ëÿå÷ÑÊM w‚)3——–ŒdûòÀ*`óÿûƒ[d þ#-øE—–”•=ýà:ƒÿþ¯«ÿèë2——2u|%*’F ýòydÿúû,$÷ÿ¿ñHYz—€%”——”hþD üò û ÿùŸÿÛ÷+=——}0—û1q^ÿ üò²Ã ÿö÷ïÿdŽè‡ˆ—†R——••[’—4j ü¢Bp ÿòƒ[dxÿç%;*ìK—@[_”–`^ M—†/—F ùÿ¯«ÿõë2——2ãÿú WþV]ùˆ—MtE öÏ$¿,$÷ÿ¿íiFv——K@ïBDn—ñ1 -88,4Ydn õÿó`EÿÛó„1“D—òˆ’—(——Šÿï¡ïÿdŽŽJ ù…ŽŽ’8—óD†——0——:ÿåƒYdxë‰2——`x—” ‹—ýI4—ù?#LPÿèë2——2=j—n†[”* D=ô”|MR‹——cðHv——€šNbx—ôi-YÿO—ÿ2û8ROù8–R„—ìlu—•A1 sxxü„ŽŽbã? @ B——q/‹——Œ‹——B õz——’4-=—ên„n|•––•t V——wÿ,—ý6M—íV#i44 ——yLü2——2ÿB—ý6%—úƒ K—Iÿü”——2üMVúMNz—ï1(“ŒPT”`_xx#ÿý!`—øT-b x—þB 'ÿlð—O3<  m——w(÷8gO Iü2——2*ÿ%—ÿBüBI/üMV*þˆ—üx.xÿ3þ B—ý 8úm——A :ü2——2;üMVø±ü¢( 8GæD:827@@?;* û±•(CGû$"&þþ@?ýý§+$Gþ0/GñA@@14ú= ý±^GúE DG5#ñ"3@2 ;@@>+þ ü±‚E Gù,'G<÷@@/@û /'ÿ ü±6 GöDBG 6è3 9@2"@@?>&=@- ü„0 Gò$"&!G@ì@&(>?(' @8@ ùG0/GõA@@?G#ú$ þ$'ù9@ 61 ö9 5 DG5#í.@@#B.@ ñ %*. õGC'G<ó 7;(@ò9 =@ @@:Gï,BG 66ù566-@ó8@@5@@Gå$"&!A&@@( 2@> :@ý@ù "GèA@@#*@. 8&>ô >4 ":@@*#ð.@@21)2 @þ, ù %ÿ!@ÿû "!ù?" 7@ì-1@?  133ü)66(ã;@@/:@@; :@@õ.@@=@ ÷.7.4 ?÷1$@@2ÿ@ý @í5$,@@3 ü@@ÿ@ý@ú7@ÿü>@@ü $ú 3@ï>;!#>( (33#ÿý(5@ø#)2@þ'ÿ-ð @!.@@2(÷5+!ü@@*ÿ@ÿüü $*þ9@ü23ÿ3þ@ý 8ú.@@:ü@@;ü $ø=üF Nbå^ PM ¡°7EÌÌ˾‡û=D $]bû2dl þ0<ø]ÌËÉÊSýB2bþCAbèZDÌÌD Ÿ¨29Å_#% ý=+&bú` ^bI0ñh¥Ì”¸ÌÌÉŒþ\ ü=H` bù=6bT÷;SÌ̃ 8ÌûC(˜ÿ ü=NJ bö^ [b&—è#¸Ì‘oÌÌÉÊ|ÅÌF üI*+ bò2dl.bX3P9ìeÌS{ÈË‚ h̵@Ì_ ù bCAbõZDÌÌDWb0 úu&þu~ù ¸Ìh¯œ] öO H ^bI0í(ˆÌÌW0[T\•Ì ñC ¢ÿ3þYÌý8ú”ÌÌX:üDÌÌD;üiuø3ÿûþÿÿÕüÿÿû3ÿúþÿÿíÿ¿€2ÿùýÿþÿÿü$2ÿÿýÿþï3ÿúüÿÿóO3ÿüôÿÿ|#ÿÿþÿýêã3ÿüå~\.ÿ÷öìÝÙÖÒ÷¦ *ÿòüÿÿëóÝÉØêüþè+*ÿóúÿÿ÷÷d$CW}ŸC(ÿøñÔóæãðwý 'ÿøéìjÚÿø²)ÿû¢ûÃ1ÿþüíÿöýÕÔÔê§yÓa#ÿÿýÿý“XÿòýþþýÐ…âÿëÿÿåÿ¿€ÿHÿúòÿ‘<úÿþû$ÿ÷÷€ÿåßÿ ÿýþïóÿóÛÔÔêÿŸçÿÿïÿÿýÿùû0lÿÿ| ÿóüÿüŒ€¾ÿæÿÿåÿ¿€úHÛã ÿü´÷ÿþû$þX\ ÿ÷ý€ÿåßÿ(ýÿùêÿÿ÷ÔöêÿŸçÿÿï(ÿÿý ÿùû0lÿÿ|)ÿøÏÿæÿÿðÿ¿€úHÛã)ü½£z÷ÿþû$þX\*÷û0€ÿåßÿ6÷€Hçÿÿï:ülÿÿ|;üÛã<þX\ùÿ0>ÿH¿ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @    Ð:h4N'¡ucatbgrnd2.pngÿ!?€ "     %$ÿÿÿÿ#ÿÿÿÿO%¡uOaÛÛ'Û3Û?¡uQ¡Q±QÁQÑQáQñRRR!R1Z!\!\1\A\Q\aj{}Š1˜´˜Ä˜Ô£¯i´ƒ½ÔÎdϲÏÂÚLâ|âŒÿ•t§·Ç{,6ôGÓPŸP¯P¿PÏ[¨[¸oKqvq†q–qä~‡#‘É“•3•Ñ—&¡É­¸Ÿ½Š¿%¿5¿EÇÖÌÙFÛ @@@@uü&:79øLM[t“ƒI6öY`šáüþÄV+5öR^€çûÿÿá…[4û5Qk¹÷ÿü÷¦tY3ü*\‰êÿý·3ü*n¾úÿýÛ‡”3ýAëÿý÷’€2üoÀúÿüþ¨q1ýQ”íÿüÝx//ü;sÅûÿûú–]-ü,[–ï ÿüÌlF ,ûKpÈû ÿüøƒ]"+û 9P~æ ÿý·e=+û#7Tšú ÿýîzQ*ú (0]¼þ ÿþ¢k)ü*^ä ÿþׄ(ù3|ú ÿþü’(ú(V¯ÿÿŸ'ù=!>zçÿÿ¯&ø"C% +[£ýÿÿÂ%øCC74ƒ×ÿÿ×$÷#PeJC9T¦õÿÿð#öDv…aCLsÏûÿÿû"ò öÿüõ¡¡óÿuü&:79øLM[t“ƒI6öY`šáüþÄV+5öR^€çûÿÿá…[4û5Qk¹÷ÿü÷¦tY3ü*\‰êÿý·3ü*n¾úÿýÛ‡”3ýAëÿý÷’€2üoÀúÿüþ¨q1ýQ”íÿüÝx//ü;sÅûÿûú–]-ü,[–ï ÿüÌlF ,ûKpÈû ÿüøƒ]"+û 9P~æ ÿý·e=+û#7Tšú ÿýîzQ*ú (0]¼þ ÿþ¢k)ü*^ä ÿþׄ(ù3|ú ÿþü’(ú(V¯ÿÿŸ'ù=!>zçÿÿ¯&ø"C% +[£ýÿÿÂ%øCC74ƒ×ÿÿ×$÷#PeJC9T¦õÿÿð#öDv…aCLsÏûÿÿû"ò öÿüõ¡¡óÿuü&:79øLM[t“ƒI6öY`šáüþÄV+5öR^€çûÿÿá…[4û5Qk¹÷ÿü÷¦tY3ü*\‰êÿý·3ü*n¾úÿýÛ‡”3ýAëÿý÷’€2üoÀúÿüþ¨q1ýQ”íÿüÝx//ü;sÅûÿûú–]-ü,[–ï ÿüÌlF ,ûKpÈû ÿüøƒ]"+û 9P~æ ÿý·e=+û#7Tšú ÿýîzQ*ú (0]¼þ ÿþ¢k)ü*^ä ÿþׄ(ù3|ú ÿþü’(ú(V¯ÿÿŸ'ù=!>zçÿÿ¯&ø"C% +[£ýÿÿÂ%øCC74ƒ×ÿÿ×$÷#PeJC9T¦õÿÿð#öDv…aCLsÏûÿÿû"ò öÿüõ¡¡óÿõú 8ø -FII26ö Y¡¿ÁªŠv-4õuÕòùøóÖ±i3üUÜýÿüþë™3ýÂýÿýÚ-1ýŠêÿýýi0ü\¾úÿþ°!/üK¥Ë ÿýê<-û>¥¼ã ÿýö^,ú/¤ÏÄþ ÿüù‘H*ú&˜ÍËö ÿýÃ~ *ûŽÇÓð ÿýù­J)ûƒ¿ÔñÿþÜŠ(û oºÒëÿþû¯'ûU±ÎßÿÿÑ&ú:¥ÊÕ÷ÿÿê&û‰¾âðÿÿ÷%û i©Úúÿÿý$ûL¶èÿ$û.­¼þÿ#ût¥¼øÿ"û^¢»Ùÿ"üAŸºÖÿ!û!˜ºÚýÿ û ‘¹Éýÿû…¸Óþÿû~¸ãþÿü €Éøÿý0žðÿú3`°ú ÿõ ,>P`o…¬Âû!ÿóÿ>ÿ>ÿ>ÿ;>ÿO>ÿk>þo =þp=þq=þr=þ„=þŒ,=ý”I <ü”Y+ ;ûvW+":úÊg29øÿÑsO<.7ÿùûáV+(6 @ÿ>ÿ>ÿ>ÿ>ÿ;>ÿO>ÿk>þo =þp=þq=þr=þ„=þŒ,=ý”I <ü”Y+ ;ûvW+":úÊg29øÿÑsO<.7ÿùûáV+(6 @ÿ>ÿ>ÿ>ÿ>ÿ;>ÿO>ÿk>þo =þp=þq=þr=þ„=þŒ,=ý”I <ü”Y+ ;ûvW+":úÊg29øÿÑsO<.7ÿùûáV+(6 ÿ >ÿB>þz =þž9=ý«g <ý¢x.<ü±z\;üÓz;üð€•+;ü÷‡­V;ûø‰»…:ûù“¼©8:úù£¼»9ùý·¼¼µ`8øÿßÿÁ³b7÷ÿþðßÖÚ¶6ÿùûìëÕ­ 5ÿùýì×ɬ4ÿùþñÜÁ´Š$3ÿúýéÍLJ 2@@@@ö)9q„‚_- 4ó(&9b…aW3(1ê)4APn±¯¨”jI>71-/@1 ü!B8@è32CL]j¨øýüúøóèÜʹŸ‹~pbB ú;U]FEöE?C:6Ga‰çüÿóþýûðãÕ´‹sa< ù@ez›ÂÖóLCCEWIDRe”ÙõþÿïþûòÚ´‰`C,aµíýÿñFC1C``WGFVk‹ºâù ÿöüòÏ€jG.aÎùÿî'9*DalqhVIIV`lƒ¯âû ÿúýöñëñùÿì"/Flš˜’‡vaK:(#)6FpÌýÿê3^¾þüîÕµd8')DX|¼þÿþ­ûÿùþøå¾ƒXFCû73K©ûÿþ‡òÿóýõÕ[IC6*4]˜õ ÿþhÚ ÿõúáV8*+=Tî ÿý7±ý ÿöüëx@+*/-`É ÿý÷ÿ÷ÉhG+&+^³ ÿþ\Þÿöøƒ`K/!IbÌÿý3­ýÿ÷½vpWCC71-/@1 ü!B8@è32CL]j¨øýüúøóèÜʹŸ‹~pbB ú;U]FEöE?C:6Ga‰çüÿóþýûðãÕ´‹sa< ù@ez›ÂÖóLCCEWIDRe”ÙõþÿïþûòÚ´‰`C,aµíýÿñFC1C``WGFVk‹ºâù ÿöüòÏ€jG.aÎùÿî'9*DalqhVIIV`lƒ¯âû ÿúýöñëñùÿì"/Flš˜’‡vaK:(#)6FpÌýÿê3^¾þüîÕµd8')DX|¼þÿþ­ûÿùþøå¾ƒXFCû73K©ûÿþ‡òÿóýõÕ[IC6*4]˜õ ÿþhÚ ÿõúáV8*+=Tî ÿý7±ý ÿöüëx@+*/-`É ÿý÷ÿ÷ÉhG+&+^³ ÿþ\Þÿöøƒ`K/!IbÌÿý3­ýÿ÷½vpWCCG&þKïÿûþ¶R3U&ý,»üÿüÑV0T&ýùÿüóq6:&ýXñÿýßV<'þ4ºÿýþÉO'ýdõÿþýÁ'ý2Öÿÿþ(þ“ÿ(ý eîÿ(ýSÁÿ)þ.…ÿ*þjðÿ*þ<½ÿ*þ†ÿ*ýnúÿ+þSÒÿ+þ¥ÿ+ýVûÿ,þ=ôÿ,þÕÿ,ý¯üÿÿï-þ{õ ÿþã|-þ:× ÿýÒp:ö)9q„‚_- 4ó(&9b…aW3(1ê)4APn±¯¨”jI>71-/@1 ü!B8@è32CL]j¨øýüúøóèÜʹŸ‹~pbB ú;U]FEöE?C:6Ga‰çüÿóþýûðãÕ´‹sa< ù@ez›ÂÖóLCCEWIDRe”ÙõþÿïþûòÚ´‰`C,aµíýÿñFC1C``WGFVk‹ºâù ÿöüòÏ€jG.aÎùÿî'9*DalqhVIIV`lƒ¯âû ÿúýöñëñùÿì"/Flš˜’‡vaK:(#)6FpÌýÿê3^¾þüîÕµd8')DX|¼þÿþ­ûÿùþøå¾ƒXFCû73K©ûÿþ‡òÿóýõÕ[IC6*4]˜õ ÿþhÚ ÿõúáV8*+=Tî ÿý7±ý ÿöüëx@+*/-`É ÿý÷ÿ÷ÉhG+&+^³ ÿþ\Þÿöøƒ`K/!IbÌÿý3­ýÿ÷½vpWCCFOKB@?:3+*/?nëÿÿþÿ îCSNE?95$!"$*Jp’ƒH4>WÁþ-ÿî¡¿ÀÀ½4('0jž‘M9Cbì-ÿím·¿À»`'%&*G¡À>CD‚þ,ÿí3y´½¶h&%'-p·¾z8CCaô,ÿí3D|ª±•P/+>‚˜p=6Rlªþÿóüéų¦zUk³òúùùøëñчA3,Lw{jgbpc<1(Ax¨øÿäûИqZRk…z]FV¡×ñßÊ‹L71/²M")$4ú2'3‡ÍþÿÚÖƒj`bpƒ˜¥´ÆÅ¾ËßîÅ£S6337ÿÙxFCCA5,)7GxÓüÿÿþÿùäkgv“ÂìÿëþýüøîǽàùÿÿøµfJCDNmÂö ÿøù·Y:8PŽìÿüιÒïÿüùáýþ ÿõýÙ[! @ƒøÿûôññ÷ü(ÿôý±I) +`¾ÿÿõñóÚij¬¯ºÉÖåóøüýÿòþ´K$-G‚mJ&8ûÿèðÀ¡€g`SJE''/51&ÿùùà–§ÞþÿñýI@¥ùþð­K…· ÿïþýúãɯ™…xh[I/ ÿöê­|T:448OÈÿñ÷–KG¦üÿî.€Õÿ÷þõáʹ´±¡‹ÿúó­hA)íJéÿÿùÊq 5ñûéŠ%*’üÿùú”€Š°àüÿòÕb=1024248>R¡óÿòü»V)-b´ÓÍ€GC£üÿôljX>KPZlšÎîý ÿóþ·NCCE[nƒªÌáõÿóþÎX11PkwH3=úÿñîÈš,7C<7?Na‹¾Ýö ÿöüžG77O™ÿýþ²^CøA610>^Çý ÿ÷óªsL8-*&!ï0>FOKB@?:3+*/?nëÿÿþÿ îCSNE?95$!"$*kîÿý¿~d`ûLCCT«ÿñù—jJ,%$*10D…Áùÿôù´~skgdWg¯üÿðû[BIm›¨¹¯´²to”ÌÿöýõãÝÚÏÚæöüÿðÉ`NÌË»ÃÈÈÍÏ·n…È ÿÿþ ÿïõxHƒâóÎm`·ÉÏÀo‹ç.ÿïÊSNÏùùŠ=46mÂοvü.ÿð«F^òüøe=73D¯Ì¤wÅ/ÿð‰Deðüõl=;3@¤œp™û.ÿðô–G[ÚóöÉfH:g|clí/ÿñ÷š`a–ÔÞãרhVad»ÿùûì×»¿áùÿòý¯g]\it\L72GxÃÿôýçÉ£…‡šÈ÷ÿôãlG51&ÿùùà–§ÞþÿñýI0|¼Àµ‚8…· ÿïþýúãɯ™…xh[I/ ÿöê­|T:448OÈÿñ÷–K5}¾Á´j"€Õÿ÷þõáʹ´±¡‹ÿúó­hA)íJéÿÿùÊq (v¶½°h’üÿùú”€Š°àüÿòÕb=1024248>R¡óÿòü»V"JˆŸ›`54£üÿôljX>KPZlšÎîý ÿóþ·NCCE[nƒªÌáõÿóþÎP%%7O™ÿýþ²^CøA610>^Çý ÿ÷óªsL8-*&!ï0>FOKB@?:3+*/?nëÿÿþÿ îCSNE?95$!"$*e¢¡”›ŸŸ£¤‘W…È ÿÿþ ÿïõo:h³Á£VLe‘ ¤˜X‹ç.ÿïÊG>¤ÆÆm0)*Vš£˜]ü.ÿð«;JÀÈÅP0+(6‹¢‚jÅ/ÿð‰9P¿ÈÃU0.(2‚|]™û.ÿðô–?H­ÁàQ9.QbUlí/ÿñ÷š]Rw¨°´«…RG[d»ÿùûì×»¿áùÿòý¯gYOT\I<--GxÃÿôýçÉ£…‡šÈ÷ÿôãlG:+#?téÿó¶‹bSJEDGOXj–ßÿõûÀkegehv§çþÿñZ8+"'/FnÈýÿüúùúþÿð7'N¯´¥“oQ4$=[³ü/ÿïJ”ÅÉÈÈ¿£§”yE5;S³ü.ÿîÇÊÊÉÀ|ANu™ŠL7?WÁþ-ÿî©ÉÊÊÇ”6*)2p¦˜Q;Cbì-ÿísÁÉÊÅe)'(,KªÊ˜ACD‚þ,ÿí6€¾Ç¿m(')/uÁÈ€;CCaô,ÿí6Hƒ³ºœT2.A‰ v@8Rlªþÿóüéų¦zUk³òúùùøëñчD6.P}pmguh?4*Bx¨øÿäûИqZRk…z]FV¡×ñßÊ‹L71/³O#+&6ú5)4‡ÍþÿÚÖƒj`bpƒ˜¥´ÆÅ¾ËßîÅ£S6337ÿÙxFCCA5-*9IyÓüÿÿþÿùäkgv“ÂìÿëþýüøîǽàùÿÿøµfJCDNmÂö ÿøù·Y:8PŽìÿüιÒïÿüùáýþ ÿõýÙ[ @ƒøÿûôññ÷ü(ÿôý±I!#`¾ÿÿõñóÚij¬¯ºÉÖåóøüýÿòþ´K"5blR80ûÿèðÀ¡€g`SJE''/51&ÿùùà–§ÞþÿñýI0|¼Àµ‚8…· ÿïþýúãɯ™…xh[I/ ÿöê­|T:448OÈÿñ÷–K5}¾Á´j"€Õÿ÷þõáʹ´±¡‹ÿúó­hA)íJéÿÿùÊq (v¶½°h’üÿùú”€Š°àüÿòÕb=1024248>R¡óÿòü»V"JˆŸ›`54£üÿôljX>KPZlšÎîý ÿóþ·NCCE[nƒªÌáõÿóþÎP%%7O™ÿýþ²^CøA610>^Çý ÿ÷óªsL8-*&! ô$c™·ÌÚëùþþ'ÿ÷7kŠÉëýþ-ÿõ ?ez¼óþ0ÿô3Y—¢ªæ3ÿõ—§°¸ÂÉÖÖæòþ4ÿø°Ñâóùüýþ7ÿÿþ¢ÿþûõ=ÿþüøPÿÿþÄÿÿþ>ÿþýþ>ÿþãþ>ÿÿß>ÿþþå>ÿþûò>ÿÿý ÿÿùýîu15ÿùþ…4 4ÿú= 4ÿþÃ@þ3ÿùëL*,"3ÿøüW"2=C=2ÿþa3Cþ@2ÿù~DCA(2ÿø¾JA/1ÿøûT4*)01ÿù2*8JB#1ÿùèK@`RC+1ÿùýŒZ`OC#1ÿúön`L<#1ÿúÊeO4*0ÿúü«Z6*0 ÿúú”J**/ ÿûø…9*/ ÿúòv5" - ÿùþèn6(, ÿùýÚeA2+ ÿúûÅaE@+ÿúõ–]D5*ÿúüȃVB*ÿúñ»pJ1)ÿúö¡[<(ÿúýägL!(ÿúõz[8!'ÿúþîN8&'ÿúþïlCC&ÿûøE:)&ÿúûšJ1'%ÿû¨O1* %ÿûÄV3' %ÿûßb6# %ÿûøs@%ÿü N%ÿüéh% ÿýû׿ÿü³O*$ ÿûþß®³üÿüü‘A$ÿûï¶‹”ô ÿüìo #ÿúýË|dwî ÿüÏ\"ÿúÑyPI{ö ÿûþ°S!ÿøþÃmODK”ýÿüô–D !÷þí¢aKCCXÃÿüà~' ø^LDCCN‰ñÿýÆ` ú'#5R~Øÿýè‘9 ûEb´ôþÿüú£EþûýÿùüöÛR"ÿõõÒ¥yR3!#*ÿô±x?0*!  *ÿùþùåȲÈðÿôþ‰=(&'' òËÏÏǸ¢Œ~uv…’ÊûÿúØvÿ ô /@CCFeªéÿöýä˜G, ö+RuÁö ÿøûÐsL+ùz†®ËâòüÿùþÞxR6 ÿú¦Z:ÿúœT%ÿùø€6ÿù±Sÿøñ‹2!ÿùËa-(ü¯åùþÿüþøîýÿù™A'ò$*3@S_m}£¶¹¶ÙÿøÃV% ÿùýîu15ÿùþ…4 4ÿú= 4ÿþÃ@þ3ÿùëL*,"3ÿøüW"2=C=2ÿþa3Cþ@2ÿù~DCA(2ÿø¾JA/1ÿøûT4*)01ÿù2*8JB#1ÿùèK@`RC+1ÿùýŒZ`OC#1ÿúön`L<#1ÿúÊeO4*0ÿúü«Z6*0 ÿúú”J**/ ÿûø…9*/ ÿúòv5" - ÿùþèn6(, ÿùýÚeA2+ ÿúûÅaE@+ÿúõ–]D5*ÿúüȃVB*ÿúñ»pJ1)ÿúö¡[<(ÿúýägL!(ÿúõz[8!'ÿúþîN8&'ÿúþïlCC&ÿûøE:)&ÿúûšJ1'%ÿû¨O1* %ÿûÄV3' %ÿûßb6# %ÿûøs@%ÿü N%ÿüéh% ÿýû׿ÿü³O*$ ÿûþß®³üÿüü‘A$ÿûï¶‹”ô ÿüìo #ÿúýË|dwî ÿüÏ\"ÿúÑyPI{ö ÿûþ°S!ÿøþÃmODK”ýÿüô–D !÷þí¢aKCCXÃÿüà~' ø^LDCCN‰ñÿýÆ` ú'#5R~Øÿýè‘9 ûEb´ôþÿüú£EþûýÿùüöÛR"ÿõõÒ¥yR3!#*ÿô±x?0*!  *ÿùþùåȲÈðÿôþ‰=(&'' òËÏÏǸ¢Œ~uv…’ÊûÿúØvÿ ô /@CCFeªéÿöýä˜G, ö+RuÁö ÿøûÐsL+ùz†®ËâòüÿùþÞxR6 ÿú¦Z:ÿúœT%ÿùø€6ÿù±Sÿøñ‹2!ÿùËa-(ü¯åùþÿüþøîýÿù™A'ò$*3@S_m}£¶¹¶ÙÿøÃV% ÿùýîu15ÿùþ…4 4ÿú= 4ÿþÃ@þ3ÿùëL*,"3ÿøüW"2=C=2ÿþa3Cþ@2ÿù~DCA(2ÿø¾JA/1ÿøûT4*)01ÿù2*8JB#1ÿùèK@`RC+1ÿùýŒZ`OC#1ÿúön`L<#1ÿúÊeO4*0ÿúü«Z6*0 ÿúú”J**/ ÿûø…9*/ ÿúòv5" - ÿùþèn6(, ÿùýÚeA2+ ÿúûÅaE@+ÿúõ–]D5*ÿúüȃVB*ÿúñ»pJ1)ÿúö¡[<(ÿúýägL!(ÿúõz[8!'ÿúþîN8&'ÿúþïlCC&ÿûøE:)&ÿúûšJ1'%ÿû¨O1* %ÿûÄV3' %ÿûßb6# %ÿûøs@%ÿü N%ÿüéh% ÿýû׿ÿü³O*$ ÿûþß®³üÿüü‘A$ÿûï¶‹”ô ÿüìo #ÿúýË|dwî ÿüÏ\"ÿúÑyPI{ö ÿûþ°S!ÿøþÃmODK”ýÿüô–D !÷þí¢aKCCXÃÿüà~' ø^LDCCN‰ñÿýÆ` ú'#5R~Øÿýè‘9 ûEb´ôþÿüú£EþûýÿùüöÛR"ÿõõÒ¥yR3!#*ÿô±x?0*!  *ÿùþùåȲÈðÿôþ‰=(&'' òËÏÏǸ¢Œ~uv…’ÊûÿúØvÿ ô /@CCFeªéÿöýä˜G, ö+RuÁö ÿøûÐsL+ùz†®ËâòüÿùþÞxR6 ÿú¦Z:ÿúœT%ÿùø€6ÿù±Sÿøñ‹2!ÿùËa-(ü¯åùþÿüþøîýÿù™A'ò$*3@S_m}£¶¹¶ÙÿøÃV% ÿûïØËT1ÿûþñÛ­1 ÿýêÇ;1 ÿüéǃ0 ÿü꼫0 ÿûøÀ¹^/ ÿûþÒ¼˜ / ÿü÷׳8/ ÿûýçÉz. ÿûþàʤ. ÿûþÚ¼¶U. ÿû引 - ÿûí䨵C- ÿúúëëÓ—, ÿëýçÀL, ÿúöêëÚ¡+ÿúçëãÈ[*ÿú÷ëéÒ¨!*ÿúðéÕÂo)ÿþÿûò×̯')ÿþÿúþè̼x (þÿþÿûûȼ­/(ÿûî¾»x 'ÿûþÝ¿©2'ÿûúÖº| &ÿÿþÿûøÌ¨;%ÿÿþÿüóÀŠ%ÿþþýÿüׯN$ÿü÷¼˜$ÿü͵`#ÿüí¼§#ÿûüκr"ÿüäŤ"ÿüôÒ±"ÿü÷ÞÁ("ÿüúáÌR"ÿûúÞÔ—!ÿûúÖÕ» !ÿûú×ÕÌn!ÿúüÖÕÔ³& ÿùýßÙÕΔÿúöêæÙÂbÿúøîìÛ¯-ÿúñëëØ• ÿùýíéêÏzÿùïÑæé¾QÿøýÍÊêÞ«ÿùØÏçåÐeÿøìÚæá¶o ÿøóÚá¿—gÿùðʼ•v7 ÿùò¼«zRÿúú׳|?ÿûûä­mÿúýüîÃrÿúûýé¸R!ÿûúÖ§<"ÿûðÍ•4#ÿûöÉ•4#ÿúþäÊ¥Z$ÿúõ×ÓÁ†6%ÿûìÕÍŸ~%ÿûþÖ­H&ÿûûÀ‡K $ÿ 8ö/7>;>:3!2ñ 1Êêóùø÷ðÜȰ‘lB.ý¡û ÿûýõÜ•+þpüÿýø(ý³ýÿýÀG&ýÐýÿüÀY3$ýùÿü½bB/#ûfšáýÿú¿jFA9 ôH`jph[gx~‚ß ÿøþÃnLCIZ=ñ Fj`VICLlpjITºü ÿ÷ûÊz]EG__4ðI–lICG…»Õ²xFX¯øÿöýߣ’ƒvj`Hï>¯ÚɃRCkÐÿÿþÆ^EjÏ ÿ÷úóîçà¾xW*ö ÇûÿûŸ^SùÿûâsGRÿûþÏsKö”ùÿÿý¶``€üÿûæpKP¹ÿÿþÿüú¦a3þ"æÿûÃb`qðÿûÊSFƒôÿøóÚ€k€±ÛùÿüÒsGýeýÿôÍVObÆýþç£OlÙÿíüØx‰g`j…‡’Äòüÿÿð‰KýN¾ÿÞênRFkäß¶‡lÃþÿÿ÷¼lZ‡¦Âͱ‰dP­òÿÿýªL*ü&˜ôÿìýVCDj¯š±ûÿÿò¯nKPÁûÿûÒlD^ÕÿüÈ`>ý|ÚÿîèhGCDZv®úÿÿü¦kSC^öÿüSJÁÿüáu\ýR¶ÿùßqI7@­ýÿùsa`=AuúÿüŽ`a½ÿûó‡_5ü3•ø ÿýóÐìÿù@S^-3šüÿûüx`kÉÿûýªaB ý'yâÿù,/KAC¯úÿúû®e`jìÿüÇZ> üX±ýÿð<*,?D¯ÓôýÙ’g``góÿûÙG+ý#‡ôÿð¿>20FŸvRKLJL`óÿûæZ  ü _Êþÿðó‹PFOgaE,!9K[bôÿûõ…  ü EùÿñËn``]K-*)@Tãÿûý¹" ü'eÚÿñæ~`V@:7,*)/?L`½ÿýÆx üIûÿð¾aF0**#6CT`üÿýʱ$ ü Keéÿïåk=*/7=CJLGDCDX‡ñÿý¿¨ ü$V£þÿï‰R5L}Åëùûùæ¦jGJ|Óÿýý·v ü3jôÿû’jgõÿõË|Rj­íÿý×e ýLÅÿüb`zÞÿ÷‘n`€²èÅo! ü @ŠýÿúýDN€Øþÿ÷¤jZaz‡}' ü =qôÿöýOGZ´¸ºÈøÿ÷ùWCIR[( ü6fàÿëþo]N`[L!)sÂæÜeNCC; $ÿ 8ö/7>;>:3!2ñ 1Êêóùø÷ðÜȰ‘lB.ý¡û ÿûýõÜ•+þpüÿýø(ý³ýÿýÀG&ýÐýÿüÀY3$ýùÿü½bB/#ûfšáýÿú¿jFA9 ôH`jph[gx~‚ß ÿøþÃnLCIZ=ñ Fj`VIBIfjfHTºü ÿ÷ûÊz]EG__4ðI–lIA@j¡lDX¯øÿöýߣ’ƒvj`Hï>¯ÚɃQ;SÁÁÀšSDjÏ ÿ÷úóîçà¾xW*ö ÇûÿûŸVBa¼Áû«\ARÿûþÏsKö”ùÿÿý¶TH`¾Áû®TAP¹ÿÿþÿüú¦a3þ"æÿûÃVHUµÁû˜>=ƒôÿøóÚ€k€±ÛùÿüÒsGýeýÿôÍL’½ÁûžS?^ÕÿüÈ`>ý|ÚÿîèhC96Hd¥úÿÿü¦kS6GºÁüaCJÁÿüáu\ýR¶ÿùßqI7@­ýÿùsa`=1X½ÁükHa½ÿûó‡_5ü3•ø ÿýóÐìÿù@S^-&t¾Áû¾ZHkÉÿûýªaB ý'yâÿù,/KA6„½Áú½ƒLNjìÿüÇZ> üX±ýÿð<*,??‡Ÿ¸¿¤nMJYgóÿûÙG+ý#‡ôÿð¿>20F‚}jY>8;>:3!2ñ 1Êêóùø÷ðÜȰ‘lB.ý¡û ÿûýõÜ•+þpüÿýø(ý³ýÿýÀG&ýÐýÿüÀY3$ýùÿü½bB/#ûfšáýÿú¿jFA9 ôH`jph[gx~‚ß ÿøþÃnLCIZ=ñ Fj`VIBIfjfHTºü ÿ÷ûÊz]EG__4ðI–lIA@j¡lDX¯øÿöýߣ’ƒvj`Hï>¯ÚɃQ;SÁÁÀšSDjÏ ÿ÷úóîçà¾xW*ö ÇûÿûŸVBa¼Áû«\ARÿûþÏsKö”ùÿÿý¶TH`¾Áû®TAP¹ÿÿþÿüú¦a3þ"æÿûÃVHUµÁû˜>=ƒôÿøóÚ€k€±ÛùÿüÒsGýeýÿôÍL’½ÁûžS?^ÕÿüÈ`>ý|ÚÿîèhC96Hd¥úÿÿü¦kS6GºÁüaCJÁÿüáu\ýR¶ÿùßqI7@­ýÿùsa`=1X½ÁükHa½ÿûó‡_5ü3•ø ÿýóÐìÿù@S^-&t¾Áû¾ZHkÉÿûýªaB ý'yâÿù,/KA6„½Áú½ƒLNjìÿüÇZ> üX±ýÿð<*,??‡Ÿ¸¿¤nMJYgóÿûÙG+ý#‡ôÿð¿>20F‚}jY>8ü |Éü.ÿüù¯Uü `¥ë.ÿûþãŸYûC—¾ü.ÿûöÅ«6ü5“§ë.ÿûùÍ¿˜ ü0§Ò.ÿúöпµvû,Œ²ßþ-ÿúõο¼Ÿ@@@@ _ø   4ù þ.î !'-/+# ,ë %Ls£ÜðøòæÍlL1 )ù6aäüÿøþöš[&&û*dóÿüúO $üJ’í ÿüô~'!ü ü-zÜ ÿøÌaë4A9 Z´úÿûÓtR8{òÿûþ¯SÿèO”ÎͬE vàÿá˜X76A=WËüÿûþ¬Kÿý tîÿìñl+–üæ¡g5L–ÉÌ~Y»øÿü¹Pÿþfôÿëù…>­ñ»€F?¥õúýñ…!ÆûÿüÑ`ÿý+×ýÿêú”(K±×’n3Wâþõí÷ÀQ†Ýþÿüõ˜&ýlõÿêþ4P¯¦…`2pðþìßú¶2U¾úÿüýÝD ýüÿë·F2S‰……V2ˆ÷þóóõ™6òÿü÷“"þµÿûÙZ*­ñ»€F3|¹½¿¶e!ÆûÿüÑ`ÿý+×ýÿêú”(K±×’n,A«À¹³º‘F†Ýþÿüõ˜&ýlõÿêþ4P¯¦…`%TµÀ²¨½‰%U¾úÿüýÝD ýüÿë·F2S‰……V%fºÀ··¹s6òÿü÷“"þµÿûÙZ*­ñ»€F3|¹½¿¶e!ÆûÿüÑ`ÿý+×ýÿêú”(K±×’n,A«À¹³º‘F†Ýþÿüõ˜&ýlõÿêþ4P¯¦…`%TµÀ²¨½‰%U¾úÿüýÝD ýüÿë·F2S‰……V%fºÀ··¹s6òÿü÷“"þµÿûÙZ*[WJ<*4hÒþÿ5ö+?@+>‰ñÿÿý6÷BPd´ûÿÿùË6÷5£Éþÿþé”Z7ø…öôÁ‚TF=8ù8@<852,9ú )*;ü$;þ;ÿ;ü#D;ü!SÊ;ü5Àÿ<ýþÿ<ýõÿÿ;ÿ¨ÿ;ÿ÷ÿ:ÿmÿ:ÿÝÿ:ÿüÿ:ÿ9ÿsÿ9ÿÛÿ9ÿõÿ9ÿûÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ8ÿÊÿ8ÿïÿý8ù÷ÿÿùÓ±À8ùÈýë´’……8ùd~ng`Z8ù$! -<8ù :8ÿþ]8ý5Æ7ø Œü7ø )!Nõÿ6ö*,Âÿÿ5òùÿÿ0ù ‹óÿù -ù ‰ñÿôzW@,'ù ‰öÿõýòÛÀ‹bI9/% "ù:&$“úÿñü÷óéѦv]I:/(#ùD94žýÿòþûùÓškTIA6* ÷)C°þÿ-ý ‘ü ÿûûºhC.þAÞÿúä^DCK.ýdöÿøø¯pG9FpÀ/ð%yðüûûñ°ub`hv¿íþ0ñ.d–‡e94Nn¯óýÿÿ0õ,EOGA4@z×üÿ0÷ %CCNnºõÿÿú1ú /Ga¤õÿþéx1û6lÎüÿüý½gF2ý'¨üÿúþè‹XEK3þ‰ýÿùò¨g[WJ<*4hÒþÿ5ö+?@+>‰ñÿÿý6÷BPd´ûÿÿùË6÷5£Éþÿþé”Z7ø…öôÁ‚TF=8ù8@<852,9ú )*;ü$;þ;ÿ;ü#D;ü!SÊ;ü5Àÿ<ýþÿ<ýõÿÿ;ÿ¨ÿ;ÿ÷ÿ:ÿmÿ:ÿÝÿ:ÿüÿ:ÿ9ÿsÿ9ÿÛÿ9ÿõÿ9ÿûÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ8ÿÊÿ8ÿïÿý8ù÷ÿÿùÓ±À8ùÈýë´’……8ùd~ng`Z8ù$! -<8ù :8ÿþ]8ý5Æ7ø Œü7ø )!Nõÿ6ö*,Âÿÿ5òùÿÿ0ù ‹óÿù -ù ‰ñÿôzW@,'ù ‰öÿõýòÛÀ‹bI9/% "ù:&$“úÿñü÷óéѦv]I:/(#ùD94žýÿòþûùÓškTIA6* ÷)C°þÿ-ý ‘ü ÿûûºhC.þAÞÿúä^DCK.ýdöÿøø¯pG9FpÀ/ð%yðüûûñ°ub`hv¿íþ0ñ.d–‡e94Nn¯óýÿÿ0õ,EOGA4@z×üÿ0÷ %CCNnºõÿÿú1ú /Ga¤õÿþéx1û6lÎüÿüý½gF2ý'¨üÿúþè‹XEK3þ‰ýÿùò¨g[WJ<*4hÒþÿ5ö+?@+>‰ñÿÿý6÷BPd´ûÿÿùË6÷5£Éþÿþé”Z7ø…öôÁ‚TF=8ù8@<852,9ú )*;ü$;þ;ÿ;ü#D;ü!SÊ;ü5Àÿ<ýþÿ<ýõÿÿ;ÿ¨ÿ;ÿ÷ÿ:ÿmÿ:ÿÝÿ:ÿüÿ:ÿ9ÿsÿ9ÿÛÿ9ÿõÿ9ÿûÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ9ÿ8ÿÊÿ8ÿïÿý8ù÷ÿÿùÓ±À8ùÈýë´’……8ùd~ng`Z8ù$! -<8ù :8ÿþ]8ý5Æ7ø Œü7ø )!Nõÿ6ö*,Âÿÿ5òùÿÿ0ù ‹óÿù -ù ‰ñÿôzW@,'ù ‰öÿõýòÛÀ‹bI9/% "ù:&$“úÿñü÷óéѦv]I:/(#ùD94žýÿòþûùÓškTIA6* ÷)C°þÿ'øŒØþþîáýÿ(ùiËóñëåøÿ(ø<¸èëëîéþÿ(ø ›Ýëùþìôÿ)ø]¿éúþúàþ ÿ)ø,ŠÜìûþöñ ÿ)ø6‘Ïéìùþù ÿ'õ …ÃÕçëëöþý ÿ$òJ“¯ÆÕÕëõùúüð ÿ í'p§ÇÛáɼ¾º´Íåñüþñé ÿ넬Íßêëß¹©~C?b¿åõþùØð ÿë§ËãëäΚJŒÔòþþê¼ ÿ øj«´¥f÷1µêûþ÷Ðå ÿ"÷ÊìþþÞÕúÿ-ö¿ÞùþíÕÆýÿ,õ t¼ÞøþôÔ«±ÿ+ó +g»ßøþøâ°˜áÿ)ð!uoRI\­ÝøþøëßÖÌøÿ'톻ʨ^9*tÂïýóëòøùùûÿ%í#šÊÕÏ~ “Ëäëìþþûþÿ%ùg´ÕÇ€ õ%¥ÊÝêóôìýþþÿ%û Iov#õ¹ÇÖçëòûþþÿ&þø“±»¼Æäûþüûþÿÿ/ðV—žŽi|Êîþþöíöÿÿ-î4ezŠR1¼Øñóë×Íÿÿ*ëoŸ¥Š`;³Ûæë屟ÿÿ)øOxš¡”8ýRºëû׃Äÿÿ)ù•§žl øžÃëëé¶šÿ)û)8 øp¼ÇõóÞÁÿ3ø³ÓÕùøÏpÿ3ø-Ïëëúöº‰ÿ3øtâëëóéžÀÿ2ø¤æÞæëßvÿ2ø¶æØèëÖlÿ2ø(Àêêëëʼnÿ2þLÇëþ³‚ÿ2øhÎëëìòžÿ2þxÕëýð¸ÿ2ø|Ûùîëå^àÿ2øéþûëãOÐÿ2øƒîþúóà>Àÿ1÷‡íùóöÜ,Ûÿ1÷‡ÞíüöÖ"îÿ1÷‡ÝøþòÎÞÿ1÷‡Þþüëà Ïÿ1÷‰ãþòë¹'èÿ1÷…ßõëë°Cöÿ1÷ƒÜëèë­Aùÿ1ø~Ûëäë°Pÿ1øtÚëà뺼ÿ2ùeÙéÞëÜôÿ2ùTÖåÞëëúÿ2ùGÔâÞëíþÿ2ú7ÍÞÞïüÿÿ 1ù.ÅÛßöøþÿû¼¡o5 -ú,¼Òàëñÿ÷ëéçâÜΨV)ú)¼Àáïýÿôúìãèëõõèʲ”1&û*¼¼äû ÿòþ÷ðîüþôâÒÆ¬z9"üQ¼¿ìÿóýþþýúöñÛÆ°{(ûŽÃáýÿ÷þûëãÜ˵lü†ÇëÿöýöìëåÛÜ<ü„¡óÿ÷óçéèÞÆ¨g ü1¨ûÿõþèÞÜÙÉÁ»‚üZ¼ñÿü[¸÷ÿöñ£J)!!)2P©ÿñüÒ‰Z<31>C2+3F›ëÿ÷è™bA2%xÇøÿõú·S4*/8Gd˜êÿðõ°šyhbT!#*-AK^ïÿüÕ€Síÿõþép@/+9^–Ò÷ÿóÓ‹]CE^L-&L‹üÿÿýÿöü½]8,3T”Ñöÿõð–RA59CER‚ñ"ÿöô[DEX‹Ëóþÿøõ‹4*7^Šå"ÿöþ×sXFSx´íýÿûüëäÝðÿýû×÷%ÿíœE9Gg–âýÿÿùÞµzE06kÒ,ÿíIEVzÀûÿÿëʘX9Z¾,ÿíGb˜éÿÿýÕS3*(C³ü,ÿîpÂûÿÿõ³]!*+29SÌùþ-ÿñèÿÿþæ–6  4J‰íú2ÿõüÒ: Kóü3ÿöóÃqG)$Eëý4ÿ÷å¯bECGhÕþ6ÿù€KCCR‰ò8ÿú63Fa³û9ÿü*6bÌ;ÿü*@´ý;ÿý*PÑ<ÿý$jà<ÿý"…ô<ÿþ>Î=ÿÿÍ?ÿÿù>ÿÿ¾>ÿÿm>ÿÿn>ÿÿ®>ÿÿöÿÿü[¸÷ÿöñ£J)!!)2P©ÿñüÒ‰Z<31>C2+3F›ëÿ÷è™bA2%xÇøÿõú·S4*/8Gd˜êÿðõ°šyhbT!#*-AK^ïÿüÕ€Síÿõþép@/+9^–Ò÷ÿóÓ‹]CE^L-&L‹üÿÿýÿöü½]8,3T”Ñöÿõð–RA59CER‚ñ"ÿöô[DEX‹Ëóþÿøõ‹4*7^Šå"ÿöþ×sXFSx´íýÿûüëäÝðÿýû×÷%ÿíœE9Gg–âýÿÿùÞµzE06kÒ,ÿíIEVzÀûÿÿëʘX9Z¾,ÿíGb˜éÿÿýÕS3*(C³ü,ÿîpÂûÿÿõ³]!*+29SÌùþ-ÿñèÿÿþæ–6  4J‰íú2ÿõüÒ: Kóü3ÿöóÃqG)$Eëý4ÿ÷å¯bECGhÕþ6ÿù€KCCR‰ò8ÿú63Fa³û9ÿü*6bÌ;ÿü*@´ý;ÿý*PÑ<ÿý$jà<ÿý"…ô<ÿþ>Î=ÿÿÍ?ÿÿù>ÿÿ¾>ÿÿm>ÿÿn>ÿÿ®>ÿÿöÿÿü[¸÷ÿöñ£J)!!)2P©ÿñüÒ‰Z<31>C2+3F›ëÿ÷è™bA2%xÇøÿõú·S4*/8Gd˜êÿðõ°šyhbT!#*-AK^ïÿüÕ€Síÿõþép@/+9^–Ò÷ÿóÓ‹]CE^L-&L‹üÿÿýÿöü½]8,3T”Ñöÿõð–RA59CER‚ñ"ÿöô[DEX‹Ëóþÿøõ‹4*7^Šå"ÿöþ×sXFSx´íýÿûüëäÝðÿýû×÷%ÿíœE9Gg–âýÿÿùÞµzE06kÒ,ÿíIEVzÀûÿÿëʘX9Z¾,ÿíGb˜éÿÿýÕS3*(C³ü,ÿîpÂûÿÿõ³]!*+29SÌùþ-ÿñèÿÿþæ–6  4J‰íú2ÿõüÒ: Kóü3ÿöóÃqG)$Eëý4ÿ÷å¯bECGhÕþ6ÿù€KCCR‰ò8ÿú63Fa³û9ÿü*6bÌ;ÿü*@´ý;ÿý*PÑ<ÿý$jà<ÿý"…ô<ÿþ>Î=ÿÿÍ?ÿÿù>ÿÿ¾>ÿÿm>ÿÿn>ÿÿ®>ÿÿöÿÿÿò! !(9CCEW‘ÿ÷Þk3%( ò9/**'&&%,>EW‰øÿöø«F*#2& ôÇpL7%?hŸìÿ÷û·-  ÿÿûþ÷ëôýÿøÎa1  þ'$ÿøèxF*ý1g%ÿùèp< ! ü(W&ÿùÁO)! û'Bh³&ÿùû1*+:) ú"Ql›ü'ÿùáO2**+ ú /S‰ßþ(ÿøý°[C/û:[ ÷+ÿùþ²^A( û 'NuÁ.ÿùú{N+!ú Dh¦õ0ÿóO/  6bà2ÿôŽI* R—Åõ2ÿõû~6*&(W¨à4ÿöØZ+*$!*@£ë3ÿûþò‡3&*ý,zã3ÿõûé’8#**+JÓ3ÿõè˜R8*2:EW‰øÿöø«F*#2& ôÇpL7%?hŸìÿ÷û·-  ÿÿûþ÷ëôýÿøÎa1  þ'$ÿøèxF*ý1g%ÿùèp< ! ü(W&ÿùÁO)! û'Bh³&ÿùû1*+:) ú"Ql›ü'ÿùáO2**+ ú /S‰ßþ(ÿøý°[C/û:[ ÷+ÿùþ²^A( û 'NuÁ.ÿùú{N+!ú Dh¦õ0ÿóO/  6bà2ÿôŽI* R—Åõ2ÿõû~6*&(W¨à4ÿöØZ+*$!*@£ë3ÿûþò‡3&*ý,zã3ÿõûé’8#**+JÓ3ÿõè˜R8*2:??EW‰øÿöø«F*#2& ôÇpL7%?hŸìÿ÷û·-  ÿÿûþ÷ëôýÿøÎa1  þ'$ÿøèxF*ý1g%ÿùèp< ! ü(W&ÿùÁO)! û'Bh³&ÿùû1*+:) ú"Ql›ü'ÿùáO2**+ ú /S‰ßþ(ÿøý°[C/û:[ ÷+ÿùþ²^A( û 'NuÁ.ÿùú{N+!ú Dh¦õ0ÿóO/  6bà2ÿôŽI* R—Åõ2ÿõû~6*&(W¨à4ÿöØZ+*$!*@£ë3ÿûþò‡3&*ý,zã3ÿõûé’8#**+JÓ3ÿõè˜R8*2:¥¾Þ*ÿüïËt úM¬ÀÚþ*ÿüýáºA ú g¼Àßþ,ÿýõÒtùÀÓÞþ.ÿýãŸ$ù;—¹Ììþ/ÿòýÙŽ%x¯¼Ãê2ÿôüæ³R28b¨ÁÈÑð4ÿö÷辡—ž¡¾Þø5ÿýþðؼýÔïý7ÿúøÙ¼Ìæû9ÿûý×Óðþ;ÿþî÷=ÿÿþ ËÿþýþAÿû$J¼ÿîúŸX`I70Oeh``NC2 ü3‡ÿöú›kE7))*4L`þQ ü/qúÿòû»T?-**3CX`]F ýKƒï"ÿõØaG@ENX`g>þ‡á$ÿ÷þ¾|lZN= ÿÍ%ÿøí±|ND;"  ÿðýúçÙÎÄ»´²»ÈÓàéòúÿùö£X=B6! ÿñôpNK:APZsƒ…­Íöÿùü•T0/5 ÿòý±^76Ra``au…ªÞÿùþšV70/  ÿôò¥Z2?T`lƒ´Òñ ÿúº]CH6!ÿ÷úÔTFg˜èú ÿúÒkFOR3ÿüþØëþ ÿúî|LJ^  ÿúþŸ]DVR ÿûÜk=CPÿûö`)-ÿû¼a^ÿûòsM; ÿûþ±?$ ÿüî[!ÿüþ¢2 ÿýéVÿüþ¼?ÿýæ‰= ÿüý¶o! ÿüß”^ ÿüü´qE!ÿüÛ’Y"!ÿûú¶p@ !ÿûÖŸV+!ÿûö¹‹D"ÿüÒ¨}(#ÿûò¹”j#ÿüͶs4$ÿûî¶§O $ÿûþǯ€&$ÿÿûß–^:"ÿûó”b&"ÿ"ÿüŸdB"ý 2hÿüÖpD<"üKrÿûó–KC#!û'Y~®šÿûýÀbC8!ú&^…²©‰ÿúþÍvL@ ù&a‹µ«‰‡ÿû΋WB/ ø+dµ«‡‡ÿúÑŸZ= ÷+xµ¤`^zS ÿúÓ£^,ö;|‡©žsIdS ÿùþÕšX4õ+S‚‡‡ncbg ÿùö¬vK4ô@G]aRQRD ÿúè’[7(!÷1FF=53Aÿùþ΀N*"!÷B:0./C?ÿúø¬aE1"÷:1$%0BUÿúäu@9%#ö?D/GJÿùþ£T>#öA?5.6O_ÿúòq9$ö <4.3D_høóÚžH)%ö36.7Oakhù¥ %ö >/.<]\Pÿÿ'÷+E0.@]5÷?F;9LP ý%ø3(CFL]C "÷#$9FZ\ #ø1-,7GcJ "øþ‡á$ÿ÷þ¾|lZN= ÿÍ%ÿøí±|ND;"  ÿðýúçÙÎÄ»´²»ÈÓàéòúÿùö£X=B6! ÿñôpNK:APZsƒ…­Íöÿùü•T0/5 ÿòý±^76Ra``au…ªÞÿùþšV70/  ÿôò¥Z2?T`lƒ´Òñ ÿúº]CH6!ÿ÷úÔTFg˜èú ÿúÒkFOR3ÿüþØëþ ÿúî|LJ^  ÿúþŸ]DVR ÿûÜk=CPÿûö`)-ÿû¼a^ÿûòsM; ÿûþ±?$ ÿüî[!ÿüþ¢2 ÿýéVÿüþ¼?ÿýæ‰= ÿüý¶o! ÿüß”^ ÿüü´qE!ÿüÛ’Y"!ÿûú¶p@ !ÿûÖŸV+!ÿûö¹‹D"ÿüÒ¨}(#ÿûò¹”j#ÿüͶs4$ÿûî¶§O $ÿûþǯ€&$ÿ/ÿûß–^:"/ÿûó”b&"/ÿGÿüŸdB"/ý6TÿüÖpD<"/üDjŠ ÿûó–KC#!/ûKu”¼ªÿûýÀbC8!/úKy™¿¸ÿúþÍvL@ /ùK|žÁ¹›ÿû΋WB/ /øN~¢Á¹››”ÿúÑŸZ= /÷N Á³zy‘p ÿúÓ£^,/ö\’›¸¯‹h~p/ ÿùþÕšX4/õOp—››‡}|€/ ÿùö¬vK4/ô=`fx{onoc/ ÿúè’[7(!/÷See^VUa//ÿùþ΀N*"!/÷@b[RQRc_/ÿúø¬aE1"/÷=[SIIRaq/ÿúäu@9%#ö/D_dR@Bfh/ÿùþ£T>#ö/Aa_VQWlz/ÿúòq9$ö/E]VQUdz/øóÚžH)%ö/VWQXl{„/ù¥ %ö/6^RQ]xwm/ÿÿ'÷/OdRQ`x?/ þ)÷/D`e\[jm/ ù'+*!$ø/ULcejxc +ÿ./"÷/HHB[evx/ .þ-,/#ø/TPOYf}i ./"øA]RQci|/ ./ ø/OaQUeld ./ø/RZPXda/ þ-. /ø/WVIY[e/ û$J¼ÿîúŸX`D+$;M[``NC2 ü3‡ÿöú›kE7))*4L`þQ ü/qúÿòû»T?-**3CX`]F ýKƒï"ÿõØaG@ENX`g>þ‡á$ÿ÷þ¾|lZN= ÿÍ%ÿøí±|ND;"  ÿðýúçÙÎÄ»´²»ÈÓàéòúÿùö£X=B6! ÿñôpNK:APZsƒ…­Íöÿùü•T0/5 ÿòý±^76Ra``au…ªÞÿùþšV70/  ÿôò¥Z2?T`lƒ´Òñ ÿúº]CH6!ÿ÷úÔTFg˜èú ÿúÒkFOR3ÿüþØëþ ÿúî|LJ^  ÿúþŸ]DVR ÿûÜk=CPÿûö`)-ÿû¼a^ÿûòsM; ÿûþ±?$ ÿüî[!ÿüþ¢2 ÿýéVÿüþ¼?ÿýæ‰= ÿüý¶o! ÿüß”^ ÿüü´qE!ÿüÛ’Y"!ÿûú¶p@ !ÿûÖŸV+!ÿûö¹‹D"ÿüÒ¨}(#ÿûò¹”j#ÿüͶs4$ÿûî¶§O $ÿûþǯ€&$ÿrÿûß–^:"rÿûó”b&"rÿ‚ÿüŸdB"rýv‹ªÿüÖpD<"rü€š¯¾ÿûó–KC#!rû…¡¶ÑÆÿûýÀbC8!rú…¤ºÓμÿúþÍvL@ rù…¦½Õм»ÿû΋WB/ rø‡§¿Õл»·ÿúÑŸZ= r÷‡³¾ÕÌ¥¤´ž ÿúÓ£^,röµ»ÎȰ˜§žr ÿùþÕšX4rõ‡ž¸»»­§¦©r ÿùö¬vK4rû{“—£¥ü•r ÿúè’[7(!r÷Š——’Œ”rrÿùþ΀N*"!r÷}”Љ‰•“rÿúø¬aE1"r÷{Šƒ„Š”Ÿrÿúäu@9%#ör€’•‰~—™rÿùþ£T>#ör~”“‰œ¥rÿúòq9$ör‘Œ‰‹•¥ªrøóÚžH)%örŒ‰Žœ¥«©rù¥ %örv’‰‰‘££œrÿÿ'÷r‡–Љ“£}r þ )÷r€“—šœr ù_ihP<*$ørŒ…•—𣕠iÿpr"÷rƒƒ—¢£r pþolr#ør‹ˆˆŽ—§™ qr"ø~‘‰‰•™¦r qr ørˆ”‰‹—›– qrørŠˆŽ•”r þoq rør„Ž–r ýÃæ-ÿøþêʼ¹;þÏì-ÿøüË™Œ~tQþæþ,ÿùûÁ}gF- ÿþ,ÿúù«p:  ,ÿûøªi) +ÿûõ·[)ÿûþì¯B(ÿüþã†('ÿüþÕb&ÿüþÁE&ÿþÓ2%ÿþç'$ÿþôM#ÿýûœ"ÿýýÎ!ÿüýß_ ÿüþÏ“  ÿüé£Nÿüó¾‰ ÿüùÖ¯Kÿûþ翎 ÿüõÀ¤JÿüÔŸ…ÿüý·›Iÿüö¨…ÿýå©FÿüþØÿýø´E ÿýã ÿýùÎC!ÿüþÞ­!ÿýñ¼["ÿüýÈ"ÿüþæ¡>#ÿüõ»"ÿÿüΜD ý `ÿüúă ü(~²ÿûþéÉJû=“ÂôÿüöÌžû P¦ÞýÿüÚ³Qü Y°ïÿüò¯‡ü`²ôÿûüÌžTü`²òÿûþÞ©‘ü^«îÿÿïÿûòŸeüYìÿþçcÿûùìÅ üb¡êÿüþîcÿûøîëÅZü VÃûÿüçpÿúôìæÉrüAªõÿúþÕ[ ÿùüèêèÈvý+”âÿüþÚF ÿøþöÚÞëÓXü…Éüÿýïb ÿø÷ãÕÕäß7üj¾ôÿýõ}ÿ÷þãÏÕÕÇ›*ýjÈõÿýû… ÿøüðçØÕÆjý$Íøÿþ«ÿøþûêÛÈŸ4ý¦øÿýþËÿùüóÜÅ¢X þ7àÿýÞDÿùþôáË«v!ý“ôÿüþ×SÿúüÞ—<"ýBÏýÿýëd ÿüþÔ#ý“öÿýþ¶ ÿýì«,$þ,×ÿþó\ ÿüîºJ"ý‹úÿýþ¼ ÿüýêµ#ý¸üÿþôV ÿûþùÜv"þZÜÿýþÍ ÿþü÷× ý öÿþú} ÿþûùáÁ} ý»ûÿþÞ' ÿþùûîÞÅ4þm×ÿþÒ A:9ü++8ùR`_F8ùrcc^>8ú…ecjl9û‡xw‘´:‡þ™Ò;ý…‹Í<þt=ÿ?A/:/9ü=OO;/8ùo{ze?//8ùŠ}}y_//8ú™~}ƒ„/9û›Ž¤À:›þªÙ;ýšŸÖ<þ‹/=ÿ/?Ar:r9ü{‡‡zr8ù¥¤–}rr8ù¯§§¤’rr8úº¨§«¬r9û»³²ÁÔ:»þÅå;ýº½ã<þ°r=ÿr?Aü:ú*mz29ùŸ¼¼©18ùçûùטP8ÿü÷­78ÿýû” 9ÿþç2:ÿþìT;ýüÁ3<þ‡=ÿ?@@@@î9¨ÿÿó±G7®ýÿÿú—!0zþ&ÿîvëÿüîš6'­ýÿÿðr8'ÿí R«þÿÿóª4kîÿþ÷‰*Iì'ÿý5péÿóûÉJ*éôÔ^:~û'ÿü@©þÿõî…$^€V5[Ý(ÿü&KÙÿ÷äe' 0YÃ)ÿü,Xýÿùü³Ne„Ô*ÿý0b ÿþüö,ÿü3kù8ÿü7sî8ÿüÿ@î9¨ÿÿó±?*ƒ¿ÁÁ½r.zþ&ÿîvëÿüîš+‚¿ÁÁµV5'ÿí R«þÿÿóª)P´ÁÀºgEì'ÿý5péÿóûÉ;l°¸ G+wû'ÿü@©þÿõîw G`A(MÖ(ÿü&KÙÿ÷äU $G¼)ÿü,Xýÿùü c;LpÎ*ÿý0b ÿþüö,ÿü3kù8ÿü7sî8ÿüÀ¿»º´l2Ã"ÿ ñK±ñ¾E%M‘¤¥ˆ_0fú"ÿ ò–ñÊI5C&#WÓ#ÿ óxìé”1 0i½$ÿ ôAÔñá¨X>Hb‹Þ ÿøþûúðäÛìþÿ÷“ç÷ùøÑÞýÿñýúå´qK71"@|Ìþÿý µôÿëöÚ©f+ #WµóÿòSÙöÿùâµ’s^R=) ó  8a®ö ÿï3=BCA;#   ú3Gb¶ù ÿ0ú(9jÈüÿ2ú /sÙþÿ3ú D…ëÿ4ù *1OŸöÿ5ö!%6[¶ûÿÿ8ù%ÿ@î9¨ÿÿó±?*ƒ¿ÁÁ½r.zþ&ÿîvëÿüîš+‚¿ÁÁµV5'ÿí R«þÿÿóª)P´ÁÀºgEì'ÿý5péÿóûÉ;l°¸ G+wû'ÿü@©þÿõîw G`A(MÖ(ÿü&KÙÿ÷äU $G¼)ÿü,Xýÿùü c;LpÎ*ÿý0b ÿþüö,ÿü3kù8ÿü7sî8ÿüÀ¿»º´l2Ã"ÿ ñK±ñ¾E%M‘¤¥ˆ_0fú"ÿ ò–ñÊI5C&#WÓ#ÿ óxìé”1 0i½$ÿ ôAÔñá¨X>Hb‹Þ ÿøþûúðäÛìþÿ÷“ç÷ùøÑÞýÿñýúå´qK71"@|Ìþÿý µôÿëöÚ©f+ #WµóÿòSÙöÿùâµ’s^R=) ó  8a®ö ÿï3=BCA;#   ú3Gb¶ù ÿ0ú(9jÈüÿ2ú /sÙþÿ3ú D…ëÿ4ù *1OŸöÿ5ö!%6[¶ûÿÿ8ù%ÿ@úo¾×èÜë7ÿù”ÂÕÕÜ8ÿù¥ÈÞÜý8ÿú&±Ûãý9ÿû9µãñ:ÿüF¾ê;ÿüRÈï;ÿüUÍð;ÿüRÇò;ÿü!RÅð;ÿü$PÁì;ÿûKµßý:ÿû?¤¿ß:ÿù(”ÅÂéþ8ÿó ŽÔÕÚéùÿÿèÉþ2ÿü8¼ÕéëüæÞõÿÿüÿôfÆßðùýþúòâö1ÿûŠÂèúþþøä1ÿú~¹×òýþÿó1ÿö8˜Áæöþþýí0ÿø[¡Úïýþî0ÿøE×òþñÚ/ÿø^°çïâÀï.ÿ÷DžØëß̰ì-ÿ ÷,ƒÇëÚÕ̵À ÿÿþ ÿøýùùþþõçøÿ ëb³×ÕÖÚÛÓÌÖëôûýüúñæé÷ÿþöù×ÛêëðëÞØóÿ ï;Ëëùüþþýüûùöòíéëñ÷þûõêÕÕÚïóñîêäì ÿ öb­ÕÞëîêïùþþüïëòãÞÖÏÉÇÅÇÊÌÎßõýþýû÷þ ÿ ×^¶ÞëëåÙÞóýþýûùøõñãÕ󧘅gUA5P~•¬Êåóúþ÷ëý ÿ Ö2¼áæèéççë÷÷õòçÕµŽ^9 3d´ÏÖÖ×íþÿï.s™¢¥¨¢™\@+  ö >|¼çïïîøÿýö5”Óìöúýûûÿ2ó?ÆÛçîííïýÿÿ4õa³Îíôóñëõÿ6÷•Ïé÷þþ÷ð7øo¬Öëõýô8ù5‘Âßêë:ûm°Èà;üIޱ<ý(g>ÿ À ÿõþù×£uVC1*%ø XÌÿõþùÊ^=" ø +qèÿ÷ûÝŸ`7 ü<”÷ÿ÷þì¬a1 ø `Üý#ÿøð±[*  ÷' I¶öþ%ÿ÷þí§S% ô  *3J˜ðü)ÿøþñ¥O ù ,d¼öû.ÿòøÒŸmP:/*2A_¶öüÿþîþ=ÿýO©ù<ÿû]Óý:ÿü'yî9ÿû ?žù7ÿûXÊþ5ÿülî4ÿüú2ÿ ý Ñþ0ÿ þgì/ÿý®ù-ÿþ'Ñ,ÿþNí*ÿý §ù(ÿý=Óþ&ÿýeê%ÿý —ø#ÿý)Ìþ!ÿý _à ÿü"€ìÿý9 ðÿ üIŸóÿ!û !I‘òÿ"ù E…èþÿ#ø @y×üÿ$ú>nÄöÿ%ù 7^¥íýÿ&ø)K€Òú ÿ(ö !6^˜ãü ÿ+ó (Ep«íýÿ/ö 1Rx»ôþÿ5ö 4X€Ê÷þÿ ÿõþù×£uVC1*%ø XÌÿõþùÊ^=" ø +qèÿ÷ûÝŸ`7 ü<”÷ÿ÷þì¬a1 ø `Üý#ÿøð±[*  ÷' I¶öþ%ÿ÷þí§S% ô  *3J˜ðü)ÿøþñ¥O ù ,d¼öû.ÿòøÒŸmP:/*2A_¶öüÿþîþ=ÿýO©ù<ÿû]Óý:ÿü'yî9ÿû ?žù7ÿûXÊþ5ÿülî4ÿüú2ÿ ý Ñþ0ÿ þgì/ÿý®ù-ÿþ'Ñ,ÿþNí*ÿý §ù(ÿý=Óþ&ÿýeê%ÿý —ø#ÿý)Ìþ!ÿý _à ÿü"€ìÿý9 ðÿ üIŸóÿ!û !I‘òÿ"ù E…èþÿ#ø @y×üÿ$ú>nÄöÿ%ù 7^¥íýÿ&ø)K€Òú ÿ(ö !6^˜ãü ÿ+ó (Ep«íýÿ/ö 1Rx»ôþÿ5ö 4X€Ê÷þÿ ÿõþù×£uVC1*%ø XÌÿõþùÊ^=" ø +qèÿ÷ûÝŸ`7 ü<”÷ÿ÷þì¬a1 ø `Üý#ÿøð±[*  ÷' I¶öþ%ÿ÷þí§S% ô  *3J˜ðü)ÿøþñ¥O ù ,d¼öû.ÿòøÒŸmP:/*2A_¶öüÿþîþ=ÿýO©ù<ÿû]Óý:ÿü'yî9ÿû ?žù7ÿûXÊþ5ÿülî4ÿüú2ÿ ý Ñþ0ÿ þgì/ÿý®ù-ÿþ'Ñ,ÿþNí*ÿý §ù(ÿý=Óþ&ÿýeê%ÿý —ø#ÿý)Ìþ!ÿý _à ÿü"€ìÿý9 ðÿ üIŸóÿ!û !I‘òÿ"ù E…èþÿ#ø @y×üÿ$ú>nÄöÿ%ù 7^¥íýÿ&ø)K€Òú ÿ(ö !6^˜ãü ÿ+ó (Ep«íýÿ/ö 1Rx»ôþÿ5ö 4X€Ê÷þÿÿöýïÞ×ÔÇŸd* ûB¤Ýý'ÿõöãÚÓÆ­ƒR'ù‡»Øî+ÿíøúùòæ×ɸ¡‡‡“¨ËÝæëö/ÿþóúóëèæäâæóíåâõ1ÿóüþþý÷óëëöóëæü5ÿùþõëíðõý ÿþ ÿÿø>ÿýëþþ<ÿýîþþ<ÿþëùþý8ÿýÔëýþýøèî5ÿüÁåûþüüíÈÅ3ÿû/x¬ØõþüøÜ¨á1ÿð?‰Àä÷úüýþüíÌÅýÿÿþÿøTÍãëõþüôáÈå.ÿù$g°ÙëýþúùëØ®Þþ+ÿú6ÂçüþúûîåǦó*ÿûOšÕ÷þúüïêÞ¼Û)ÿ òi´ëýþþýíëæÓÒö'ÿ ñ4ŒÓóýþõéëêàÖÖú%ÿ ò S«ÜêÝÛëëññáÃÞ$ÿ ø|ÁÔÕçíþüöÝÑú"ÿú5¡ÌÛëþüýòÞô!ÿùo»ØëòùþüüîèþÿùG—ËÝæ÷þýùæøÿù!]´ÐÞõþþõüÿú)‚ÅÙòþþýþÿú9¡Ííýþÿû Q¶àùþÿûsÈìûþÿû‚Éëùþÿø~Ãàîõüÿ ø!¼Ûèôþÿ"ó&|ºÛîüþþÿýýþÿ$ò%z¼àøþþöïôùýþ ÿ&úwÁìý þÿÿÿÿÿÿõùÄa<% ø )AD<+þ!ÿøå‚H, þñ+Ba]J- %$.ÿùýÇ^<)æ%$ .7QccM+%-)-ÿùø›F5+æ*77/$*..Eÿøé—gOD:51/þ10/ñ>Nb{xhP@?EIIB@QÿùýÐy]M=2/æ7>AII?96227@QYn}}kN?@IPM?Pÿùù¬eVN@1/æ>?MYYRI@??@MQQ]lzxaI??@A?JÿùòmVLD?8/é=@QZkhUOIJVZVQQ\fhe[E8:?ÿýîg>?þ=3/é?ÿòñvM@3//7?DOG<3/ÿ8?íKZ{uZBISq}vXQQ[lr^C?ÿúòƒN@>0/ç4?FQMC5//7??@OQ_{hM?AK\`SQù^eeR?39ÿúôŒQ@?7/ô3=EPQJ919??EQídlaF?8?NdkgR@ON;/4ÿøù§`QQJ@3/ø1?:3//4<?êKQQMMVe`I?8Gap}eGA@7/3ÿýú¹dQùPI<2//2?ÿ7/ý37<?êBPQJ?IYeZD47Qh}}X@>0// ÿñýÐjN>@IX`a[M=23?þ;1/ÿ7?îHQQC?I[dP=/=[r}uI?/ ÿñçuL9/8Cb~›˜~`QE?þ>3/ê3;MQN@?La[G53Fd{}aA1// ÿìöƒM?5/3?Ib~›’zh\I?<<?ÿ6/ì9QQI?DVdQ>08MqzM7// ÿûü˜U:3/î3;EVhu}{udE1/5=??7/í@RVC?N_[H70>Y•‹kA0/ ÿý¸^@3ì1//3:FSaoyvQ9//0>??7/í3VoR?EVdR?07Fo~{R6/ ÿãàkC??JVUN?4//28CL[`M?3/3??FJ9/îFz_G?IZYI72?Vz}oA/ ÿáüƒH>?G_uŽjVD4//17>@@?=17??IVQ8/î7acP@BQQPA1=Eh}{X5 ÿì³[70?EfŒVÿý¼Z3/ó;@FPZgu}~zaM8/ÿ7?úKXe[C1/ï2IXQE?Nk}lJ88Qƒ³qÿýö€I/ñ8?7?BFJS]kcQI;0/þ3>?úAQbeR8/ð:;;>?@@??=2/ö380>DPY[WM?1/ø13683/ù3>IYeN8/ñFJOaeüRB<2/üAEB@??7/û6LnZ3/ù3EP;//7ÿùílI/;?3 /ÿ0/û1Igf9 /ú780//3ÿñÁXA4>MC>=<<=<72/ü9V`?/ÿ1ÿýý†I?õPQQV]enl_O</ý8@2/ÿýèpE?õMR_eel}}u[E+/ÿýÀfG?öFJLMOPLI@5,/ÿúüŒeG?<?þ:4./ÿúñu[D>8?úDGA:83/ü3994/ÿïÚcI?89??AMUX[SI@2/ú8?DC?7/ÿðÄU@?2:?@Vcee^SI;/ø0??@@?>7323;?ÿ:/ú2/ü37?@?û<==72/üÿõl4/õ7?@[~›z^M;0/ñ023578:<=??FQD9/ÿþ~7/ø2%/ý3?</ÿûæP832/ü07<4'/ý7?:/ÿûýuD?;./ý040/ÿû©hI?07/ÿúæzS?<2/þ30./ÿúü_??:/ý9?0./ÿû¸j?B?/ý8?8/ý273)/ÿîôrHPJ2//8??1//3DB8)/ÿõûÝ¥‘„}}{xusrùt}†”•‘‡}ý|{~ÿøð¸˜ˆ€yvsrsrñ|‡”¥£™ˆ}}„ƒ~‰ÿùýߤ‘†{træx|~„ƒ}yvttw~‰Ž§§š‡}~„ˆ†}ˆÿùûÇ—‡}srù|}‡ŽŽ‰ƒ}ö~‡‰‰‘œ¥£”„}ý~}„ÿùöœŒ…€}xré{}‰š˜‹ˆƒ„ŒŒ‰‰—˜—€xy}ÿýó˜|}þ{tréz}…‰˜§šŠ‰‰“šš”‹‰Š’—š‹yu}ÿõõ‡vsy}}~}xréy}}…Œ ¥”‰ˆ‹§¥›Š‰Š•¤š…|}ÿòõ¢†~urrw}€ˆ‚{trÿx}í…¥¡ƒŠŸ§¢Ž‰‰œŸ’}ÿúöª‡}|sröu}‚‰‡vrrx}ôˆ‰“¥˜‡}~…“Љù’——‰}tyÿú÷±‰}}wrôt{€ˆ‰„ysy}}‰í•œ”‚}x{†‰‹‹‰‡‹—“~rvÿùø·Œ~}}srùsz…‰†~}ÿ„‰î•—~st‰••…Ž”}rvÿùùº‚}}xrøtrrsy}~€}ÿ‰îŠ••ˆ{|}‡•š˜‰~ˆ‡zruÿøûÓ‰‰„~urøs}ytrruz}ê…‰‰†‡—“ƒ}x‚”ž§—‚~}xruÿýûЕ‰ùˆ„ztrrt}ÿxrýuxz}ꈉ„}„Ž—€ux‰˜§§Ž~|srr ÿñýßš‡|}„Ž“”†{tu}þzsrÿw}‰}ƒ•ˆ{r{Ÿ§¢„}r ÿñî¡…yrx”§»¹¨“‰}þ|urêtz†‰‡}}…”‚vt‚•¥§”~srr ÿìø«†}vrt}ƒ”¨»µ¥˜„}{{}ÿvrìy‰‰„}€•‰|sx‡Ÿ©¥‡xrr ÿûý¹‹yurîtzŒ˜¢§¥¡•€srv{}}wrí}‰Œ}‡“ƒws|Ž·°š~sr ÿåÎ’~ututsrrty‚Š”¤¢‰yrrs|}}xríuŒ‰}Œ•‰}sw‚¨¥Švr ÿãéš}}„Œ‹‡}urrtx…“†}uru}}‚„yrî‚¥“‚}„Žƒxt}Œ¥§~r ÿíýªƒ|}‚“¢²©šŒ€urrsx|}÷{sx}}„‰xrîw”•ˆ}‰‰ˆ~s{™§¥Žv ÿìËwsz†”ªÍÖ´ŸŠ{srrsw}÷{x}}‚‹•‰vrîs„—Œ‚}…‰‰yx}‰¤²¡~ÿî÷¢}rrt€ˆ«´¸¹§•ƒvrþtz}ú‰““„urïyއ}‰˜š‰|}€—±³ÿýÑuróz}‚ˆ˜¡§¨¥”†xrÿx}ú…Ž—srït„މ}‡š§œ„xx‰«ÌŸÿýø©„rñx}x}‚„Š‘š•‰ƒzsrþu|}ú~‰”—Šxrð{ˆ‰ˆ~„˜§¨•}r~šÎ½ÿèþΛ~rsut{}x}|yzz|}~~}}{tröux{}‚‹•”€trðu‚‰‰…ƒ•£µ§ŠvuŒ·Õÿò沑|s|€ˆŽ‡}srøsuvxz}|trùu|„Ž—‡xrñ{‡‰‰Ž—´ºyr~ŸÓÿñþ΢‰{v}†• ¥¥—ƒzrýtvsrùsz„’’}srñu€‰‘—­È•}rv¶ÿðõ½—}z}~„‰Š…~}srús{ƒ‚vròz„‰„Œ Çš„urƒ¥ÿý娇}þxz}ÿtrûu}zròu~‰‰}€’³ž…zry—ÿþÌ}þru}þztrÿx}ÿtróx€„}}ƒ ›‡}tuŒÿûõ­{xz}ö„……ƒ€}vrÿt}ÿxrÿz}ø{Š•ˆ}us„ÿóà”svtsvy|‚„ˆ”—üŠztrüzƒ~rôsxyur{މ~sr}ÿúþ³ˆr{zrôtvxy|~€~}}xrûv…urùu€ˆzrrxÿùó›„rz}t rÿsrûsƒ˜—y rúwxsrruÿøÕŽ~u|‡|{ýzwtrüyŒ“}rÿsÿýý­„}õˆ‰‰‘—›“ˆ{rýx}trÿýðž}õ‡Š“——œ§§¡+rÿýÔ—‚}ö‚„…‡ˆˆ…ƒ~v,rÿúý±—‚}{}þyu.rÿúõ¡€|x}ú€‚~yxurüuyyurÿïæ•„}xy}}~†‹ŽŠ„}trúx}€}wrÿð׋}}ty}~Œ•——’Š„zrøs{€‰ˆ„}s rÿð½ƒ}yrz}„”•‘Š…ysrøs{‚ˆ‰‰…u rïÿþ¨}trz}ƒ‰ˆ„}zsrùsy~ƒ„‚x rðÿöŸ}vrrzuuz{{}}urýswurøuxyy}}xs rüÿæ˜yrûtrrsx}þysrüuxwtrûx~}ysrùz}Œ‰€urüÿØ“tróv|}}~~}|xutuz}ÿyrúz…ˆ„~vrøszˆ•”‰€t rýÿÔŽr÷u{}~ƒˆ‰ˆ„ù€‚~}}{trþxƒ‰ý…ztrúv„Љ‰{ rýÿÔr}û€’‰‡‰ù‹‰‚}ysrýs{ƒ‰ý„zurütyyt rüÿÜŽsrðz”Œ„„‰‰Š•šŠ…}xrôsu{„‰‰…{xurüÿèŽtrñu‚Љƒ~Š”——¥’†}u rùsx€‡’š‰}ûyxvut rüÿð“urÿy}÷„—©¥—“†|trütx}~}{þwtrüÿøœurõx}}¨»¥’‡zsrñstuvxxyz{}}‚‰€yrÿþ§wrø{‚𭬄xrúsw}~ysrÿþ³{rùz„¤ž‹€u"rûusruurÿýÍsrúyƒŒ‡|t%rýu}{rÿûîˆxutrüsxzu'rýw}yrÿûý¡€}z.rýsusrÿûĘ„}s7rÿú}ztrþus.rÿúý³“}}yrýy}s.rÿûΚ}}rýx}xrýtxt)rÿî÷Ÿƒˆ„trrx}}srru€x)rÿþ ù1.#5;Dú.-$ ø+.$/A$.ûC7 ø:%.%)1.ûY]; ø4"-%&ù'Aca1÷/%&#ø 1JWH# ù=)$2÷+.7FF3þùF3.7"<ÿ.ú=F4% ù0 ùGDD6#5ö".6=CF0,÷&.;B.  ùGFB.&#ñ*CFF<..!.û0CD1 ÷GF7./è1:9.+., 55/.6FI3 ÷GC/./ÿ!.í&0A" ?^G0.8QR2 ü/F9.þé'...IQIMT/Qûux\@8 /øVG@PIJA/ùEKa}{S=/÷/3/ù0//7ERA/ /ùfddWHW/öGQW^ceRO?</÷=?BJQ\bQ4/ /ùfebQJH/ñ@Mcee]QQA?1//8FQûRcdS;/ ÷/7feYQR@/è?BS[[QNQOE<1/0CVVRQWehU9/ ÷/DfcRQR@/?ÿFQí@JRaG?CQQNNQUe[?0/3Msx]QQ`xjG/÷/H[AKQQ;/û/1:?NQï^eQ7///÷/BI4IQQ6//þ:EQíPUeaI2/3E[edRLScdO4//øG;1IQQ://æ0=IQQM@I]e[=//9L^e^KERcZE3//øI33NQQ=/ß54//3?MQI?04EZ†~Q37>@@4//AJ[P/ø3?JƒÃ Y9/ú3PSl|g/ø4IpŒŒ`//ÿ3/ë7@`qbK?E\e[M??EpÁ¿sL3/ùENXRD./ü~†P2/ß;^]O33DeuO2/;‡øúO>@Q^N?//5;@<3/./üu}[9/è5M[N96Ad€c7/3~ïû¯Q28DRJ</ÿ0/./ûj}fB3/è1BVM??@`Žs?/2láûÁP//3<>4/ÿ0./ûUyoF6/î:KL??@[ŽxE63VËú¶K1 /þ6<./ûMnqI5/î3CI?8H¯ù§F5/ý383/ù;>0..-ûInyK4/è4<4/1IurL;9@rñ’@?2/2/þ87 /ö0FpßÕ9  ü/140'/ö?nãÿ÷- */õ3Geäÿÿ÷…( */ü>Icãÿü÷| !/ÿ1/ü>Gaåÿüîl /þ3</ü8D_æÿüâ[/ý1>8/ü0;VëÿüÐG /ý;=1 /þ<îÿûþ²4/þ30 /þ5ïÿüû“!,/þ7ðÿüón/û14753 /þ<öÿüä?/ø3:AGB??< /þIþ ÿþÏ/ÿ0/ý2=LQüJ?<2 /ÿn ÿú¬/ô?=3/· ÿûñ]/þ23/þ30 /ÿ./þMÚ ÿüâE'/.ü/5dòÿýÇ6'/.ü/Bsùÿýþ¤,'/.ýD~ûÿþù‚'/.ýDþÿÿî'/.þ;ìÿ'/.ÿìÿ'/.þ¡ÿ/ù3688940 /ù059@@91/.ý!ÿþun rùw‹‰ƒ–ú‰ˆƒ|ys røry‡‰ƒ‰”„‰û•Ž~{t rø|„‰„†‹r‰û¡£}x rø‚~ˆ„„~rù€…”§¥Š{r÷r{‰}„„ƒrø}Š™ ˜ƒtrrù‘~†ƒ‹r÷}‡‰Ž——‹{srþwsrrù–‹‰Ž‚‘rÿ€‰ú’—Œ„|urùsrrw€Š~r rù—••ƒrö‚‰’•—Šˆ}zr÷{}„‰”‰ur r—û”‰„ƒrñ}‡•——‘‰‰~}srrx‚‰ûŠ••Šzr ÷rx——މ‰~rè}Љ‡‰ˆzsrs‰‰—˜Œyr ür€—•‰þ~r}ÿ‚‰í}„Š”‚zrrv“¤—Љ‹wr ürŠ—‰þ}r}é…‰‰~‰‘”‚urr~Ÿ§˜‰‰‘¢œˆurýr‹•‰þ}ræu|}‰‰‡‡‰‹—}sru‡ £‘‰‰“£š‚r÷rƒ~…‰‰zrûrsy}‡‰ï’—‰xrrz‹˜—މ‰•›|r÷r~„u„‰‰wrrþy€‰íˆ‹—”ƒtrt€—•Š…Š••ˆvrrø‚zs„‰‰zrræs{ƒ‰‰‡}„‘—{rry…’—’…€Š•trrøƒtu‡‰‰{rßvurrt}†‰ƒ}{„••‰urt~Š——~††yrrwvrrý}ry‰þyrþvzrây‰„xrx‹—sry„“”‚}}€ˆ~tru|~|rúrrwsƒ‰þtrþrsrát}ˆˆ{st‚••Š|su€­¨‰uw|}}urr~„ˆrøuzˆ””‰rrráz„‰ˆ}{~—‡zt}ŠµÎŸ{rsvytrs…‰™Ÿ~røy€¤¡rrrìxš‰~}ˆ••Š|}„ªÖ¾ŽyrúuˆŠ›¦˜røu„ž±±“rrÿurëx}“Ÿ”…}—†}}žÕÓ …urùz‰Žš§•{røw‚¨»´”trÿ}rëv}ˆŸ€}‡—•‰w}•ÐÖº{røv‰Ž˜§˜‡rø{´»ª”wrþ‰urÕs{‚—¥“…}€•—Œ‚twŽÁáÓšƒrru€ˆ‰Š—§¢Œ~rrƒu¸ºŸyrþ•}rés}¥‰~~—„ts„®çí§sx‰ò“¥§“‰rt„v”©—„wý¬‡srêt…ž¥‚}Œ—“‡ur{¥ã÷¿~}ƒ‰òŸ§žŒyw„u{“Švuýºxréz”§‘„}†•—‰wruÕ÷à•‚}„‰“‰ó“§¤“‡ur{xrrý»˜}rÙu¥•…{€—Œ{rs“¾úò„}„Ž•‰ƒˆ”§˜Ž~urwtsrrý±§„ràƒ˜‡sy‡—“€rrƒ³üû§…}€Ž”‰}x|‡Ž‰€qrü§­ˆtrßz’‘ˆuu€—¡ˆtrz­úü´ˆ|}‰’‡}rrvz}{uqqrü¡§yrèv‡‡yv~•©•xru§ôüȉtx€Š„{rÿsrqrûš§—urüsŒ‡} }rt›ëüÕˆrru{|urÿsqrû‹¤‚vrýy……}ô²£€vuŒÜüÍ…s røvzpqqprrû†Ÿ„vrîtƒ}x{Šª¢ƒ}|ƒÈûÂvrýuxurþz|qþo9ûƒ¤…urèu{urs„¢Ÿ…zy~Ÿõµ~}trtz}}zrùz}wrqqXû~¥‡urÿtrñ{”•†srv}Œƒxtrrx}ÿtrüx}}wqÿûzšŸ‰trþ{urüu†‹}rÿsrúz†„~vr÷tvz{km öx™Štrrt}xrýz€trùv„—•‹wrøv~zS# öu„—‰srrt}yrþst rùsy~zxsr÷u‚žŠ# üs{€|rþxw rös‚žéÕ9  ürsus'rö}ìÿ÷- *rõu‚—ìÿÿ÷…( *rü|ƒ•ìÿü÷| !rÿsrü|‚”íÿüîl rþuzrüx€“îÿüâ[rýs|xrüszŒñÿüÐG rýz{s rþzóÿûþ²4rþts rþvôÿüû“!,rþxõÿüónrûsuwvt rþ{ùÿüä?røuy~‚}}{ rþƒþ ÿþÏrÿsrýt{…‰ü„}zt rÿ ÿú¬rô}{ur{€‰‰ˆ„}x rÿqrþu¹ ÿúúrõx}{rty~€}xt rÿqrþ|Î ÿûñ]rtrþus rqrþ‡æ ÿüâE'rqürv•öÿýÇ6'rqür ûÿýþ¤,'rqý€¨üÿþù‚'rqý}½þÿÿî'rqþuòÿ'rqþOîÿ&rqþ¡ÿrùtvxxyus rùsvy~~ysrqýH!ÿüÿûïøþùûõêʘNþÈøÿþþ¸ÿýþüûþú÷æÒ•Dýåüÿþö… ÿþúýùóØ|$þ/îÿþàT ÿþüöÅ_þ^òÿýþÇ= ÿþüûß…#ýiñÿýýÄ7ÿþúûýé›8ýoóÿþÖ3ÿøýíðùë­MýzýÿþÝ-ÿùïåïæ¿_ þ+ŠÿþÔ'ÿùùæëåÊr þ@ŠÿþÃÿùúêñèÐz þV‹ÿþ¹ÿùüëûðÒ þ‹±ÿþ¹ÿùýñýòÓƒ þ ÀÿþºÿùûõþóÔƒþÅËÿþ¼ÿùú÷þóÒ…þÅÏÿþº ÿùøûþîЇþ¶Ïÿþº ÿùöþüëÎŽý¹àÿþÀÿþûúèËý»ðÿþÆÿûûïÆ“#ý8¾øÿþÄÿöýõµ•,TÃüÿþÁ!ÿøï½˜>2ÕüÿþÀ!ÿøþê®›R ÖøÿþÂ"ÿùþ櫞o¼ûÿþÃ#ÿúüâ´§¼ûÿþÉ$ÿûûÆÉÕùÿþÏ%ÿüêáç÷ÿþÓ&ÿýêîûÿþûÏ&ÿýýîýÿýúñ¯'ÿøôýÿÿýéãT(ÿùýÿÿýîÒ%*ÿûþüé¹*ÿþýéž +ÿüþðŠ,ÿýú…,ÿýýš-ÿþ÷X.ÿþêF/ÿýêN 0ÿýóŽ 1ÿýú˜ 2ÿýù¢ 3ÿýó©#4ÿýè«4ÿüþå¥ 5ÿüûå6ÿüûã’7ÿüûÞ}8ÿýùÓP9ÿýôÃ+9ÿúþî©:ÿûýè… ;ÿüûÞƒ<ÿýúÎh=ÿþñÀ=ÿþþÞ>ÿÿð>ÿÿþ«ÿÿ÷>ÿÿöÿ Àÿ>ÿ>þ=ý&<ûd!:úÝL9úÿ»8+9ùÿû‹*(8ÿûìb( <8 Àÿ>ÿ>þ=ý&<ûd!:úÝL9úÿ»8+9ùÿû‹*(8ÿûìb( <8 Àÿ>ÿ>þ=ý&<ûd!:úÝL9úÿ»8+9ùÿû‹*(8ÿûìb( <8 Àÿ>þI=ý¶-<ýÔ¨<üÚД ;ûüåÓz:úÿùîÞW9ÿþþË89ÿýê¤8ÿüüÆ7ÿýñ¹[7ÿýͯ6ÿü÷¼5@@@@8ù 3X…Ô;ü,€8ù 3X…Ô;ü,€8ù 3X…Ô;ü,€(úkÁëú þþýþÿ+úL±äôýþþøýþÿ-÷2“àýþþîðþ/øŒÖåæëûþ2ø 5’Åßîöüþ4ùS¡Èãüþ7ø %^¢Òäîó9ú+eš°;ü 0 Àÿú>ÿüVàü;ÿû!|èý8ÿû 9¾þ5ÿýfø4ÿüIªô2ÿú(V¬ú0ÿû 6qä/ÿú &WÂþ-ÿú "Jšõ,ÿú>‡ó+ÿÿ ù 6Žú*ÿÿù 7œý)ÿÿý7¨)ÿÿ ö <Á(ÿñ:OJ0OÔ'ÿð (WÄç^/bè&ÿï ,déûÖW*$lô%ÿî#dàÿü·A) *yú$ÿíT¸þÿñ~3* -Œþ#ÿí5vðÿýÒS&  1›#ÿìLºÿÿù93ª"ÿÿ÷%súÿÿÛnû4¯þ ÿ ÷9çÿÿó¦9û 3¨ýÿ ÷)çÿøñç‡ú3¢ûÿ ÿö8çÿüõñ»[ú4—ùÿ ùVëÿûûóª0û3ˆ÷ÿ übíÿûþò‹ù 2{ôÿ ü !`éÿñþñe,oñÿ úVßÿùïIü1eêÿ ùGÅþÿýç>ü1]Úÿ ù 8‹üÿýãDú 0TÂÿ ù !eêÿòßK*8XÖÿ ù SÏ ÿò×P#"/@Fkìÿ ø  @²ü ÿòâb4*'-ACCP¨ûÿ ù  (–á ÿóð€E! $00@˜÷ÿ ùdÁ ÿôù¤Z !=Çþÿ ÿü =–ò ÿöþÜ}7 4RÀüÿ ü#nÖ ÿúþëÉÁÖ÷ÿ üN¹ý*ÿ üC¹ü*ÿ ü :¶ý*ÿü ,sý*ÿü!Kç*ÿü>«þ)ÿü+lï)ÿýWâ)ÿý JÐ)ÿý9µ)ÿü(‚)ÿþb)ÿýOý(ÿý7Ö(ÿü%Œ(ÿý[õ'ÿý >Ô'ÿý0¢'ÿý!pû&ÿýSë&ÿûGÁ&ÿú Aþ%ÿú?qû%ÿû2[ë%ÿûIÉ%ÿÿú>ÿüVàü;ÿû!|èý8ÿû 9¾þ5ÿýfø4ÿüIªô2ÿú(V¬ú0ÿû 6qä/ÿú &WÂþ-ÿú "Jšõ,ÿú>‡ó+ÿÿ ù 6Žú*ÿÿù 7œý)ÿÿý7¨)ÿÿ ö <Á(ÿñ:OJ0OÔ'ÿð (WÄç^/bè&ÿï ,déûÖW*$lô%ÿî#dàÿü·A) *yú$ÿíT¸þÿñ~3* -Œþ#ÿí5vðÿýÒS&  1›#ÿìLºÿÿù93ª"ÿÿ÷%súÿÿÛnû4¯þ ÿ ÷9çÿÿó¦9û 3¨ýÿ ÷)çÿøñç‡ú3¢ûÿ ÿö8çÿüõñ»[ú4—ùÿ ùVëÿûûóª0û3ˆ÷ÿ übíÿûþò‹ù 2{ôÿ ü !`éÿñþñe,oñÿ úVßÿùïIü1eêÿ ùGÅþÿýç>ü1]Úÿ ù 8‹üÿýãDú 0TÂÿ ù !eêÿòßK*8XÖÿ ù SÏ ÿò×P#"/@Fkìÿ ø  @²ü ÿòâb4*'-ACCP¨ûÿ ù  (–á ÿóð€E! $00@˜÷ÿ ùdÁ ÿôù¤Z !=Çþÿ ÿü =–ò ÿöþÜ}7 4RÀüÿ ü#nÖ ÿúþëÉÁÖ÷ÿ üN¹ý*ÿ üC¹ü*ÿ ü :¶ý*ÿü ,sý*ÿü!Kç*ÿü>«þ)ÿü+lï)ÿýWâ)ÿý JÐ)ÿý9µ)ÿü(‚)ÿþb)ÿýOý(ÿý7Ö(ÿü%Œ(ÿý[õ'ÿý >Ô'ÿý0¢'ÿý!pû&ÿýSë&ÿûGÁ&ÿú Aþ%ÿú?qû%ÿû2[ë%ÿûIÉ%ÿÿú>ÿüVàü;ÿû!|èý8ÿû 9¾þ5ÿýfø4ÿüIªô2ÿú(V¬ú0ÿû 6qä/ÿú &WÂþ-ÿú "Jšõ,ÿú>‡ó+ÿÿ ù 6Žú*ÿÿù 7œý)ÿÿý7¨)ÿÿ ö <Á(ÿñ:OJ0OÔ'ÿð (WÄç^/bè&ÿï ,déûÖW*$lô%ÿî#dàÿü·A) *yú$ÿíT¸þÿñ~3* -Œþ#ÿí5vðÿýÒS&  1›#ÿìLºÿÿù93ª"ÿÿ÷%súÿÿÛnû4¯þ ÿ ÷9çÿÿó¦9û 3¨ýÿ ÷)çÿøñç‡ú3¢ûÿ ÿö8çÿüõñ»[ú4—ùÿ ùVëÿûûóª0û3ˆ÷ÿ übíÿûþò‹ù 2{ôÿ ü !`éÿñþñe,oñÿ úVßÿùïIü1eêÿ ùGÅþÿýç>ü1]Úÿ ù 8‹üÿýãDú 0TÂÿ ù !eêÿòßK*8XÖÿ ù SÏ ÿò×P#"/@Fkìÿ ø  @²ü ÿòâb4*'-ACCP¨ûÿ ù  (–á ÿóð€E! $00@˜÷ÿ ùdÁ ÿôù¤Z !=Çþÿ ÿü =–ò ÿöþÜ}7 4RÀüÿ ü#nÖ ÿúþëÉÁÖ÷ÿ üN¹ý*ÿ üC¹ü*ÿ ü :¶ý*ÿü ,sý*ÿü!Kç*ÿü>«þ)ÿü+lï)ÿýWâ)ÿý JÐ)ÿý9µ)ÿü(‚)ÿþb)ÿýOý(ÿý7Ö(ÿü%Œ(ÿý[õ'ÿý >Ô'ÿý0¢'ÿý!pû&ÿýSë&ÿûGÁ&ÿú Aþ%ÿú?qû%ÿû2[ë%ÿûIÉ%ÿ€ÿúûóîíñû9ÿþûüöò÷ü6ÿþýíàµ5ÿþýùòí5ÿÿüþÿý5ÿýÉðüþ6ÿûiÉëûþ6ÿ÷8x±äùþþ6ÿû GÖó6ÿü`¿ô5ÿý¡ñ5ÿýô5ÿýžó5ÿý¬ñ5ÿý ¹õ5ÿýÈø5ÿýCÓ÷5ÿýdÛö5ÿüƒàõ5ÿüšåõ5ÿü§éò5ÿü¯ëï5ÿüŸëë5ÿû‰Ðâý4ÿüeÇÝù4ÿü1¹Ùó4ÿü °Îî4ÿû¥Èçü3ÿü“ÃÛö3ÿüpÀÕå3ÿû>»Õàý2ÿû&µÙìú2ÿû ­Ýìø2ÿû¢Ýëõ2ÿü’Ùëó2ÿüyÔë÷2ÿüLÍüþ2ÿþ/Ìþ1ÿþÃþ1ÿû °úþþ1ÿý¡çþ0ÿ ûˆÔðþþ0ÿ úgÒÚóþþ/ÿ úCÏÕàúþ/ÿ ùËÞêðþþ.ÿ ùÍüìëüþ.ÿ ùÀüõëõþ.ÿ ù¢öôëôþþ-ÿ ùzæëëöþþ-ÿ ùGÞêâóþþ-ÿ ùÔêáëûþ-ÿ ø ¿ëéëôþþ,ÿ øžèëìüþþ,ÿ übáëúþ,ÿ ý&Òðþ,ÿ ý¬òþ,ÿ ýxèþ,ÿ ýAËüþ+ÿ ý!¥îþ+ÿ ü Ðüþ+ÿ ýQ¶óþ*ÿ ü$§ßýþ*ÿÿõþk7.# ü3$)ÿüµA.ÿû;; )ÿýóa.ÿ ûS:)ÿþ¨1ÿû (S3'ý ÿùöhû7G& &ü  ÿûÁ/ ûC@&ü ÿóþƒ "F6+ÿôëS  %C(+ÿõÃ.&/ö   ÿýý”üþ ô-../443- ü   ÿ÷ð^ ýó #..+)&"ÿü  ÿùÞ;û-5üõ#-+  ÿ û  ÿúÀ%  ú.D:û,71.û,#ö #$ ÿýüŸù-JC!õ ##  ý*.ý0,# ÿýùlû(;@ ü õ #%%).& ÿýóWú'# ÿýìGÿÿ õ   ÿýíVý  û,9;<ù81+! ÿøôiñ"1=@ACFF]cp‡Oÿ÷ù®7  ò#(1574'ÿöýÕg û%.ýÿöíœ)  ü&/0.ö+'&%%#!#%'ÿöüÑM  ð %6<@BFFB@<:760.ÿ÷ï—6  ì"$&),..0-'%$ÿøÝs(   ö ýÿùýÍ] ù!ÿûúÀV ù*440&ÿúüÂb( ù$ !ÿú߃9 ü #ÿùø¯P& &ÿú÷¤X-)ÿöþÏu9   .ÿïäšmYMC;6-(%#! !$'4ÿõþêÒº´··¸¸¿Ó€ÿÿõþ„XQH<7?<0/û8XfJ6&/ü5??3ÿûËR4<2/û@c`E1&/ü3552ÿóþ˜?//43/2GeW=+/ÿôîp5/794/ ÿ÷òy7//:851/ý8C7/ó3??HQQNMJG@80/ÿ<?ü=6// ÿùä\2/:<0/û7PV@1/ü09>>=õ<@DHPNE?<73/ÿ6?û;51// ÿúÊI/5?3/ú3/ý8?MQýROH ÿýú…8/?ûL\`B3 /ü0231/õ39<@EHIIMQJ ÿýõs8/ú;?AKH4/0/ÿýïf8/ÿ2?ÿ7 /õ3:;98753321 /ÿýðr:/ý5?< /û083/ÿøöƒB1//:;/ñ9GS^`aceex}ˆ›l;/ÿ÷ú¼X5/1<83/ò7?@CDCHLSVXVK7/ÿöýÜ€>003 /ð6?IW]`beeb`][YWRQÿ÷ñ¨W803:?3 /ì17;?CGIJMOQQRPKII@?@ÿøã‹L5/381 /ö03356789;<?ý=1/ÿùýÕxE3/0/ù9BFC?<1ÿûúÊr@3/ù8MVVRJ8ÿúüÌ|L93/ù7@EIE<0!ÿúä˜[B83/ü0352/#ÿùù¼mJ=50/&ÿúø³tP90/)ÿöþ׌[E;4310 /.ÿï誆ukc\WPLIHFEFIK4ÿõþíÚÅÁÃÃÄÄÉÛ€ÿÿõþ¬Ž‰ƒ{xz}}vrü~‹ƒx)rÿüÕ”‰~}ÿ{rûw€u)rÿýø¥‰}ÿurû~ž}s)rÿþΊ}ÿxrûu…ž‹y'rýutrÿùú©~|}{srûxŽ—„v&rüv}}uÿû܉u{trû}•“€s&rütvvtÿóþ¹}rruurt‚—{+rÿôóžvrwzru„•…x+rÿõ݉srtrx„‰€trösuvxyxxvut rÿýýÂ}rüy}zrþutrý{~ˆ‰Œü‹ˆ€urüu|yur ÿ÷ö¤wrryxvsrýxxróu}}ƒ‰‰‡†„‚~xsrÿ{}ü{vrr ÿùìtry{srûxˆ~srüsy||{ö}€ƒˆ‡}{xtrÿv}ûzvsrr ÿúÛ„rv}urú{‰•}srûs{ˆŽŠ‰ûˆƒ}xtröv}€ƒƒ~zwvv ÿýýÉzrùx}ˆ™•‚{rõsvz~€ƒƒ}|trýx}‡‰ýŠˆƒ ÿýû¬xr}û…“u rüstusrõty{}€ƒ„„†‰„ ÿýø xrúz}~…ƒursrÿýô—xrÿt}ÿx rõuyzyxwvuuts rÿýõŸyrýv}z rûs{ˆ‘ùЇ‚|xurÿøøªsrryzrñy‚Š’“”•——£§®»œzrÿ÷ûÑŽvrs{xtròx}}€ƒ…ŠŽŒ…wrÿöýç©|ssz}zv r}û{y{}„‰ý~xsrÿöõdžusy}}zs rüs}„‰Š‰þ‡…„ûƒ‚ƒ„…ÿöýåš{suz}|u rðv}„‘“”——”“‘ŽŠ‰ÿ÷öÄxsuy}t rìswz}‚ƒ„†ˆ‰‰Šˆ…„ƒ~}}ÿøì°…vrtxs röstuvvxxyz{}ý{srÿùýâ£ursrùy‚}{sÿûüÛŸ~urùx‡ŒŒŠ„xÿúýܦ…yurùw}€ƒ{s!ÿúí¹xtrüsuvtr#ÿùûÒœ„{vsr&ÿúúÌ¡ˆysr)ÿöþä±zutss r.ÿïðÆ­¡š•ˆ…„ƒ‚‚ƒ…4ÿõþóæØÔÖÖ××Ûæ€ÿÿõ &..+ ø*DF@%üÜÿã#+..)   *9F?/ ÿ`ÿþ é./.  ! þÿ ÿó  )8F<&ÿ ÿ þÿìÿ÷*.170 ÿÿ ÿÿÿú ÿÿ þ*øÿý û  þ×ÿö þ ÿ‘ÿú ÿþ@ñÿø#(*+'ý þÙÿõ(..'  þ •ÿüÿ  ý@ù ÿ ù!&" ýã ÿÿú).DA&  þ « ÿö  þ\ ÿ! ý)ø ÿ ýå ÿý ± ÿ ý ýk ÿõ "' ü>þ ÿü ü+)ÿþ&ü ÿò+,,/41*% þã ÿ.ø084+  þý¶ ÿú þý‘ ÿü ý ÿü(qý ÿû /né{ý ‘ ÿü ú:šøþwý ÿü ö !lËþÿÿ©ý ÿ û 0^žèÿüøl ý ÿ û #oºéÿüè4þ • ÿõ .’éú ÿüüzþ¡ ÿö*.17Dd‹Øúþ ÿüÚ4þà ÿþóýÿüúaþ,Þ$ÿü¼-þGð$ÿüöK þgö$ÿüý~"þxú%ÿýÀ:ý’ü%ÿüöK ý´þ%ÿüýeþTÒ'ÿý•(þ‚æ'ÿýá=þ­ú'ÿýýTÿÒ)ÿýp ÿò)ÿý© *ÿýæ=ÿ¡*ÿüýLþšý+ÿýi þoø,ÿü‘" þ7Ù-ÿüÆ, ý¶þ-ÿüï9 ý’ø.ÿûþJýnñ0ÿüfüZâ1ÿûœ üOÏ2ÿûÏ&üI¾3ÿôò36‚þ4ÿöDCº5ÿþ^ ûAá5ÿþ‘û1×5ÿþÎû ½5ÿþó)ýš5ÿýý=üq6ÿþXûNþ5ÿþ‰ û3úÿ/õ4>?AJQQNA80 /ø7AMde`I8/.üÜÿ/ã>??AHNQQM?<0//248;6/4?M[e_RD5/ú.*`ÿ/þ38?éBQRQC?>;>?<83//7?@EFD@: /þ.$ÿ ÿ/ó3?EMZe]J??<72/ÿ4?ÿ1 /þ,ÿìÿ/÷:MQSXRB61/ÿ>?ÿ6 /þ,ÿÿ/ú1;>>71 /ÿ8?ÿ< /þ*øÿ/ý032/û3??;2 /þ×ÿ/ö13579<>??</3 /ÿ‘ÿ/ú2368:<?<ÿ8/þ@ñÿø/7@HLMNK?ý=73/þÙÿõ/1=LQQK@?>5/ þ •ÿ/ü1=BA?ÿ6/ ý@ù ÿ5ùþ ÿü038=?üANM8/./þ&ü ÿòNOORVSMI@??;83/.ü)'//þã ÿQøRZVNE<63 /.ü-#ý¶ ÿú?><852/ý, ý‘ ÿ/û144ý ÿ/ü?L‰ý ÿ/û6R‡í{ý ‘ ÿ/ü0330/ú2[ªùþwý ÿ/ü1330/ö37F…Óþÿÿ©ý ÿ /û3Ry¯ìÿüøl ý ÿ /û5H‡Åíÿüè4þ • ÿ/õ023368>Q¤íú ÿüüzþ¡ ÿöMQSXd~žßúþ ÿüÚ4þà ÿþõýÿüúaþ,Þ$ÿü¼-þGð$ÿüöK þgö$ÿüý~"þxú%ÿýÀ:ý’ü%ÿüöK ý´þ%ÿüýeþTÒ'ÿý•(þ‚æ'ÿýá=þ­ú'ÿýýTÿÒ)ÿýp ÿò)ÿý© *ÿýæ=ÿ¡*ÿüýLþšý+ÿýi þoø,ÿü‘" þ7Ù-ÿüÆ, ý¶þ-ÿüï9 ý’ø.ÿûþJýnñ0ÿüfüZâ1ÿûœ üOÏ2ÿûÏ&üI¾3ÿôò36‚þ4ÿöDCº5ÿþ^ ûAá5ÿþ‘û1×5ÿþÎû ½5ÿþó)ýš5ÿýý=üq6ÿþXûNþ5ÿþ‰ û3úÿrõu|}~„‰‰‡~xs røw~‡•—“„xrqü%Üÿrã|}}~ƒ‡‰‰†}zsrrtuxzvru}‡—“‰€vrúqe `ÿrþtx}ÿ‰í}|z|}{xurrx}~‚€}y rúqW ÿróu}†—‘„}}zwtrÿu}ÿs rþm/ÿìÿr÷y‡‰ŠŽŠvsrÿ|}ÿv rþk ÿÿrúsz||xs rÿx}ÿ{ rÿþ*øÿrýsttrût}}zt rþ×ÿrösuvxyz|}}zrþut rÿ‘ÿrútuvxy{}{ÿxrþ@ñÿørx~ƒ…‡‡…}ý{wtrþÙÿõrs{…‰‰…~}|vr þ •ÿrüs{~}ÿvr ý@ù ÿvù{~‚„‚~wr ýã ÿÿ~}ú†‰•”„vr þ « ÿþ€{z{ýyusr þ\ ÿ!r ý)ø ÿ rýå ÿrý ± ÿ rýstu rýk ÿrõstuvxyz}‚…yrÿqrü>þ ÿüsux{}ü~‡†xrqrþ&ü ÿø‡ˆˆ‰ŒŠ‡„}ýzxurqüe^rrþã ÿ‰øŠŒ‡zvt rqünW&ý¶ ÿú}|zxvtrüqlPý‘ ÿrûsutDý ÿrü}…¯ý ÿrûv‰­ò{ý ‘ ÿrüsttsrútÆûþwý ÿrüsuusrötx‚¬áþÿÿ©ý ÿ rûuФÈòÿüøl ý ÿ rûvƒ®Øòÿüè4þ • ÿrõstuuvx|‰Áòü ÿüüzþ¡ ÿö‡‰ŠŽ•§½éüþ ÿüÚ4þà ÿþøýÿüúaþ,Þ$ÿü¼-þGð$ÿüöK þgö$ÿüý~"þxú%ÿýÀ:ý’ü%ÿüöK ý´þ%ÿüýeþTÒ'ÿý•(þ‚æ'ÿýá=þ­ú'ÿýýTÿÒ)ÿýp ÿò)ÿý© *ÿýæ=ÿ¡*ÿüýLþšý+ÿýi þoø,ÿü‘" þ7Ù-ÿüÆ, ý¶þ-ÿüï9 ý’ø.ÿûþJýnñ0ÿüfüZâ1ÿûœ üOÏ2ÿûÏ&üI¾3ÿôò36‚þ4ÿöDCº5ÿþ^ ûAá5ÿþ‘û1×5ÿþÎû ½5ÿþó)ýš5ÿýý=üq6ÿþXûNþ5ÿþ‰ û3úÿfÿÿþ=ÿþ=ÿýþýüÿÿþ5ÿüþýëØÿÿ×5ÿûýí¸mÜÿþþÚ4ÿõþóÃMµþÿÿþæ4ÿùùÜ\³òþÿì3ÿøþê•lÝþÿö3ÿýóÀýºùþ2ÿýûÙWþ‚ðþ1ÿüþé—þ(Üþ0ÿüþô¼û°ûþþ/ÿüþûÖFþ|óþ-ÿþýë|þ6äþ,ÿþýõþ Ëþ+ÿþýõ­ ü¤úþþ*ÿûþûî¶( ü`öþþ)ÿûþùç¼< ü,ðþþ)ÿûþïÊR ü çþþ)ÿüþÇg üÜþþ)ÿý³>ýÖýþ)ÿýë üÔüþþ)ÿþ¤ üÐúþþ#ÿÿþÿþüiüÍùþþ#ÿþûöÿþ¶ üÉøþþ$ÿÿúÿþábüÅ÷þþ*ÿý÷° üÄøþþ*ÿüþÝW üÆùþþ(ÿþýô« üÈùþþ)ÿþýýÖJ ýÊûþ(ÿþýð¤ ýÍüþ)ÿþýûË< ý Ôýþ)ÿþýëŸ þ%Üþ*ÿþýùÁ þCæþ*ÿþýâý`îþÿü*ÿþýõ« ý …õþÿù*ÿþýýÎ;ý ¢ûþÿò+ÿþýìŒþIÊþÿî+ÿþýú°ýváþþúõ+ÿþþÚAý!¢ïþþïþ+ÿþýï‰üUÇöþÿÚ,ÿþýù«ø”ßüþþù´-ÿþþÐCý^Âðþýëþ,ÿþò달ÞùþþýÆ<-ÿþøú¿)‰Ïñþýô&.ÿþùå¨ yÂéýþýÖ‡û.ÿþúùÐÀÆåùþþøæ1ÿþüïâëúþþýü1ÿþþ÷ûþ3ÿþþýþ5ÿþþýü6ÿþÿü8ÿþ:ÿþ<ÿþ=ÿþ>ÿÿþ>ÿÿþ>ÿÿþ>ÿþ>ÿÿþ>ÿÿþ>ÿÿþÿÿûÆG>A7ÿû‡D>6ÿûÞV?6ÿü‹E6ÿû×V! 5ÿûw'4ÿû¾74ÿûõW 4ÿü‡4ÿû½23ÿûë` 3ÿûü€' 3ÿü©=3ÿüÜN3ÿüõ[3ÿüýn$3ÿý‘)3ÿý¿/ 3ÿýè6 3ÿýø>3ÿýþI3 ÿþT3 ÿþ_3 ÿþj3 ÿþu3 ÿþ€3 ÿþŒ3 ÿþ—3 ÿþ¦3 ÿýµ!2 ÿýÅ 2 ÿýÍ!2 ÿýÈ 2 ÿýÁ 2 ÿý³2 ÿý¡ 2 ÿý 2 ÿý…2 ÿýy2 ÿýt2 ÿýb 2ÿüùS2ÿüïC2ÿüã22ÿüÉ 2ÿü›2ÿým 3ÿüôP3ÿüà83ÿý¸!4ÿý4ÿüõR4ÿüâ04ÿü¼4ÿûþy 4ÿü÷F5ÿýÙ(6ÿý•6ÿüýb 6ÿýæ>7ÿý¬"7ÿýq7ÿýëO 8ÿý¶68ÿûÆG>A7ÿû‡D>6ÿûÞV?6ÿü‹E6ÿû×V! 5ÿûw'4ÿû¾74ÿûõW 4ÿü‡4ÿû½23ÿûë` 3ÿûü€' 3ÿü©=3ÿüÜN3ÿüõ[3ÿüýn$3ÿý‘)3ÿý¿/ 3ÿýè6 3ÿýø>3ÿýþI3 ÿþT3 ÿþ_3 ÿþj3 ÿþu3 ÿþ€3 ÿþŒ3 ÿþ—3 ÿþ¦3 ÿýµ!2 ÿýÅ 2 ÿýÍ!2 ÿýÈ 2 ÿýÁ 2 ÿý³2 ÿý¡ 2 ÿý 2 ÿý…2 ÿýy2 ÿýt2 ÿýb 2ÿüùS2ÿüïC2ÿüã22ÿüÉ 2ÿü›2ÿým 3ÿüôP3ÿüà83ÿý¸!4ÿý4ÿüõR4ÿüâ04ÿü¼4ÿûþy 4ÿü÷F5ÿýÙ(6ÿý•6ÿüýb 6ÿýæ>7ÿý¬"7ÿýq7ÿýëO 8ÿý¶68ÿûÆG>A7ÿû‡D>6ÿûÞV?6ÿü‹E6ÿû×V! 5ÿûw'4ÿû¾74ÿûõW 4ÿü‡4ÿû½23ÿûë` 3ÿûü€' 3ÿü©=3ÿüÜN3ÿüõ[3ÿüýn$3ÿý‘)3ÿý¿/ 3ÿýè6 3ÿýø>3ÿýþI3 ÿþT3 ÿþ_3 ÿþj3 ÿþu3 ÿþ€3 ÿþŒ3 ÿþ—3 ÿþ¦3 ÿýµ!2 ÿýÅ 2 ÿýÍ!2 ÿýÈ 2 ÿýÁ 2 ÿý³2 ÿý¡ 2 ÿý 2 ÿý…2 ÿýy2 ÿýt2 ÿýb 2ÿüùS2ÿüïC2ÿüã22ÿüÉ 2ÿü›2ÿým 3ÿüôP3ÿüà83ÿý¸!4ÿý4ÿüõR4ÿüâ04ÿü¼4ÿûþy 4ÿü÷F5ÿýÙ(6ÿý•6ÿüýb 6ÿýæ>7ÿý¬"7ÿýq7ÿýëO 8ÿý¶68ÿýã¼35ÿüýÖš4ÿýòÂ74ÿýÕ›3ÿýóÁ43ÿýþÓ3 ÿýæ´2 ÿýøÎ`2 ÿýä›1 ÿýù¬%1 ÿýó±j1 ÿüõŠ0 ÿüúØ¢+0 ÿüýâÁP0 ÿüîÒr/ ÿüûÜ› / ÿüþç±'/ ÿüþøÀK/ ÿþþ×k/ ÿþýä…. ÿþýé—. ÿûýþìž. ÿûúþï§. ÿûùþï±$. ÿûûþî¹.. ÿþýíÀ6. ÿþýìÊ;. ÿþýëÓA. ÿþýéÕ}. ÿüþãÕ². ÿþýÝÕÁ. ÿûþýØÕ­. ÿûþüÕÕ’. ÿüûÖØn. ÿûþúæÙL. ÿûþúëÓH. ÿûþùëËB. ÿüøëÃ9.ÿÿýÿü÷ë¼0.ÿÿùÿüöê¹&.ÿÿõÿüõé´.ÿÿïÿüôè¯.ÿÿíÿüóæ©.ÿÿøÿýòå¢/ ÿýñã˜/ÿÿþ ÿýðá…/ÿÿþÿüþïÚo/ ÿüþíÉB/ ÿüþåµ/ ÿûþýÚ/ ÿüýûÐy0 ÿüíóÁE0 ÿûþàÒ¬0 ÿûýÙ¿“0 ÿüüκ`1 ÿüûǰ,1ÿûþûž1ÿûþû¾x1ÿûþúµA1ÿûþñù¨ 2ÿüùëì‹3ÿüôÜÚP3ÿûþíÕº3ÿûþæÓž3@@@@ý+ %ÿý p÷$ÿýWñ$ÿüCâþ#ÿý,‹ø#ÿüGÅþ"ÿü jò"ÿý GÅ"ÿý6´"ÿü+¦ý!ÿû#‡ø!ÿû![è!ÿüAÔ!ÿû4¦ý ÿû &hö ÿüLÝ ÿü7“ ÿü$güÿüJÖÿý 5šÿü#výÿüLçÿý4Åÿü$–ùÿýeÛÿüTÀýÿü E£åÿû5g¼ùÿû8g®ñÿ û $KÛÿ ù1[ªðÿ ú6qÅûÿ!û %aÒúÿ!üqòÿ"þ1Ìÿ"þ§ÿ#þ|ÿ#þcÿ#ÿIÿ$þ0þÿ$þ&ýÿ$þ!öÿ#þíÿ#þßÿ#þÓÿ#þ$Èÿ#ý1ºÿ#ü 4ªþÿ#ü3šúÿ#ü/…ôÿ#û#XÊúÿ#úLšæþÿ#û$lÅôÿ# ü F£ï ÿ# ü 8é ÿ# û(eÕþ ÿ# ûK©ü ÿ"þ û $`Ûþÿ"þ ø7d¥ñþÿ"þù#>€úÿ"ÿø>Ÿýÿÿ"ÿú %7+ øWäÿÿ#ø fãR!ø®ÿÿ#÷FÖÿÿËs2 û  §ÿý+ %ÿý p÷$ÿýWñ$ÿüCâþ#ÿý,‹ø#ÿüGÅþ"ÿü jò"ÿý GÅ"ÿý6´"ÿü+¦ý!ÿû#‡ø!ÿû![è!ÿüAÔ!ÿû4¦ý ÿû &hö ÿüLÝ ÿü7“ ÿü$güÿüJÖÿý 5šÿü#výÿüLçÿý4Åÿü$–ùÿýeÛÿüTÀýÿü E£åÿû5g¼ùÿû8g®ñÿ û $KÛÿ ù1[ªðÿ ú6qÅûÿ!û %aÒúÿ!üqòÿ"þ1Ìÿ"þ§ÿ#þ|ÿ#þcÿ#ÿIÿ$þ0þÿ$þ&ýÿ$þ!öÿ#þíÿ#þßÿ#þÓÿ#þ$Èÿ#ý1ºÿ#ü 4ªþÿ#ü3šúÿ#ü/…ôÿ#û#XÊúÿ#úLšæþÿ#û$lÅôÿ# ü F£ï ÿ# ü 8é ÿ# û(eÕþ ÿ# ûK©ü ÿ"þ û $`Ûþÿ"þ ø7d¥ñþÿ"þù#>€úÿ"ÿø>Ÿýÿÿ"ÿú %7+ øWäÿÿ#ø fãR!ø®ÿÿ#÷FÖÿÿËs2 û  §ÿý+ %ÿý p÷$ÿýWñ$ÿüCâþ#ÿý,‹ø#ÿüGÅþ"ÿü jò"ÿý GÅ"ÿý6´"ÿü+¦ý!ÿû#‡ø!ÿû![è!ÿüAÔ!ÿû4¦ý ÿû &hö ÿüLÝ ÿü7“ ÿü$güÿüJÖÿý 5šÿü#výÿüLçÿý4Åÿü$–ùÿýeÛÿüTÀýÿü E£åÿû5g¼ùÿû8g®ñÿ û $KÛÿ ù1[ªðÿ ú6qÅûÿ!û %aÒúÿ!üqòÿ"þ1Ìÿ"þ§ÿ#þ|ÿ#þcÿ#ÿIÿ$þ0þÿ$þ&ýÿ$þ!öÿ#þíÿ#þßÿ#þÓÿ#þ$Èÿ#ý1ºÿ#ü 4ªþÿ#ü3šúÿ#ü/…ôÿ#û#XÊúÿ#úLšæþÿ#û$lÅôÿ# ü F£ï ÿ# ü 8é ÿ# û(eÕþ ÿ# ûK©ü ÿ"þ û $`Ûþÿ"þ ø7d¥ñþÿ"þù#>€úÿ"ÿø>Ÿýÿÿ"ÿú %7+ øWäÿÿ#ø fãR!ø®ÿÿ#÷FÖÿÿËs2 û  §ÿ ü ‰Ïøþ*ÿ übÇðþ)ÿýE¼èþ)ÿü.¬àýþ)ÿü—Þùþ(ÿü Úöþ(ÿürÔóþ(ÿý\Ëïþ'ÿýHÀëþ'ÿü2³êûþ'ÿü¤æøþ&ÿüŽàôþ&ÿüƒÙñþ%ÿütÊíþ%ÿüV¸çýþ%ÿü*¥ßùþ$ÿü›Ïöþ$ÿü…Àòþ#ÿýA³çþ#ÿü •Ùúþ"ÿý[Èòþ"ÿü¤áýþ"ÿümÇïþ!ÿü§Þóþ!ÿûxÆêöþ ÿü(­ßîþÿüÿú‡Éëóýþÿöÿû7¯äëùþþõýÿû ŽÕë÷þþüúÿü2±èõþÿücÚóþÿý ¬ñþÿüNàþùþÿû¨öëùþÿü<ÂâñþÿühµÞþÿüÅûþÿý8ŸóþÿügÛùþÿû$§àíøþÿüZ¹æðþÿüiÇêþÿû oÔ÷þÿüˆâþÿ ý¬úÿ!þ_ôÿ!þdôÿ ýiõÿ ý÷ÿ ý—ùÿ ý$«ùÿ ý5ºûÿüDÇüÿüNÏýÿüRÖþÿüiÜþÿ ý~Þýÿ ýâôÿ üåðþÿ ü¦èðþÿü­ëóÿü*¿ëûÿüXÍñþÿü}ØùþÿÿÿÿÿÿþÆý ð5ÿþñ ýã5ÿþû5ýÐ5ÿöýT ³6ÿþ‡üž6ÿþ¼ü~6ÿþìûaþ5ÿþû&ûLþ5ÿþþIû?ý6ÿ÷‡4ú6ÿ÷´ +õ6ÿþåþ$ñÿÿþ!ÿ÷ýEìÿÿô"ÿøj æÿÿ¿"ÿøuÚÿþý|"ÿø€Ïÿþå/"ÿø„½ÿþ©"ÿøt ™ÿýû`"ÿøR zÿýÓ'!ÿþæ%þ dÿüþ!ÿþ‘þ WÿüôN ÿýþJþLÿü¾, ÿþÅ ýAþÿûünÿýûf ý4àÿûå@ ÿüþÀ3þ… ÿúþ¢&ÿüýÝký7± ÿýøXÿüø6ü N ÿýÏ/ÿý×[üüaÚ ÿüý€ÿíò0 <€r. sñÿüñ?ÿüú¯Cóa¶ÿ¼33 ÿü³ÿêüÁa$*l×ÿÿ¯WýÿüúdÿûýÖx4 ñ6uøÿÿ÷M5ÕÿüÖ=ÿûö”Iý ?~ÿýþ— ý†ÿûý‡!ÿüëq( ýG‰ÿýí;ý LùÿüìKÿýâjü2N»ÿ÷úg&Åÿü¥1ÿýÛdüCwøÿýþ§ýiüÿüù]ÿýÚVü+eâÿþç ý/ÏÿýÁ4ÿýÇKýI«ÿýúRùzòÿòjÿöüš:  %wüÿýþ·ú3®üœ6ÿöþÇs) @Çÿýñ5ûS…N ÿöõK!qüÿýüq ü9 ÿöþàb(9¼ ÿýË'ý  ÿöûŸ@ hö ÿýøP  ÿöâe$ 1±þ ÿüþŽ ÿöñ6]ò ÿýÜ<  ÿõû˜S!  (¥þ ÿý÷W ÿöÜh5Rï ÿýúv ÿöü¯Sšÿüý¨$ ÿöð3  7æÿý¾* ÿöûÊR ‹ÿýÊ0 ÿõüåk'1ÛÿýÓ4 ÿõüè€3€ÿýÚ5ÿÿúùÓ|2 ý 7ãÿýÞ4ÿÿûè¶k<þ§ÿýä5þ  ÿúõÊ”[5ý Xúÿýæ4þ ÿøýÙ¡aF)ý1Ùÿýå4þ ÿøä«hG8 ýŸÿýå4þÿöû¿j7& üfûÿýä4þ ÿúý¸W ù Jðÿýä3þ ÿüÛS'ûE×ÿýá3þ 0ÿý/ü !G¸ÿýÝ2þDÿþ=û"O²þÿþÚ1þAÿýó- ú:bäþÿþÖ*þ8ÿóê21P³ûÿþÔ'þBÿþÆý ð5ÿþñ ýã5ÿþû5ýÐ5ÿöýT ³6ÿþ‡üž6ÿþ¼ü~6ÿþìûaþ5ÿþû&ûLþ5ÿþþIû?ý6ÿ÷‡4ú6ÿ÷´ +õ6ÿþåþ$ñÿÿþ!ÿ÷ýEìÿÿô"ÿøj æÿÿ¿"ÿøuÚÿþý|"ÿø€Ïÿþå/"ÿø„½ÿþ©"ÿøt ™ÿýû`"ÿøR zÿýÓ'!ÿþæ%þ dÿüþ!ÿþ‘þ WÿüôN ÿýþJþLÿü¾, ÿþÅ ýAþÿûünÿýûf ý4àÿûå@ ÿüþÀ3þ… ÿúþ¢&ÿüýÝký7± ÿýøXÿüø6ü N ÿýÏ/ÿý×[üüaÚ ÿüý€ÿíò0 <€r. sñÿüñ?ÿüú¯Cóa¶ÿ¼33 ÿü³ÿêüÁa$*l×ÿÿ¯WýÿüúdÿûýÖx4 ñ6uøÿÿ÷M5ÕÿüÖ=ÿûö”Iý ?~ÿýþ— ý†ÿûý‡!ÿüëq( ýG‰ÿýí;ý LùÿüìKÿýâjü2N»ÿ÷úg&Åÿü¥1ÿýÛdüCwøÿýþ§ýiüÿüù]ÿýÚVü+eâÿþç ý/ÏÿýÁ4ÿýÇKýI«ÿýúRùzòÿòjÿöüš:  %wüÿýþ·ú3®üœ6ÿöþÇs) @Çÿýñ5ûS…N ÿöõK!qüÿýüq ü9 ÿöþàb(9¼ ÿýË'ý  ÿöûŸ@ hö ÿýøP  ÿöâe$ 1±þ ÿüþŽ ÿöñ6]ò ÿýÜ<  ÿõû˜S!  (¥þ ÿý÷W ÿöÜh5Rï ÿýúv ÿöü¯Sšÿüý¨$ ÿöð3  7æÿý¾* ÿöûÊR ‹ÿýÊ0 ÿõüåk'1ÛÿýÓ4 ÿõüè€3€ÿýÚ5ÿÿúùÓ|2 ý 7ãÿýÞ4ÿÿûè¶k<þ§ÿýä5þ  ÿúõÊ”[5ý Xúÿýæ4þ ÿøýÙ¡aF)ý1Ùÿýå4þ ÿøä«hG8 ýŸÿýå4þÿöû¿j7& üfûÿýä4þ ÿúý¸W ù Jðÿýä3þ ÿüÛS'ûE×ÿýá3þ 0ÿý/ü !G¸ÿýÝ2þDÿþ=û"O²þÿþÚ1þAÿýó- ú:bäþÿþÖ*þ8ÿóê21P³ûÿþÔ'þBÿþÆý ð5ÿþñ ýã5ÿþû5ýÐ5ÿöýT ³6ÿþ‡üž6ÿþ¼ü~6ÿþìûaþ5ÿþû&ûLþ5ÿþþIû?ý6ÿ÷‡4ú6ÿ÷´ +õ6ÿþåþ$ñÿÿþ!ÿ÷ýEìÿÿô"ÿøj æÿÿ¿"ÿøuÚÿþý|"ÿø€Ïÿþå/"ÿø„½ÿþ©"ÿøt ™ÿýû`"ÿøR zÿýÓ'!ÿþæ%þ dÿüþ!ÿþ‘þ WÿüôN ÿýþJþLÿü¾, ÿþÅ ýAþÿûünÿýûf ý4àÿûå@ ÿüþÀ3þ… ÿúþ¢&ÿüýÝký7± ÿýøXÿüø6ü N ÿýÏ/ÿý×[üüaÚ ÿüý€ÿíò0 <€r. sñÿüñ?ÿüú¯Cóa¶ÿ¼33 ÿü³ÿêüÁa$*l×ÿÿ¯WýÿüúdÿûýÖx4 ñ6uøÿÿ÷M5ÕÿüÖ=ÿûö”Iý ?~ÿýþ— ý†ÿûý‡!ÿüëq( ýG‰ÿýí;ý LùÿüìKÿýâjü2N»ÿ÷úg&Åÿü¥1ÿýÛdüCwøÿýþ§ýiüÿüù]ÿýÚVü+eâÿþç ý/ÏÿýÁ4ÿýÇKýI«ÿýúRùzòÿòjÿöüš:  %wüÿýþ·ú3®üœ6ÿöþÇs) @Çÿýñ5ûS…N ÿöõK!qüÿýüq ü9 ÿöþàb(9¼ ÿýË'ý  ÿöûŸ@ hö ÿýøP  ÿöâe$ 1±þ ÿüþŽ ÿöñ6]ò ÿýÜ<  ÿõû˜S!  (¥þ ÿý÷W ÿöÜh5Rï ÿýúv ÿöü¯Sšÿüý¨$ ÿöð3  7æÿý¾* ÿöûÊR ‹ÿýÊ0 ÿõüåk'1ÛÿýÓ4 ÿõüè€3€ÿýÚ5ÿÿúùÓ|2 ý 7ãÿýÞ4ÿÿûè¶k<þ§ÿýä5þ  ÿúõÊ”[5ý Xúÿýæ4þ ÿøýÙ¡aF)ý1Ùÿýå4þ ÿøä«hG8 ýŸÿýå4þÿöû¿j7& üfûÿýä4þ ÿúý¸W ù Jðÿýä3þ ÿüÛS'ûE×ÿýá3þ 0ÿý/ü !G¸ÿýÝ2þDÿþ=û"O²þÿþÚ1þAÿýó- ú:bäþÿþÖ*þ8ÿóê21P³ûÿþÔ'þB$ÿþ=ÿþ=ÿþ=ÿþ>ÿÿþ>ÿÿþ>ÿÿþ>ÿÿþ>ÿÿþ>ÿÿþ>ÿÿþ€ÿÿþ>ÿÿþÿÿñ4ÿÿþÿÿî&ÿÿþÿÿå&ÿÿþÿþþð&ÿþÿþüù&ÿþÿþûþ&ÿþÿþûþ&ÿþÿþüþ&ÿþÿþ&ÿþÿþ&ÿþÿþ&ÿþÿþ&ÿþÿþÿü&ÿþÿþÿù&ÿþÿþÿô&ÿüýûþþÿþÿï&ÿüþóûþÿþÿç'ÿüùìýþÿþÿÛ'ÿûþìóþþÿþþúÅ(ÿþþíþ ÿþþð‘)ÿÿýþ ÿþýüÚR+ÿþ ÿûþüí°$9ÿþüðàx7ÿÿýþüìÅD6ÿÿûþûýæ” 5ÿþþúþûùÖV5ÿÿýþû÷±5ÿþûíy5ÿþþÓ 4ÿþýø¥3ÿþþéD3ÿþýûÁ3ÿþþîr3ÿþýûÏ4ÿþýê—4ÿþýõÍE4ÿûþûã­ 4ÿûþóÏ…5ÿýì¼Q5ÿýæ°4ÿüþà¡ 4ÿüþׇ4ÿýþÜX5ÿþÜ44ÿýþÐ"4ÿýþ½4ÿýþ·4ÿýþ» 4ÿýþ®4ÿýþŸ4ÿýþ¥ÿüþ~%8ÿýð[9ÿýÂC9ÿýþ‰(:ÿýóc:ÿþÄ&;ýÿý…<ýÿè)<þÿ¬=þûF=ÿÑ>ÿ|>ÿ# ÿÿüþ~%8ÿýð[9ÿýÂC9ÿýþ‰(:ÿýóc:ÿþÄ&;ýÿý…<ýÿè)<þÿ¬=þûF=ÿÑ>ÿ|>ÿ# ÿÿüþ~%8ÿýð[9ÿýÂC9ÿýþ‰(:ÿýóc:ÿþÄ&;ýÿý…<ýÿè)<þÿ¬=þûF=ÿÑ>ÿ|>ÿ# ÿÿûüþÝËt4ÿúüþú׿24ÿúòþóÓ«4ÿúôóþêË5ÿùþßõüßÀ[5ÿùÜßööÚ¯5ÿøðÌà÷îÍ—5ÿù¾Õáñè¼c6÷ÿöÆÖÞëÞ«6÷ÿµãáÕÝÊ6øô°éæÕÕ¹^7øÅÎëéÕЧ7ø³ÜëêÕLJ7ùÁåëçÕ¶U8ùÞëëäÏ¡8øûëÛÆ8úþüæÕ¯N9úþûÜÌ“9úþùظz9ûþóÕ¡E:ûýéË‘:ûøä¾v:üñØ«>;üãÏ“;üÚÀo;ýÒ¯9<ýÅ <ýÀo<þ³4=þ—=þ^=þ-=ÿ >ÿ>ÿ@@@@£ô ì%2¶úÿ"û[Àÿ"û 1nËÿ!üAvØÿ!ú CxÜÿ!ú7qÝÿ!ü )eÛÿ!ýXÚÿ!üGÚüÿ!ü 2Íúÿ!ü :Úøÿ!üPÜúÿ!ûbÙþÿ!ü(qÞÿ!ü3Øÿ ü6ƒÈÿ û"L¹úÿ ü /€íÿ ýAÖÿ ý%xÿ ý!gýÿ ü'sûÿ ü+~úÿü4øÿÿü ?÷ÿÿü 6uñÿÿ ü!bÝÿÿ"ý CÉÿþEý&¡ýÿþHý€ìÿýRýäÿýQ)ý’ñÿý02 ýŸýÿý6 þ"²ÿ þ6 þ,Êÿ þ0 þ9ãÿ þ"ýCõÿ þýLùÿ ÿýVùÿ ÿ ý `úÿ ÿýgûÿ#üxøÿúèF ü Ÿÿÿ#û#¢ÿúù¥e+üuýÿ"ú /ÂÿúþÄE ûSñÿ"ú  CÞÿûò°d3 úIêÿ"ú sê ÿóéŽJ' @Üÿ"ú )˜ö ÿôþÒeA, LÂÿ"ú@¨ý ÿöø¦R?4-*[Çÿ"û[ºÿ÷þçzFCJhôÿ"ý pÓÿùøÁps³ÿÿ"û+áÿúþôðþÿÿ"û1‰åÿ!ú #4êÿ!ú*5îÿ!ú*4’óÿ!ú(3”÷ÿ"û 2”ûÿ"û0øÿ"û,€ñÿ"ûgèÿ"û'Ñÿ"ú¹üÿ"ý¡ãÿ"ü'¨èÿ"ü >¶úÿ"û[Àÿ"û 1nËÿ!üAvØÿ!ú CxÜÿ!ú7qÝÿ!ü )eÛÿ!ýXÚÿ!üGÚüÿ!ü 2Íúÿ!ü :Úøÿ!üPÜúÿ!ûbÙþÿ!ü(qÞÿ!ü3Øÿ ü6ƒÈÿ û"L¹úÿ ü /€íÿ ýAÖÿ ý%xÿ ý!gýÿ ü'sûÿ ü+~úÿü4øÿÿü ?÷ÿÿü 6uñÿÿ ü!bÝÿÿ"ý CÉÿþEý&¡ýÿþHý€ìÿýRýäÿýQ)ý’ñÿý02 ýŸýÿý6 þ"²ÿ þ6 þ,Êÿ þ0 þ9ãÿ þ"ýCõÿ þýLùÿ ÿýVùÿ ÿ ý `úÿ ÿýgûÿ#üxøÿúèF ü Ÿÿÿ#û#¢ÿúù¥e+üuýÿ"ú /ÂÿúþÄE ûSñÿ"ú  CÞÿûò°d3 úIêÿ"ú sê ÿóéŽJ' @Üÿ"ú )˜ö ÿôþÒeA, LÂÿ"ú@¨ý ÿöø¦R?4-*[Çÿ"û[ºÿ÷þçzFCJhôÿ"ý pÓÿùøÁps³ÿÿ"û+áÿúþôðþÿÿ"û1‰åÿ!ú #4êÿ!ú*5îÿ!ú*4’óÿ!ú(3”÷ÿ"û 2”ûÿ"û0øÿ"û,€ñÿ"ûgèÿ"û'Ñÿ"ú¹üÿ"ý¡ãÿ"ü'¨èÿ"ü >¶úÿ"û[Àÿ"û 1nËÿ!üAvØÿ!ú CxÜÿ!ú7qÝÿ!ü )eÛÿ!ýXÚÿ!üGÚüÿ!ü 2Íúÿ!ü :Úøÿ!üPÜúÿ!ûbÙþÿ!ü(qÞÿ!ü3Øÿ ü6ƒÈÿ û"L¹úÿ ü /€íÿ ýAÖÿ ý%xÿ ý!gýÿ ü'sûÿ ü+~úÿü4øÿÿü ?÷ÿÿü 6uñÿÿ ü!bÝÿÿ"ý CÉÿþEý&¡ýÿþHý€ìÿýRýäÿýQ)ý’ñÿý02 ýŸýÿý6 þ"²ÿ þ6 þ,Êÿ þ0 þ9ãÿ þ"ýCõÿ þýLùÿ ÿýVùÿ ÿ ý `úÿ ÿýgûÿûÞüþÿû¥âþþÿû=³åþûÿú`ºæù÷ÿúzÆëëõÿúŠÔëëøÿú˜ßëëûÿú6§ëóëýÿúHÇôþõþÿûXØûþþÿþkæþÿþzîþÿýÿù‘òþþñüÿù «óþýòüÿù¼óþþùþÿý&Æñþÿý/Çîþÿý7Èìþÿú=ÉëüþþÿúEÉëýþþÿýKÊóþÿýQÊýþÿþWÒþÿþ\ÌþÿýaÈôþÿúfÈëýþþÿûhÇëùþÿûlÅëøþÿûgÃëùþÿûbÂêùþÿû[ÁéùþÿûV¿èúþÿûP¼çûþÿûJ»æüþÿûH¹æþþÿûBµæþþÿû?³çþþÿû9°çþþÿü3¬èþÿü'¨çþÿü¡ãþÿü —ßþÿüƒÛþÿüiÔþÿýKÎþÿý$Åþÿý ¯üÿþˆøÿþGóÿþëÿþÖÿþ¬þÿþýÿþ‚ûÿþƒûÿþy÷ÿþoïÿþqïÿþyôÿþñÿþ‹íÿý—òÿýž÷ÿý6§øÿžÿýöÆæ;ÿú¿kSOŽ÷8ÿøÜkDA@Gœþ7ÿø¶6)*+EÉ7ÿ÷Ÿ**/ƒý5ÿöþ(**KÚ5ÿõý…4¡ý5ÿö‰ !nù5ÿö”Pñ5ÿö©  7Ø5ÿþÕ6û&§5ÿýóVû nû4ÿýýn ý Sê5ÿþ–ý4Ò5ÿýÇ,þ!˜5ÿýêDýeö4ÿýþ^ý FÞ5ÿý€ ý*´5ÿüÐ2 üvü4ÿüýK ýTç5ÿýx!ý 4Â5ÿýÏ2ü ~þ4ÿýûTýTì5ÿý!ý3´5ÿýÜ5 ü xý4ÿýùbýFä5ÿý«#ý/¤5ÿýíA ý aû4ÿýýxý?Å5ÿýÌ0ü/þ4ÿýùPý[à5ÿý˜#ý :§5ÿýç? ü'uí4ÿýüuýA»5ÿýÇ7ü+€ñ4ÿýùhýJË4ÿüþ²,ü,‡õ4ÿýð[ ýOÌ4ÿüü¡$ü)÷4ÿýàO ý TÍ4ÿüú ü5€õ4ÿýÏC ýa»4ÿüù€ü?uí4ÿýÀ<ü[¤þ3ÿüün"ü 7kÞ4ÿýÞDüJø4ÿý•'üVÇ4ÿýñ`ü vï4ÿýÔ<ü? þ3ÿüþ°&ýRÑ4ÿýö~ü jô4ÿýã[ ý*4ÿüþ´? ý ?Ø4ÿüùƒ(ýbø4ÿüâeý#¸4ÿüþ–?ý Rî4ÿý¾W ý%ª4ÿýèsý Wê3ÿýþ‰"ý*®4ÿý¡-ýgó3ÿýª2ýGÉ3ÿý«-ý'’úÿžÿýöÆæ;ÿú¿kSOŽ÷8ÿøÜkDA@Gœþ7ÿø¶6)*+EÉ7ÿ÷Ÿ**/ƒý5ÿöþ(**KÚ5ÿõý…4¡ý5ÿö‰ !nù5ÿö”Pñ5ÿö©  7Ø5ÿþÕ6û&§5ÿýóVû nû4ÿýýn ý Sê5ÿþ–ý4Ò5ÿýÇ,þ!˜5ÿýêDýeö4ÿýþ^ý FÞ5ÿý€ ý*´5ÿüÐ2 üvü4ÿüýK ýTç5ÿýx!ý 4Â5ÿýÏ2ü ~þ4ÿýûTýTì5ÿý!ý3´5ÿýÜ5 ü xý4ÿýùbýFä5ÿý«#ý/¤5ÿýíA ý aû4ÿýýxý?Å5ÿýÌ0ü/þ4ÿýùPý[à5ÿý˜#ý :§5ÿýç? ü'uí4ÿýüuýA»5ÿýÇ7ü+€ñ4ÿýùhýJË4ÿüþ²,ü,‡õ4ÿýð[ ýOÌ4ÿüü¡$ü)÷4ÿýàO ý TÍ4ÿüú ü5€õ4ÿýÏC ýa»4ÿüù€ü?uí4ÿýÀ<ü[¤þ3ÿüün"ü 7kÞ4ÿýÞDüJø4ÿý•'üVÇ4ÿýñ`ü vï4ÿýÔ<ü? þ3ÿüþ°&ýRÑ4ÿýö~ü jô4ÿýã[ ý*4ÿüþ´? ý ?Ø4ÿüùƒ(ýbø4ÿüâeý#¸4ÿüþ–?ý Rî4ÿý¾W ý%ª4ÿýèsý Wê3ÿýþ‰"ý*®4ÿý¡-ýgó3ÿýª2ýGÉ3ÿý«-ý'’úÿžÿýöÆæ;ÿú¿kSOŽ÷8ÿøÜkDA@Gœþ7ÿø¶6)*+EÉ7ÿ÷Ÿ**/ƒý5ÿöþ(**KÚ5ÿõý…4¡ý5ÿö‰ !nù5ÿö”Pñ5ÿö©  7Ø5ÿþÕ6û&§5ÿýóVû nû4ÿýýn ý Sê5ÿþ–ý4Ò5ÿýÇ,þ!˜5ÿýêDýeö4ÿýþ^ý FÞ5ÿý€ ý*´5ÿüÐ2 üvü4ÿüýK ýTç5ÿýx!ý 4Â5ÿýÏ2ü ~þ4ÿýûTýTì5ÿý!ý3´5ÿýÜ5 ü xý4ÿýùbýFä5ÿý«#ý/¤5ÿýíA ý aû4ÿýýxý?Å5ÿýÌ0ü/þ4ÿýùPý[à5ÿý˜#ý :§5ÿýç? ü'uí4ÿýüuýA»5ÿýÇ7ü+€ñ4ÿýùhýJË4ÿüþ²,ü,‡õ4ÿýð[ ýOÌ4ÿüü¡$ü)÷4ÿýàO ý TÍ4ÿüú ü5€õ4ÿýÏC ýa»4ÿüù€ü?uí4ÿýÀ<ü[¤þ3ÿüün"ü 7kÞ4ÿýÞDüJø4ÿý•'üVÇ4ÿýñ`ü vï4ÿýÔ<ü? þ3ÿüþ°&ýRÑ4ÿýö~ü jô4ÿýã[ ý*4ÿüþ´? ý ?Ø4ÿüùƒ(ýbø4ÿüâeý#¸4ÿüþ–?ý Rî4ÿý¾W ý%ª4ÿýèsý Wê3ÿýþ‰"ý*®4ÿý¡-ýgó3ÿýª2ýGÉ3ÿý«-ý'’úÿÿÿõþG  +IƒõÿþÍ"þSÿ÷€-/RuÊýÿþÈ þOÿùëwJdn óÿþÅþAÿüõľé!ÿþºþ@-ÿþ®þ!>-ÿþ þ"'-ÿþŒþ#-ÿþ} ÿ& -ÿþn ÿ+ ,ÿýüaþ) ,ÿý÷Wþ" ,ÿýòLþ# ,ÿýèEþ% ,ÿþÝ6þ  ,ÿþÇ&þ  ,ÿþ±ÿ ,ÿþŸÿ +ÿýý…ÿ +ÿýùb þ +ÿýÞE þ +ÿý»2þ  +ÿýš&þ *ÿý÷eþ *ÿýÏ7 ý *ÿý©ý )ÿýý~þ )ÿýã^  )ÿý·: )ÿþ‰ (ÿýöd  (ÿýÐ7 (ÿþ  'ÿýýh 'ÿýöG 'ÿýè3'ÿýº'&ÿýþ‡&ÿýül&ÿýùX&ÿýöK&ÿýñC&ÿþá3%ÿýþÈ%%ÿýý¯%ÿýüš%ÿýû%ÿýúp %ÿýùb%ÿýôT%ÿýïJ%ÿþé>%ÿþÛ/%ÿþÐ$%ÿþÄ%ÿþ±%ÿþ$ÿýþ… $ÿýýv$ÿýüd$ÿýûW$ÿýûN$ÿý÷F  $ÿþñ=  $ÿþè1  ÿõþG  +IƒõÿþÍ"þSÿ÷€-/RuÊýÿþÈ þOÿùëwJdn óÿþÅþAÿüõľé!ÿþºþ@-ÿþ®þ!>-ÿþ þ"'-ÿþŒþ#-ÿþ} ÿ& -ÿþn ÿ+ ,ÿýüaþ) ,ÿý÷Wþ" ,ÿýòLþ# ,ÿýèEþ% ,ÿþÝ6þ  ,ÿþÇ&þ  ,ÿþ±ÿ ,ÿþŸÿ +ÿýý…ÿ +ÿýùb þ +ÿýÞE þ +ÿý»2þ  +ÿýš&þ *ÿý÷eþ *ÿýÏ7 ý *ÿý©ý )ÿýý~þ )ÿýã^  )ÿý·: )ÿþ‰ (ÿýöd  (ÿýÐ7 (ÿþ  'ÿýýh 'ÿýöG 'ÿýè3'ÿýº'&ÿýþ‡&ÿýül&ÿýùX&ÿýöK&ÿýñC&ÿþá3%ÿýþÈ%%ÿýý¯%ÿýüš%ÿýû%ÿýúp %ÿýùb%ÿýôT%ÿýïJ%ÿþé>%ÿþÛ/%ÿþÐ$%ÿþÄ%ÿþ±%ÿþ$ÿýþ… $ÿýýv$ÿýüd$ÿýûW$ÿýûN$ÿý÷F  $ÿþñ=  $ÿþè1  ÿõþG  +IƒõÿþÍ"þSÿ÷€-/RuÊýÿþÈ þOÿùëwJdn óÿþÅþAÿüõľé!ÿþºþ@-ÿþ®þ!>-ÿþ þ"'-ÿþŒþ#-ÿþ} ÿ& -ÿþn ÿ+ ,ÿýüaþ) ,ÿý÷Wþ" ,ÿýòLþ# ,ÿýèEþ% ,ÿþÝ6þ  ,ÿþÇ&þ  ,ÿþ±ÿ ,ÿþŸÿ +ÿýý…ÿ +ÿýùb þ +ÿýÞE þ +ÿý»2þ  +ÿýš&þ *ÿý÷eþ *ÿýÏ7 ý *ÿý©ý )ÿýý~þ )ÿýã^  )ÿý·: )ÿþ‰ (ÿýöd  (ÿýÐ7 (ÿþ  'ÿýýh 'ÿýöG 'ÿýè3'ÿýº'&ÿýþ‡&ÿýül&ÿýùX&ÿýöK&ÿýñC&ÿþá3%ÿýþÈ%%ÿýý¯%ÿýüš%ÿýû%ÿýúp %ÿýùb%ÿýôT%ÿýïJ%ÿþé>%ÿþÛ/%ÿþÐ$%ÿþÄ%ÿþ±%ÿþ$ÿýþ… $ÿýýv$ÿýüd$ÿýûW$ÿýûN$ÿý÷F  $ÿþñ=  $ÿþè1  4ÿþþ¯4ÿþý¤4ÿþû•4ÿþû’4ÿþû”4ÿþù†4ÿþõu4ÿþóe4ÿþõX4ÿþîI4ÿþäB4ÿýà?4ÿýß<4ÿýÍ74ÿý¸03ÿüý³(3ÿüû¯3ÿýò¬ 3ÿýà§ 3ÿýÙž2ÿüþו2ÿüüÏ—2ÿüøÆ§2ÿüõô2ÿüòλ2ÿûòèá~2ÿþýöÀ92ÿþüýáž2ÿþüïÔ 1ÿþûúìÓ| 1ÿþûýó×… 1ÿþüøÜ‘ 1ÿþúüä›0ÿ þûýè§0ÿ þýì±#0ÿ þþïº0ÿ þÿó0ÿþ0ÿþ0ÿþ0ÿþ/ÿþ/ÿþ/ÿþ/ÿþ.ÿþ.ÿþ.ÿþ.ÿþ.ÿþ-ÿþ-ÿþ-ÿþûýøõôù þ-ÿþþùëýÚÙö þ-ÿ÷þýðëëÞÕáúþ-ÿþùöïêרíýþ.ÿþûóàÕãõþ/ÿþúùåÕÛìýþ/ÿþúûéÕÕéöþ0ÿþûë×ÕÛñþ0ÿþûîÛÕÕÞþ1ÿþûñçÞÜíþ1ÿþûóëëðüþ1ÿþýýøúþÀÿ4>þÀL=ýôÇR<üþöËT;þüøÒV9þüùÔX8þüú×V.÷(Oh‚—œ¨þüûÚU&ð 2e‘¨ºÃÎÖÙÝÞàòþüüÜTñ 5Y|¤µÈØàåéëþìöþüýß\é'Io‡˜¬ÀÎØàéîñòóõ÷ùúü þûýái ð9eФ¿Öãìó÷ùüýþûëšõ 2q›¹Íáðøû!þæøÅY8+($ ")2;X{žºÍÜçîôøü&þíýèǼ¸³±³¶»ÁÊ×áëò÷ùü.þöùöôóóô÷ùûý§þÿú>þÿý3þÿý0þþùýþúýôîÞÝñ/þþóôþúñëÜÈÏí þú@@@)û ü¥¨««©õ¨¤£žŽu_? çùëèéëîòóõøùúúù÷õóñíéܸtþæ÷ëëçÖÕÕÐÈÍÛäëïððòñïéÝÒ¯dþúøëëæÜ×ÕòÖÕÃÀÃÆÃ¾¼¼°Ž=þÿñëûèäßÜ×Õðξ´°±¸¼º¢Ž^"þÿóëúéá×Õϼ÷¨…ŠzW4þþýíëäíðóóñíëçÖÕÕÎü¹Ÿ“ž`II&þþýòëüîûþûþêýïëçÞÜÙÖÐŰŸŸŽ`II-þùíëúóýþðëíþüûöóñëôÞÕǯŸ”bIFõëÿöþý÷ðõþò÷ëëä×μ°ŸrFëþìùþüýííùþþûòëòéʼ¸§oóñõýþíøëëíþþóäæëëåÖ¿´Ÿƒ þÿùëòûýëØÕÔÀ¬«­¥v þñïëëòóáÕγŠ||vL  þòûñëëçÕÈ´“zvR þ÷üæÕÁ³‘oG þÿýþøüèɱ“]# þõùïñþùíϰ‚3þõúóìèåáÛäW þõöä×ÓÎËõ”0õþóäо¼»¬€!÷÷ëè×È«sùëäÔ¾y=ýk:û C¼Þ8ù_ŸËëøþ6ú MŸÏïûþ4ú9”Ééùþ3û W­Ûóþ3ü6­ßòþ2û^Áìýþ3ýCÂíþ3ü Žãõþ4ûÕìúþ5ù9”Åéöûþ7ø5…§Èáðö9ú"UŸ¼<ý3 @ è I„ž³ÇÓÜãçêëíïðòóôõöö ÷öïóñíéäÞØÏÁµ§ž”~Z8õ(b´Þïöùûý"þôöñïìæáÜÖÐÈ¿¶ù ,c©Þôü.þòýüúùøöó@´Øîù8þû¤Íé÷ý:þþóû¾þÿú>þúÒßëôùý9þõW~”¤¿Ðáìôùý4þí #6MkލÁÖáëñöùü,þí!.>Yx˜¶ÏÞéïôùû$þì &6Heƒ¥ÃØãìó÷úýþî $4KoްÌÝèðõùýþ"ð$Ep‹¬Å×ãíôú þ+ô@q“¬Éàïøþ1ò0PŸ¿Üîøýþþ5ö 7WžÌå9ú #A=þÀ ÿýnûÿ ýqüÿ!ýsýÿ!ýnüÿ!ýbëÿ!ýPÖÿ"ý7¬ÿ"ývîÿ"ýGÀÿ"ü+vìÿ#üA«þÿ#ü$`æÿ$ü 4‹ûÿ$üIÂÿ%ü"båÿ%ü*€úÿ%ü 5¢þÿ&ýEÁÿ'üX× ÿ(ü!pç ÿ(ü+‡ï ÿ)ü 7™ö ÿ*ü >¦ú ÿ+ü A±ýÿ,ü E¹üÿ,ü IÀúÿ-ü KÉüÿ.ü NËþÿ.ý OÌÿ/ý >Åÿ0ú)©þÿÿ1ûcèü1 ý=2 ÿ3 4 5 677665þ4ý 'X3ûAk¡2ù *^Ûý1øK~Éùÿÿ0ú9n³òÿ0ú#]èþÿ/úA‰Øýÿ,û )nÆúÿ(ûX¬ö ÿ%ù NŸíþ ÿ$ø :n¦äý ÿ"÷">X€ºïüÿ!ö 1OnšÍóþÿ ö @^~ºðýÿø "Dh”ãùÿø=bšÔ÷þÿù-R‡Íñýÿú0gá÷ÿû`¨Ôûÿü,‹¶÷ÿûX¡ùÿ ÿýnûÿ ýqüÿ!ýsýÿ!ýnüÿ!ýbëÿ!ýPÖÿ"ý7¬ÿ"ývîÿ"ýGÀÿ"ü+vìÿ#üA«þÿ#ü$`æÿ$ü 4‹ûÿ$üIÂÿ%ü"båÿ%ü*€úÿ%ü 5¢þÿ&ýEÁÿ'üX× ÿ(ü!pç ÿ(ü+‡ï ÿ)ü 7™ö ÿ*ü >¦ú ÿ+ü A±ýÿ,ü E¹üÿ,ü IÀúÿ-ü KÉüÿ.ü NËþÿ.ý OÌÿ/ý >Åÿ0ú)©þÿÿ1ûcèü1 ý=2 ÿ3 4 5 677665þ4ý 'X3ûAk¡2ù *^Ûý1øK~Éùÿÿ0ú9n³òÿ0ú#]èþÿ/úA‰Øýÿ,û )nÆúÿ(ûX¬ö ÿ%ù NŸíþ ÿ$ø :n¦äý ÿ"÷">X€ºïüÿ!ö 1OnšÍóþÿ ö @^~ºðýÿø "Dh”ãùÿø=bšÔ÷þÿù-R‡Íñýÿú0gá÷ÿû`¨Ôûÿü,‹¶÷ÿûX¡ùÿ ÿýnûÿ ýqüÿ!ýsýÿ!ýnüÿ!ýbëÿ!ýPÖÿ"ý7¬ÿ"ývîÿ"ýGÀÿ"ü+vìÿ#üA«þÿ#ü$`æÿ$ü 4‹ûÿ$üIÂÿ%ü"båÿ%ü*€úÿ%ü 5¢þÿ&ýEÁÿ'üX× ÿ(ü!pç ÿ(ü+‡ï ÿ)ü 7™ö ÿ*ü >¦ú ÿ+ü A±ýÿ,ü E¹üÿ,ü IÀúÿ-ü KÉüÿ.ü NËþÿ.ý OÌÿ/ý >Åÿ0ú)©þÿÿ1ûcèü1 ý=2 ÿ3 4 5 677665þ4ý 'X3ûAk¡2ù *^Ûý1øK~Éùÿÿ0ú9n³òÿ0ú#]èþÿ/úA‰Øýÿ,û )nÆúÿ(ûX¬ö ÿ%ù NŸíþ ÿ$ø :n¦äý ÿ"÷">X€ºïüÿ!ö 1OnšÍóþÿ ö @^~ºðýÿø "Dh”ãùÿø=bšÔ÷þÿù-R‡Íñýÿú0gá÷ÿû`¨Ôûÿü,‹¶÷ÿûX¡ùÿýýJ¸ùÿô«¡”€jT9$ýkËûÿåðìèáÙÍÁ´¨ž”ƒr`I4#ü›ÞþÿþäüùõðêáÙÓËÁ³¨¢›‘…zmb\YPYt—Æôþÿ þêýú÷ôñíèäáßÝÛØÖÔÕÞéòùþþÿþ÷ûù÷øøùùúýþÿ"þÿ"þÿ"þÿ"þÿ#þÿ#þÿ$þÿ$þÿ%þÿ%þÿ%þÿ&þÿ'þÿ(þÿ(þÿ)þÿ*þÿ+þÿ,þÿ,þÿýòùü*þÿøb¿Ùêóùü&þÿó.Ko§ÉÞìôùý!þÿó/J|¬Ìáíöúþÿ õ*J|¬Ìáîöûþÿô'CsÅßíôùûþ ÿð# üZ×+ÿýý¶F ýKÃ+ÿüû­J ý 9¦+ÿüù­R ý'…+ÿüü¾l þe,ÿýô… þ?,ÿýýÉ$ÿ-ÿýðp ÿ-ÿüþ°2 ÿ.ÿýÃA ÿ.ÿýº7 ÿ-ÿüþŸ# ÿ -ÿý÷l ÿ-ÿýÏG ,ÿüúz!,ÿýÑJÿùþøâÖÏÉïÿýüh ÿöúäÆ˜jG/'CÑÿý©9 ÿòøàÁ–a@0 /ƒþÿýîRÿìþöëÙÈ®X=( 0súÿýýw%ñ]eklhb^[O>,úKöÿý¯@õ ú >xÊ÷ÿýØX$ø$R~»óýÿüäp"÷'GqŸÈñýÿüë‹!ô (Ca‡¨Ëîýÿüû©< ó$:JezÀàòûþÿûþÌ]õ2Fb~¡Èéúþÿüév!÷)Gg‰Âêüÿü÷”7 ø !Dj”Òúÿüü¹Rù>e”Òøÿûþßgû:`…Ãôÿüò€1ývµîÿüùšA þéþÿüüºWÿûþØe!ÿüîv/ÿüù‹< ÿüü©JÿûþÍXÿüâh%ÿüò~1ÿüù’< ÿüý«GÿüÄSÿüÖ`#ÿüÞl,ÿüèx5 ÿüîƒ>  ÿüôE ÿüøšK ÿûû§L  ÿûý¯L& ÿûý°L* 0ÿý­)ýdê1ÿüõŸ!üLÃü/ÿüûšTý7ø.ÿüþo1 ý(€õ.ÿý©2 ýkñ-ÿýûƒ ý]ç-ÿýöx ýSÖ-ÿýöp ýGÀ-ÿýë[ ü<¯þ,ÿýÞK ü 1šü,ÿþØC ü(€ò,ÿþË= ü"kã,ÿþÀ> üZ×+ÿýý¶F ýKÃ+ÿüû­J ý 9¦+ÿüù­R ý'…+ÿüü¾l þe,ÿýô… þ?,ÿýýÉ$ÿ-ÿýðp ÿ-ÿüþ°2 ÿ.ÿýÃA ÿ.ÿýº7 ÿ-ÿüþŸ# ÿ -ÿý÷l ÿ-ÿýÏG ,ÿüúz!,ÿýÑJÿùþøâÖÏÉïÿýüh ÿöúäÆ˜jG/'CÑÿý©9 ÿòøàÁ–a@0 /ƒþÿýîRÿìþöëÙÈ®X=( 0súÿýýw%ñ]eklhb^[O>,úKöÿý¯@õ ú >xÊ÷ÿýØX$ø$R~»óýÿüäp"÷'GqŸÈñýÿüë‹!ô (Ca‡¨Ëîýÿüû©< ó$:JezÀàòûþÿûþÌ]õ2Fb~¡Èéúþÿüév!÷)Gg‰Âêüÿü÷”7 ø !Dj”Òúÿüü¹Rù>e”Òøÿûþßgû:`…Ãôÿüò€1ývµîÿüùšA þéþÿüüºWÿûþØe!ÿüîv/ÿüù‹< ÿüü©JÿûþÍXÿüâh%ÿüò~1ÿüù’< ÿüý«GÿüÄSÿüÖ`#ÿüÞl,ÿüèx5 ÿüîƒ>  ÿüôE ÿüøšK ÿûû§L  ÿûý¯L& ÿûý°L* 0ÿý­)ýdê1ÿüõŸ!üLÃü/ÿüûšTý7ø.ÿüþo1 ý(€õ.ÿý©2 ýkñ-ÿýûƒ ý]ç-ÿýöx ýSÖ-ÿýöp ýGÀ-ÿýë[ ü<¯þ,ÿýÞK ü 1šü,ÿþØC ü(€ò,ÿþË= ü"kã,ÿþÀ> üZ×+ÿýý¶F ýKÃ+ÿüû­J ý 9¦+ÿüù­R ý'…+ÿüü¾l þe,ÿýô… þ?,ÿýýÉ$ÿ-ÿýðp ÿ-ÿüþ°2 ÿ.ÿýÃA ÿ.ÿýº7 ÿ-ÿüþŸ# ÿ -ÿý÷l ÿ-ÿýÏG ,ÿüúz!,ÿýÑJÿùþøâÖÏÉïÿýüh ÿöúäÆ˜jG/'CÑÿý©9 ÿòøàÁ–a@0 /ƒþÿýîRÿìþöëÙÈ®X=( 0súÿýýw%ñ]eklhb^[O>,úKöÿý¯@õ ú >xÊ÷ÿýØX$ø$R~»óýÿüäp"÷'GqŸÈñýÿüë‹!ô (Ca‡¨Ëîýÿüû©< ó$:JezÀàòûþÿûþÌ]õ2Fb~¡Èéúþÿüév!÷)Gg‰Âêüÿü÷”7 ø !Dj”Òúÿüü¹Rù>e”Òøÿûþßgû:`…Ãôÿüò€1ývµîÿüùšA þéþÿüüºWÿûþØe!ÿüîv/ÿüù‹< ÿüü©JÿûþÍXÿüâh%ÿüò~1ÿüù’< ÿüý«GÿüÄSÿüÖ`#ÿüÞl,ÿüèx5 ÿüîƒ>  ÿüôE ÿüøšK ÿûû§L  ÿûý¯L& ÿûý°L*  ÷ÿþ<ÿþ;ÿþ;ÿþ;ÿþ:ÿþ:ÿþ9ÿþ9ÿþ9ÿþ8ÿþ8ÿþ8ÿþ7ÿþ7ÿþ5ÿ þ5ÿ þ4ÿ þ4ÿ þ4ÿ þ3ÿ þÿ$ÿþÜ)  $ÿþÎ"  $ÿþ¸  $ÿþ   $ÿþŒ  $ÿþ{  $ÿþp  #ÿýþd  #ÿýýW  #ÿýüO  #ÿýøG  #ÿýò?  #ÿýë8  #ÿýÝ2  ÿþ"ÿýÏ,  ÿø"ÿþ½(  ÿé"ÿþ«!  ÿÎ"ÿþœ  þ¡þ!ÿþ‰  þ~ú ÿýþz  þnö ÿýüj  þbÜ ÿýû^  þO¹ ÿýúR  þ=œ ÿý÷J  ý,ƒøÿýðC  ý`áÿýã>  ýA¾ÿýÔ7  ü/˜üÿýÃ1  ü#nïÿý­,  üPÜÿüþš(  ûDÍûÿýü‡"  û=Àöÿýûu  û 9¶ðÿýùh  û9¶óÿýøV  û:¾ùÿýóJ  û9Ãþÿýç@  ü8ÊÿýÖ9  ü8ÒÿýÄ1  ü7×ÿüþ¯*  ü6Õÿýý# þ6Ïÿýûu þ4Éÿýú^ þ1ÂÿýóL þ-¼ÿýçC  þ+¶ÿýÙ9  þ)°ÿýÆ/ þ&ªÿýª' þ$£ÿüý! þ!ÿýôu þ –ÿýç` ý’þÿýÜNÿ ýýÿýÒA   ý‰þÿýÄ4 þ  þ„ÿýµ*þ  þÿüþŸ#þ þyÿýý‹ÿ  þuÿýüvÿ þnÿý÷d þ jÿýëS  þ eÿýÔC  þ `ÿýÂ6 ý S÷ÿý³, ýGäÿý±, ý9ÁÿþÃ+ $ÿþÜ)  $ÿþÎ"  $ÿþ¸  $ÿþ   $ÿþŒ  $ÿþ{  $ÿþp  #ÿýþd  #ÿýýW  #ÿýüO  #ÿýøG  #ÿýò?  #ÿýë8  #ÿýÝ2  ÿþ"ÿýÏ,  ÿø"ÿþ½(  ÿé"ÿþ«!  ÿÎ"ÿþœ  þ¡þ!ÿþ‰  þ~ú ÿýþz  þnö ÿýüj  þbÜ ÿýû^  þO¹ ÿýúR  þ=œ ÿý÷J  ý,ƒøÿýðC  ý`áÿýã>  ýA¾ÿýÔ7  ü/˜üÿýÃ1  ü#nïÿý­,  üPÜÿüþš(  ûDÍûÿýü‡"  û=Àöÿýûu  û 9¶ðÿýùh  û9¶óÿýøV  û:¾ùÿýóJ  û9Ãþÿýç@  ü8ÊÿýÖ9  ü8ÒÿýÄ1  ü7×ÿüþ¯*  ü6Õÿýý# þ6Ïÿýûu þ4Éÿýú^ þ1ÂÿýóL þ-¼ÿýçC  þ+¶ÿýÙ9  þ)°ÿýÆ/ þ&ªÿýª' þ$£ÿüý! þ!ÿýôu þ –ÿýç` ý’þÿýÜNÿ ýýÿýÒA   ý‰þÿýÄ4 þ  þ„ÿýµ*þ  þÿüþŸ#þ þyÿýý‹ÿ  þuÿýüvÿ þnÿý÷d þ jÿýëS  þ eÿýÔC  þ `ÿýÂ6 ý S÷ÿý³, ýGäÿý±, ý9ÁÿþÃ+ $ÿþÜ)  $ÿþÎ"  $ÿþ¸  $ÿþ   $ÿþŒ  $ÿþ{  $ÿþp  #ÿýþd  #ÿýýW  #ÿýüO  #ÿýøG  #ÿýò?  #ÿýë8  #ÿýÝ2  ÿþ"ÿýÏ,  ÿø"ÿþ½(  ÿé"ÿþ«!  ÿÎ"ÿþœ  þ¡þ!ÿþ‰  þ~ú ÿýþz  þnö ÿýüj  þbÜ ÿýû^  þO¹ ÿýúR  þ=œ ÿý÷J  ý,ƒøÿýðC  ý`áÿýã>  ýA¾ÿýÔ7  ü/˜üÿýÃ1  ü#nïÿý­,  üPÜÿüþš(  ûDÍûÿýü‡"  û=Àöÿýûu  û 9¶ðÿýùh  û9¶óÿýøV  û:¾ùÿýóJ  û9Ãþÿýç@  ü8ÊÿýÖ9  ü8ÒÿýÄ1  ü7×ÿüþ¯*  ü6Õÿýý# þ6Ïÿýûu þ4Éÿýú^ þ1ÂÿýóL þ-¼ÿýçC  þ+¶ÿýÙ9  þ)°ÿýÆ/ þ&ªÿýª' þ$£ÿüý! þ!ÿýôu þ –ÿýç` ý’þÿýÜNÿ ýýÿýÒA   ý‰þÿýÄ4 þ  þ„ÿýµ*þ  þÿüþŸ#þ þyÿýý‹ÿ  þuÿýüvÿ þnÿý÷d þ jÿýëS  þ eÿýÔC  þ `ÿýÂ6 ý S÷ÿý³, ýGäÿý±, ý9ÁÿþÃ+ 2ÿ þ2ÿ þ2ÿ þ2ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ4ÿ þ4ÿ þ4ÿ þ4ÿ þ4ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ1ÿ þ1ÿ þ1ÿ þ1ÿ þ1ÿ þ1ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ2ÿ þ$þýíëûþúý÷ñëòùþþûë#þûúëëîûþýöâÏ"þùùæàãëëõþûúëÒ¶Aþý÷óúþ÷îÓÊÌÔÝÛêóþú÷Ö±eþþüïëþðùþõùÓ¾»º¾ÊÔÝêü þùúרAþöýîãרÛâêïùþôêűŸ¢¶¾ÉÖëú þüó´SþüóæÕÔÕíÖÝäïõï×¶Ÿ•z“Ÿ«³¼ÐÝñ þýñ”+þúìÚǼÁÐÕùÇ¥Ÿ‘z|›Ÿü¡Âáû þý÷¤* þýùöúþý÷çÓ¼þ¾ÒÕðÔ¬ŸŸ˜zz~ƒŠŸ¨Ãó þýÛM þÿøëÿôþüøìãÔ¼ôÇÕÖÕÕŤЉ˜Ÿ~zû‡¨¼Ýù þúù¹2 þþúîëøîóîëëå×Á¼ôËÝæÖÕ”YPv˜‘zûºÒëü þûï«8 þüñëêéëîâʼ¼ÃÖìûöÖÆ§`IU…Ÿƒzù~…—¬Ïåò þüõÀJ þúüëàÖÕÜëäç×ÊÉØêûþýäÓ»Že^|ŸŸ—«­­°»Ïáí þýúØ‚ þúôë×ÕÕàëûéãäîüþíîäι—‡“Ÿ¤³¼ÃǾ¼Îßë þþýê þõîëàáèðóøûýýþõøëå×Á¯«±¿ËÓÕûÓÉÔçïþüùôõùþîøëëæãààââáâåçèêëë÷!þþúï þÿùëõíöýõëùõëëïù"þþöó þñùëÞëëîýþþüëóëëó)þý÷ðõþúùë×ãëùþÿúëÿùþüûø÷ü þüöëëúþöùëáäëòøú÷ïëÿ÷þÿîëþñüþýóëóþÿîë÷éæääåæéëñþÿîëÿüþþüóþûúìëãØÕü×åëûþþùìëÿ÷þ÷÷ëÚÕÕÖãçÛÕþèóþúüóíëñýþúùëÞÕÕÝëûáÛÛæì1þúöëæÕÕãëÿù0þûóëëåâëÿò0þÿïëúìõûüûóëÿïþÿúþëþóýþüöëëîþÿõþûúêëëðþüýëëöþÿöþû÷ÚÛèðþ÷þþøôþÿý þÿýþúóØÕÖéýþýöëñþûôëëíöþúîáÕÕÜøþþõóþûñëäãîþùýëëåßßóþýüìúþúðëÜÕäýþÿùëÿôþþ÷õþùúìëàÕÛùþùöëàÖæëú+þÿöëüéÖÚ÷þúôëÙÕÞí,þÿûëýÞÚôþúõëÖÕâô-þùúîëëéÞòþúùëØÛëü/þûöòíïùþüïäëô;þýýóô±þÿý<þüùìëö;þýùëó=þÿúõþýòïü<þýòëô1þþüéþýý÷ü/þüýóÔŸ9þúýóÖ¥P7þøýôÛ¬Y5þùýõß¶k4þú÷äÂ|2þùýíÌ#1þûøÚž,.þúúôç±? +þùùíÍ¡t! )þùýðËŸo#(þúù溌@ 'þúôÜ©m%þúýïÓšN@@@ûÜÆˆýœ(ÿIÿþ°3üõÏwûþúä¨"þüýòÇVþýù×nþüûâ„þüüê þüýî°"þýòÁA þüóÐp þüòÙ› þûñÞ´B þùýðàÀm þùýìãÊŽ& þùõëèך+ þùýíëëà“ þÿõëýâk þÿûëýä³6 þúîëëæÇq þÿùëýçž þûòèÞݰ þûýèÎÇœ þüøÝº$ þýôÒŒ þüöÞ§ þüøÞ±$ þüù߯; þüõؤC þüðÍ“7 þûøæ¿& þûîÙ¯g þûïË”Aþûüç´kþûóБ@þû÷Þ°`øþüöäÀ|/úîßÉ4üÍ= þHÿ‹ @ @ @ @ @ @ @ @ûTóþÿû1|Çøÿ÷3[¶ùöòøÿ ë,8@GUg}—·ÂÂÁÃÅÇÃðøÿ ù   ýTÞÿýOÓÿü ý RÓÿú4R5ýSÅÿ÷S‰¶g*ý üN¨þÿ÷NçñÏG û"F=üúEŠÎäãü7kÈñþWú]¨@û4a2û(AWR÷I|Ðýþöbù5xìçXúd»q( ü ÷?qÒûÿûbù Sññdù:…ö²/÷ W­îöøWù`¡ñôsù F¡ÿÑ6÷ +Z±ä¾?ùbŸòøùL÷Á1ù*=`GùSîõxù Aƒ×)ûù8ƒ¾Íjú G`1 ù S‡’Sü û &GP&ü  !!"$ÿ&þ/ŽûTóþÿû1|Çøÿ÷3[¶ùöòøÿ ë,8@GUg}—·ÂÂÁÃÅÇÃðøÿ ù   ýTÞÿýOÓÿü ý RÓÿú4R5ýSÅÿ÷S‰¶g*ý üN¨þÿ÷NçñÏG û"F=üúEŠÎäãü7kÈñþWú]¨@û4a2û(AWR÷I|Ðýþöbù5xìçXúd»q( ü ÷?qÒûÿûbù Sññdù:…ö²/÷ W­îöøWù`¡ñôsù F¡ÿÑ6÷ +Z±ä¾?ùbŸòøùL÷Á1ù*=`GùSîõxù Aƒ×)ûù8ƒ¾Íjú G`1 ù S‡’Sü û &GP&ü  !!"$ÿ&þ/ŽûTóþÿû1|Çøÿ÷3[¶ùöòøÿ ë,8@GUg}—·ÂÂÁÃÅÇÃðøÿ ù   ýTÞÿýOÓÿü ý RÓÿú4R5ýSÅÿ÷S‰¶g*ý üN¨þÿ÷NçñÏG û"F=üúEŠÎäãü7kÈñþWú]¨@û4a2û(AWR÷I|Ðýþöbù5xìçXúd»q( ü ÷?qÒûÿûbù Sññdù:…ö²/÷ W­îöøWù`¡ñôsù F¡ÿÑ6÷ +Z±ä¾?ùbŸòøùL÷Á1ù*=`GùSîõxù Aƒ×)ûù8ƒ¾Íjú G`1 ù S‡’Sü û &GP&ü  !!"$ÿ&þ/Žü…Áóþ#ÿûNŸÝýþ%ÿü v¿íþ&ÿù4•Ïøþþ'ÿùW¬ßýþþ'ÿü~¿îþ'ÿû”Ëöþ'ÿû-¨Öùþ'ÿû <±Üûþ'ÿü D¶áþ'ÿü I¼æþ'ÿüWÁåþ'ÿüA¾áþ'ÿû7¶ßüþ'ÿü-¯Ýùþ'ÿü”Îôþ&ÿû ^¿ãüþ%ÿü-§Ïóþ!ÿû bºáöþ ÿú Âàðüþÿ÷ƒµØêó÷üþÿò7o­ÈØàêóøüþþÿó "2De‰¥»Ëáñýÿô(2U|§Êïýÿô $o¬Øõþÿ ø R§áíúþÿþ÷ P×ëëùþÿ þ÷0gÉçóüþøNµØñüþù%^˜Ììüþú+r¶åùþû!…Ïóþü‘Û÷ þü ‡×ù!þümÈõ"þý³ê#þüzÊø#þû©Øû#þû:ºÚü#þû K­Ëí#þú7¥Íæù!þø k¶Ïéøþ÷(~°ÆØîùþó #\¥¶ÈÞèïõø÷öôõôóóðíëæâÝ×Îò (AWbbkt‡ŠŒ‘òŒƒ~xoe^UI>7/*% þ ö ,ù  9ü Vÿûù¨L-  ÿûó›J+  ÿûë‹E$ ÿûßv= ÿûüÅ]* ÿûòšFÿúûÍl-ÿúúÖz< ÿøýöÏzF! ÷ßÇZ7! úE1 ÿ! "$')+. 1 48;>ÿ>ÿ€ÿûù¨L-  ÿûó›J+  ÿûë‹E$ ÿûßv= ÿûüÅ]* ÿûòšFÿúûÍl-ÿúúÖz< ÿøýöÏzF! ÷ßÇZ7! úE1 ÿ! "$')+. 1 48;>ÿ>ÿ€ÿûù¨L-  ÿûó›J+  ÿûë‹E$ ÿûßv= ÿûüÅ]* ÿûòšFÿúûÍl-ÿúúÖz< ÿøýöÏzF! ÷ßÇZ7! úE1 ÿ! "$')+. 1 48;>ÿ>ÿ€,ÿ þ1ÿ þ0ÿþþü÷þ/ÿ þþôîþ-ÿ þþóíþ,ÿ þþ÷ðþ)ÿþÿùþ(ÿþ&ÿþ%ÿþ#ÿþ"ÿþ!ÿþÿþÿ þÿ"þÿ$þÿ'þÿ)þÿ+þÿ.þ ÿ1þ ÿ4þÿ8þÿ;þÿ>þÿÿ>þÿÿ©þøüùõóñòöû1þïýùôîæÛÓÍÌÊÈÈÎÙàïû'þæüùöòëâÖŸ«—ƒ{tne_URRm“¶ÐëùþíûùöñìäØÊ¸¢‘~i\P0øI¤ÓíýþïýúùõòìåÛÌ¿­ŽvUH:3ü4- ú\¿áùþæüûùùöóïëãÛο­ž‘~cH5$ û4ŸÓóþðž´«¢”ƒoY<+ %ú%Âèüþû  þ +úb©Üùþü .øFŒÅîûþÿ1ú$k¤Õñ;ü&e¢=þü0¡ûÿýÛ2 ýlæÿýùT üA¹üÿýûx ü*€çÿüý±# üI»ûÿýä= ü'çÿýùj üDÃûÿüþ®$ ü"æÿýæE ý@Îÿýûx ü (ªüÿý½( üqìÿýìK ýO×ÿýþƒ ý 6ÓÿýÈ+ ý'ÑÿýðS ý#ÈÿþŽý'ÂÿýÐ1ý-Ôÿýó[ ýAäÿþ—ýZíÿýÔ4ý&~÷ÿýô^ü ?£üÿýþƒý[Ðÿþ»!  ü2ñÿýà>  üF»üÿýîV  ü)gî ÿüþüüþÿúýïØ©R  ü:©þÿèþö±”‰ƒ~xuqmldYQI@:51-(%  ü Pöÿìú¼h1  ü ,eþÿûú­j*  ü /pýÿûý¼p)  ü (qýÿüÓx,üû ]ðÿüì‡:ú ,OnJú$ ü >´ÿü÷˜Oø /n­…=øCu€R%õnðÿÿþõ´b÷(lÄýÿôe ÷:‡ÓÕÄOö4—ùüó×q-ýRÈÿþü&pöÿý /øH¯îì‡A ü6—ûÿþ¯!ý =¨ÿý»E úG–šR ýPÙÿþÖ+ýLÞÿýÌRüE,ü%dêÿþà2ý`òÿû¾Tþü)€óÿþÁ-ýpîÿý«E #û'–óþÿþ ýsèÿüü/$û”ì÷ÿýòxýaáÿþÂ<(übæÿü÷±JùGÐûýÂ2*÷mÇÙ’hDü&hžl.ù&1#þ 5bü0¡ûÿýÛ2 ýlæÿýùT üA¹üÿýûx ü*€çÿüý±# üI»ûÿýä= ü'çÿýùj üDÃûÿüþ®$ ü"æÿýæE ý@Îÿýûx ü (ªüÿý½( üqìÿýìK ýO×ÿýþƒ ý 6ÓÿýÈ+ ý'ÑÿýðS ý#ÈÿþŽý'ÂÿýÐ1ý-Ôÿýó[ ýAäÿþ—ýZíÿýÔ4ý&~÷ÿýô^ü ?£üÿýþƒý[Ðÿþ»!  ü2ñÿýà>  üF»üÿýîV  ü)gî ÿüþüüþÿúýïØ©R  ü:©þÿèþö±”‰ƒ~xuqmldYQI@:51-(%  ü Pöÿìú¼h1  ü ,eþÿûú­j*  ü /pýÿûý¼p)  ü (qýÿüÓx,üû ]ðÿüì‡:ú ,OnJú$ ü >´ÿü÷˜Oø /n­…=øCu€R%õnðÿÿþõ´b÷(lÄýÿôe ÷:‡ÓÕÄOö4—ùüó×q-ýRÈÿþü&pöÿý /øH¯îì‡A ü6—ûÿþ¯!ý =¨ÿý»E úG–šR ýPÙÿþÖ+ýLÞÿýÌRüE,ü%dêÿþà2ý`òÿû¾Tþü)€óÿþÁ-ýpîÿý«E #û'–óþÿþ ýsèÿüü/$û”ì÷ÿýòxýaáÿþÂ<(übæÿü÷±JùGÐûýÂ2*÷mÇÙ’hDü&hžl.ù&1#þ 5bü0¡ûÿýÛ2 ýlæÿýùT üA¹üÿýûx ü*€çÿüý±# üI»ûÿýä= ü'çÿýùj üDÃûÿüþ®$ ü"æÿýæE ý@Îÿýûx ü (ªüÿý½( üqìÿýìK ýO×ÿýþƒ ý 6ÓÿýÈ+ ý'ÑÿýðS ý#ÈÿþŽý'ÂÿýÐ1ý-Ôÿýó[ ýAäÿþ—ýZíÿýÔ4ý&~÷ÿýô^ü ?£üÿýþƒý[Ðÿþ»!  ü2ñÿýà>  üF»üÿýîV  ü)gî ÿüþüüþÿúýïØ©R  ü:©þÿèþö±”‰ƒ~xuqmldYQI@:51-(%  ü Pöÿìú¼h1  ü ,eþÿûú­j*  ü /pýÿûý¼p)  ü (qýÿüÓx,üû ]ðÿüì‡:ú ,OnJú$ ü >´ÿü÷˜Oø /n­…=øCu€R%õnðÿÿþõ´b÷(lÄýÿôe ÷:‡ÓÕÄOö4—ùüó×q-ýRÈÿþü&pöÿý /øH¯îì‡A ü6—ûÿþ¯!ý =¨ÿý»E úG–šR ýPÙÿþÖ+ýLÞÿýÌRüE,ü%dêÿþà2ý`òÿû¾Tþü)€óÿþÁ-ýpîÿý«E #û'–óþÿþ ýsèÿüü/$û”ì÷ÿýòxýaáÿþÂ<(übæÿü÷±JùGÐûýÂ2*÷mÇÙ’hDü&hžl.ù&1#þ 5b2ÿ þ3ÿ þ3ÿ þ3ÿ þ3ÿ þ4ÿ þ4ÿ þ4ÿ þ5ÿ þ5ÿ þ5ÿ þ5ÿ þ5ÿ þ6ÿþ6ÿþ6ÿþ6ÿþ6ÿþ6ÿþ6ÿþ6ÿþ5ÿ þ5ÿ þ5ÿ þ5ÿ þ4ÿ þ4ÿ þ4ÿ þ2ÿ þ1ÿþ0ÿþ.ÿþ,ÿþÿý)ÿþþúö&ÿþýóåö#ÿþüóÊáüÿþýøãôÿ$þÿþôõ$þÿýÏÙûþÿóþÿüË¡ÍìþþóÝþþûøÿúÓ³—Îçúþüýñßþüùôîò ÿùúàÆÇâóüþûùîØŸCþÿþýøõùþùúî×°‰+6þ÷ùëͤ‡A 4þøøåá7ÿü1þ÷óÙºšv2 ýÙóú,þöøëÌ«‘g-úT•Éæôû#þóûøóíÜÁ¨•U# ÷R“ÁÞíõùþìýüú÷óíåÜ̺©Š|kD#  Ö-Kz—­ÊÓÛàäçëìïñóóòïíêçäàÜ×ÒÍ󢕅hL3þà %4AO^kv|}}{zrfZM=0%ý ÿ5 @ @ @$þúû鯇5#þúù߸r "þúõרY!þúðÌ•7þùüèÀ… þúúà´i þû÷Ø¥MþûóÌ”9þúýíÀ…1þúüç´m'þúúߨI þúøÙ›- !þûôÐŒ(#þûñËt'$þúüëÃJ%þüûç¼2(þûûã¶4(þûûã±?)þûûã¯K *þûûâ¬P+ þúûã¬R!+ þúûã¬R, þûûâ«K. þûûâ¬@/ þûûã­=0þûûæ¯=1þûüç°H2þûüé³T3þûýë¶a4þûýí»r5þüîÀ 6þüñÈŽ7þû÷ט-7þûûä¡P8þüì¹| 9úþùÔ“"9ûþð¸^ :ûüÕ:üê¶m ;üÍŽ0;ýD <þR =ÿý <ý <ý =þmÕÕÕÕÐ:h4N'PrismLauncher-11.0.2/launcher/resources/sources/clucker.svg0000644000175100017510000002762215166745067023456 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/burfcat_hat.png0000644000175100017510000002336115166745067024271 0ustar runnerrunner‰PNG  IHDR¡RÌ1q\&¸IDATxìÃ1}äÔA.‰| g»Ûà=Ì®žî~€ËÞ=9–5PÝN›c[ͱmÛöÌ·ÛžYÛ¶mÛvÛöýÎMåV½J¥—å>¿ªÿ"/½;>õ^¿¤}QZ€&#ú/Üè<ú M »Žˆˆô(MAw¢?@eè:…þ©…(/:Ô"¦d„‹%#£Ë#­x¬=‚BùÃNDDfÔ ÝŠ¾G¥†0w¹sü”\[rº0„„Ê1*B Ñß‘„žSãóàîNÙ¥dÙªq1Å8VƒN jƈˆÈ€F¢_Q­Á^¸pùO‘×Ý‘}÷cBºã`¦fŒö ?3UÉÚ9'±BjåØ˜/G[øCODDôjDuAËÖü ÆÇ7Ǩñ Þ!Úÿ'T'èõÓ=2Õðh[1Æ3BEh%艈Ȃª‘@5æ–­_¼ùÞ⦆ȖڿÞû܉H+I}vmŸlôóíÉù áÖRïÿo艈HŠ‘PɳÇð1%‘7ÞSè;Br p\ݰ…”—ä½p¬[–ïødÞZ,/ÃÉãxžj«Žˆˆ‚‘Ô-D©1 ˜1¯ÌwˆÂœüÃ;DW!i¡˜ƒ‹Z”úЩ•­Š4ãóº„V¡8äÑHô’yS‚ûÄ¥L?—åêPkô¼ N;>oží™)óÐGh""""j’ %£­hº GårŒ‚–­ÍW#ä>v^ ½,‡Fžñ¨ºwGÇlïø”¡©ˆˆˆ¨IÉè!TeÐE°%B´î+º… 6£S¨­ÊÑqŽŸZ£†Èž1¨VÒ#Äßå·,ÔùEDDÔ½†Dˆ5R¤EOh˜ÕæòœÉåÍx½êLúkÕëº^È3­ºoÄ(a1Ø„º<§†H~l»8»g€®ÛÔ.Osù-Jç‘ ]ÀYO}¼«¿°ôdúKÅW |_üY3Zo+w˜Ô™‘P#d5ë+Ÿ:Ôõ+ïý„\È/""¢‡‘ˆt$5îíûf|þºEü¬F5úü½=®×nÆß7áŸw ‰%""Òê²Ó¢'á²[­¿±ÙÞóæÜ!qsÊS¢Æ mò²vx| 0‡ˆ¡qsE2žÛ.¸çù8ãªÂ±‡x‡I´Ùi *ZÖñH…yInPìŒJŸ±)B?ù”‡„,pá í• ‹Ÿÿ->—Tu:ýÕâSé¯TìêsoÉ Ø™õA·zÎGh,jƈˆh2Ê ³ÅTlëqÓ·SZmÊÒ ÏSh¦¿› bÝÖñ=[»~µ[ ¾#Tƒ„Ó,†ÆÏº]U©=³:•þr!np(ÑŒÑM¼L×|õ@ JTú õFþ˜0<Ç%‡‰»¯è(t ªT#ä>zN Ëy´C¯ÓaOCpY·hÇèdÚKù8ÓªòŽÑw¨=jfˆˆÈŒ†h.­=ŽlÈŸà»ñY9@w^Þ¡ñËúVÎ!?¦>håzvè´ÀßÕç‰Ò‘ -EyrlÇÍjЙÒÅBœ… ù”Žš""‰ÊÐGÈ…üio4è¾›šŽwÇî]ÿÝM}soÚÚ^tHpTàX±zÍ-m€:ÊAQj¼ÐuM Ñî>&¸Ú ƒÎPÖ<‡ˆˆˆÚ£$äO’A¯Ëêœè]êUUòpzýóǺÖuméã j„B¶ïR_ôNö2!åtSCt*핊x žSŽzꀈˆÈ…¾jc]Õ«T“ywJݲÑQÂhÔÝï.á3Q½Ÿœgð˜ê8‚¿¢¹mwåz?&—ï®MDD&ô\T¨E\³±m|Kž‚Òj,i!BœÆ?pÌ’‘pMŸû‡!Lj±j€TS‘ÖmrˆVv>™å½I¡jqÇC%¶ør«Cí@Í]%h×ÜÄ29@² k[W;BóŸ©H­Þô¡ùKåqb2«*Cí‘âFErˆðBÙŠK„Y)z]†š1""ên2êëÖŒ©W$›”æV/4UöÈÏE\¼1[P,nÕ– ©Ž±Úµ_ÈÎ…”µš·øù݋֣d@ÍéÑ+‰‘VñÃ-ýŠÔ]¿¹]®<3òÞv­Ü§nJÐ&›™$æF·ªÕ\–» )&ô-h¯º-œˆˆh.=Z»ªrïK­V#4c`¸zûR>kj„FºcEÕÐeš³!ÙV¤¤¢!Ȉˆˆˆ<¶¢ ›E_w×êŠJoüíÎäŠ>í|ïv Fuò‹Úi(pÒ Ïå¸I‰BŒX,>N™ø‡fˆêÐ@ä‘E_Æ„Yª÷-H*Ü=øG‹I¯nHPf"¡Æ'tÇzy¤^'´!¡£!Owt«¢,…ü"""2¢Ù(Ujnv#å65BŽQã Õø„›mž¿_Õ1U§ý­{VD[<Çdï!;Ò#ɤ½!ˆˆÈnÕ¼±iÒÊGBSÓ#[ˆR&ˆßÌÚª¶Ptv7jžÿ8r"É S£DDDd@ÃÑwH 7‘’¬¹Åº ­E?©RãíxÛ>j|´]‹¬šñÑ#‹ˆˆˆ¬hú ]Ž´:£½( AÓ#$ÏŒl£ˆk#æÞz¢aü¹"¾]œ¡z´Y™Ñ_û«ZÛVD·ˆþ?{wÜF²Ea¸Kaf03Ó:–fÃcfff†effffff '˼ÛÏGåqMÆR,Ec=;ú¿ªkÐŒU*ò©îéÛm§ß¹!püavjæ$Û±SBaÇ(h€Ši9ß!T2t” |£¹K?ÑÜß}K!¤RãêÈŽðÙ‡øBšŠ B%§ŸjSr§¸úužŠu$¤ª>ù;-{²s"ë§Ûk`¬‹¸.êgBžšÿÇï8£!õ$•²•À·ºíÀEv`¿~¶î›maChýÉÿüD×;‚H#ªáÆBHõ«ô†D]FDmGüÁöÛµè ã!¤Dñ(ŒôŒÈ)ý> ýõAý¸ƒ¨ÅwyWõŒH‹´jNßõ»¦ì®©˜÷ªk£Ó7C ±ÄBÑ×A¹Õ;\Aô”s"kBª¥½ï ¢‹ €D!•ÞÇõ|èç@¢„Гµ«6zNd š8ÎÏR^T¿ÙD[ÛkŠ!¤úCfù›® º‹c!Õ†‰i¹žf$ @molÞæ ©>mü „Ê©Þíõë+xYKL¼„ÐSµ«ì„}ˆµ‘õ¹öaâ „´mþvcýºXY/3{ @)xöïØ¸ô¢Òàž4²þÚì !ôíéùò·¬Ê¨þæéº.¬óLRüN¡ pØT¿~K¬£ UËÄô¨Ãëì’ÆMžFÖ“´¿vÂä®ê%D; ÊÉI·gýc­¾ëX‡xY÷7€ä¡‹Kg?1oÌd[?r‚ýô¤ û»Œ2{ZQ½ÂÉnmØ Ͷ²(ÏÞtä"ûÆuö°_/ѨH‡ßÅÓÈz”0ÒT[Îàáú½K¸¯MÙˆ‚'@ª'N[ =T³<¦ÚÑØ¼FV@—é8oiäsÜV(|T£ §ôšŽÿÎ4Ôj$õõi¹ö_ÙUö¼’¦P8½l D·T-t7²¾Û^À3!Qíˆñ¡×Oûëj…MÄzðÄEN@©42òŽ¢ÔS6ŒÏ«Ùîidc,Lx³©UA¤PQÐì6ˆ¼##ç=«‡µ×Uε‘u °:NA5)ª zþÌùÎHHSsšŽÓ{ÐÈ ˆ1„}aØÚqþ,»bq@ýCÞç>1Õ…¥Aw#ëν¿‘ði'„.( zCH¡¢ÑwÔHs½Ït¬ƒß'²Þ—Ĭ@i¤kÚAas×±‹8¡‘Ï­G/v‡VÀõĉ¬Ç@ò…žëh®i:ÎYt°lÜ4ûå)Ùú¹3ˆt­bØh_Bè¦ÖžçCŸ7€ä ¡ã êÜA í|´xÁ¹®m}Üá¤Å zÝ—º£z±»‘õCY ÉBÈiƒÒËÊæØH‹ÜAålßãG™Øæ ¢—hd€$ !õøLÙo=©p¦;º "mxêK…od½ŠFVH‚Òi©±,·>,¯&´Ü÷S ü ¡ð¬¿3{/ „ö´Î*nТßCè¥Yk7{*,2{À¼ŽìzóL¼qSÕ}÷½.)›½ÑÓÈšaú<@½BåV?ï€øWͪ|ÝÓÈ:ÄÄ @õþFV!ôV°Õ=R}Ý¡DÕ=3–xY«M!g7‡­žFÖ @%ª~žVòn7²¡?e–GÓÈú'ð!ôX`…Î4 {í•úu[< –™>PàüÿezÉÆÞBÚ­Û£FØhYßì;¬€'„¾—R°­7†vñ6ÆèøðhYŠ»‘@=U»Ê ;y¿A±4²žd„P¼Sq…EùöŒ­}¿q7{Ó½ló6²~Û¡x¦â@:B\ß¿5-o·÷ß?cÙ+žFÖZ‡:*?`?=)#lµLL~ž:}a(„?m‘­«*×µˆ¥Å žFÖ4²@¡ûf,µŸŸœ•ìß@è»~¿íÀEq‡Ð‡³?ÝÞtZ¬ñœÐp¦ßT Súݹ¦û:ÿfÄÀ}užQ¤FÖëhd€>B ˆ¿eU†‚gbêDøFsgéwǯÒKt_Üat]å|'®ÏáL¿u[ºO÷׎¯ƒïºkdý›ôR)lê¾Ùf§o'ž~‘Sú]¯ëº‚H÷Ç];›u2«F8Î(bézqqýqjQÄÜT¿ÞÛȺÊô*€Î?éÏLÎ|×5§‚F¡©t]#"ÝïÛs¢ÃòjlyIQÄ Òë³*+ìUs»}¯+Ëç¾êidÍ1½ Àª4}åüóÖ3r¼# oéºîûú´\_,GMŠ8-§×µt;Ú÷úgvÕk4²@ß !->гM·¥û*†ö-€¶4¬®Îùï†ÎàÙtN“;„ôùbyO­´ûÀ5-w–éµ€ÒT\L!4dÀ@ßBèȼ@èóÔ”—Ùój…NóÚù¡ïÜܹ*îÉÚ•Q¿ç»ÁO½éy>ô}³wFBºßÇ©8wX„ú… ¬°õ#'¸_iJNõ`Í2õÐçŸ é~ßVÈ9=Cêý9µhÖ.KÆÿ˜Ynt|Þò¡±OžR4kKïndBH¨ ƒ¨WÇùѸª:©pfè³hÔóÜÌÕaï¹³z±Í4T÷©?hOö£{ÛD7õ²FV „Têÿ‰¦Oèû)¾MÅ­Ÿ¢è¶öͦV»nBªV¾E¾/ú·ÿez „ "t"혠rú«zIL÷kTÍ}Q4²®3ÿ€Nù·w\ï¯0¬&áÏyB(iÊÓÈú¬@%´~”Zô¾+ˆÎ3‰ „Âì¸ýc“(Bè±À o#kÐÄ@ÅÛÈ:ÅÄ@ÅÓÈz¬qB(îFÖƒ €JTmmذÕÓÈÚb=æ!Bh׺¦bž·‘µÄ„·,¾cÃ×B]ë ÜêžFÖfWà×ö7z!Y/2»ú´kÊîÛ@!D#ëÏMHhä³ÑõúNg¤ „|«'kWm ÓÈúóáûޱ §aãò´o¾¨Ÿ1òLÕ©’B=µã÷éEõ›]A´½½^ÏQi¿S|¸=¬þn[66¨×ßíhpÍéè1J1IþÇÞU·±,[™mÙ1³e†8ff;ÌÌÌœ 33ǹá<~—é1^ffføffÛóûl4óÖ9‘Ê…>U§´Ú™Ý8:Õ=§»ï¢­KÎwˆø`¦Ñ¦”BOƒ³0ÉÞÙG/vÄ~=1íõ’‹«&Dˆ|:ÄŒ:Žë˜&Í("wÌ×-kßY£%\ÿ’¸\Ç&Ç€Á`0X„0ý¢€Ï;-B {¦ÀBLìyß·} \šà„yÅŠÎqã@\ã"DA¸–¤ýnø¼sL ƒÁpŒ=˜Y…^|ÞñÄBÑiˆX‡°`¿=ïEÿ€ÄH¹iÜ^ñtÝ„ôõbSÙ³bEÑ_µu/áëdBj‚=-çqÝ>fÄÞ`Ϩø&>j² ƒÁ`‡D$þ`"!ìÇsg):»Ðf˜¨k7òšwÖ´!v5+!nžbGj‰æ†™2KL'3‚³ÄÅI QnHk¤áêEBNÿY?L,11 Ã1"„ö´HoñÊî6âôß+Å}+; úÀýÄ™öã¹×‹:‹‘IbFlºX™”+ÏnÆ¥â»Ê>¨ ®îÂLQÖ½•š t²ô¡í”ø¤”j‚„kDH‹ Ë ÿ$F5[£ÝsqrÅçlƒÁ`0n]„PcóßU}oHüh/–® øÕƒíDl¨îÛó|cE…¨p½ÙíŽÃþZŠ~¾®è-ÂÜ=)j1i÷Cé:ÕÛOù‹³¯ð"z:¿½tsÞ®~bhÒ%@ Å'EX¼S´ëDßlz³ºO·nçÃ`0·3úcvKáïê~£zD?R„@ˆÒ Ÿ vóÀû-BÒ@`OP÷õo 78"A¸AÀ‚ÒÅš¼MbPü0Ñ=º·2I Kmóïlc"üÝCm¬AÌÜå5Ì 5ªƒÁ`0nO:nOóþ¢M`d½ßV9iâoÕ]¿}¤­^„ð]¿Žýõžï…÷ÞJÇ"š;&̤´[º·¿H27ÑRƒ§Z÷QtæM©Ây™K5×¢˜/‹vó‹w’ª‚ )¸­•¯Š©«D²_ž0»újë`·¸IuëKŸ­,5眿G¨±ƒÁ`0nU„ô] dWçvô„ØØÍg¶÷ÄsxïqHï8y¶niZ„ýÚùO™¨è7D NY¬ÖaÁÞQù’˜‘ó+Õ aNîï¥ù€DêM±­òµÚ(ïdm­Y@‰X[úÄç‹ ýz~þŸMËÞõeQXÇúbÕ{M6Á`0Œßtžk3ìTc~ôß-é¦EpÀ}þ@;{û°Ïáy‡ô–C䫵J•¹¸‰ËzˆwJºŠ®!Ñ"Ø=D4q Pë^®>b^ÞýbeñßH`е{ù!m•ínþ®¨.¡ÎÅ*PcÒÖ}ê]#Ï…lð ·í± ƒÁXNDˆÂç7S˜ —„å¥]m®+@XÇ>ì—¬Žàª¤<Íf=8aŒ“2Yx¹øØ‹D¿‘Tas­­e¨ Íß»š¿SWÙ[¶ë9fÝ÷¢¾i)70e0Œ;,Búú²t_ñ¿¶²)@ÿC÷±Ž}·**Íim·‰áHËA0S¨‚S×ÎÖÿ3Œ øôt1£ÈVktAU½>q”Xªµèi=¼my(W§ªnÏÃ`0wI„pö¢¬Ù¶‰uì»å± >Ê`ÐàèI˜ L˜ æ_m½³èB®³/Ë{áßq_Öaÿm1àz~|V½Ñ nÎÔõ`¬ÎqêE0cÇj‚Ò"²wF78e‘žºB«‚ñ`DêJ-òK{ºÆM¸*\%ÿÖ„,;¸¾ãlì=DOƒÁ`0îŽÉ´–¬ý‘i2I|ק˰ÿv <œœU¡+΀<]¼¯IÇy»ù‹þIsT4í“"{»Õc?Ú3´éRã}«ª ‚„v³s»¯môÐ¥´>„èbb0 †ãE©5ù<Ì M.Å}¬Ë½/v°Û`01:U´ ŠÔ"Ÿ¹Yë•uŽî¯5mŽ}HÍ¡œêãÖ*ªf$@gkì3ÇÔù¬Û²%¬Ú%á]4fVœ/iwt`òüï©&èë©Y;¿ wÜ'ÖnÍ&ƒÁ`ÜHÅ›ŸË褱©8{jdMö·%Qi¬Á Ô+«1ÃG "ÝÙ F/ %§œlFÃ"Öcš4Sç=©Eêáæø¹cÙ3G=Âa<øžø6ñ+âa«%»Žx˜Nt61 £QhCÜLàŸsZ}eŒNnÄ(³˜“†k»yF%‰‡Óu ±f‹2t²tW{ù ½¦§5…¨½Û3 wgOÜGc!“l0Š3ycÔh†œ –—åý²ðnˆvÀ1Ä$bkbâââ½Ú=ƒÁ`4 ®Ä‰‡ˆoiºß\{ªúaì­F &Œ®g0À¹Ï†” ôg?0 ȳ…Šb`@Àõü¼Ôèí¸&éjìö¦²ç®¡Ž±£±§[½ûÍ£úa$Ã)§Ïùt‰·¿GÂä=ôž“´Ñh„³Õ”àcb0 F£0F Ž®§ÚCtÒ˜š[2@x*ýÃ`ZÐÎw L“Ò«i¥Rx½À> Á‘Î7¸ØáTFôÂw=ñ ö¢L°c+ƒ‚^¤F§­9à~”Ö&¿±>‘øb´é¶Á`0þÞ®¾‡ðãovUf[öçÆÖìØÝÁ@o0@wgõ.ñë܉¢[ìPL)Õ¢œkÄcöKNÌØ‘Ášj¯âi!SA%Æ2@h´ûd(@dt@uŸ¬Ÿ½°•ø‚ü*1×tK`0 >÷Ynà_KÂ:‹u¥Oœ›¶á¨›¿¶¥âå+á=…q6gWe1ö`QBöuSj-½Áu ²)rà›dF`e½ý4yTßGo•†`À©&ŸÅÙÄJŠþ>™~“vkõü‚üOw‰/B¼¢·ÑPA¼lŒÚpæã¸Ñ ƒÁBĺœà–ú~eo–é)nŽM[/f߃™9B?1ÔÍÙU¬Éœ*vW½ª}Úl¶ËIôÍÂ5Ò_6E=ÞŒ˪â¿#%§ïõ&­Õ’2’’Äßo™ D‹ì ȧkÜÄ}$pÿk­ÆÇa`0 Ædü°·µ ;Ó'q¦“¶ö˜ñÇßâ}m*L P¥î‚=-Úõ¸ôõFáP½Ù `°PÀ¨fbÆfÜWÆD>Ýâ&I!ÁŒŸÇ(à];ªÞ¬£QÚ'zÄO>#Møû!:¨’ç>Ô€ô[ƒÁ÷ï•n@âÃìŸ`“CÀ`0 â öï¬zóÜöÊ7êF¦®6þøÃY¦©.mD˜Å=/‹1£ä!?"XŸ!"¤Ìäšz:R“€À4 lzÆûf@H VØ/I"3ë°Z“M{µæ¦#K9š“ªÂT½Á ì·Á+Ä)ÂD½À`0w;ˆä8ë‘ÎzΓpœFgJMÇ9lÒ²Y§ ôiÃDfcÙ³:oyˆL׊ ú·ÉôY¢_žÓ ñX©å~›MD±Víüv¢"¢Wµî§ÆÇ- š>axéÂ)Y;÷ߤÁÀ•ø­cG/0 #Õ3 EqX'æ§ÕßTFô>§ï™f$"#½àÎ6D#p´Ýkè`€uC„ÃŒª tùüQŒO¯†èH7žþÌÇÈpâ…[4 ÐÎÆƒÁ`Gè8–x^¦Ã Òu†Anù!mU£Ð é›uG5Ò®gåüVŠŠQÀ !êÑ‹Òv š`XÐ?ï$ Žó¸ÚE¡ö§c0`0 Æb_· ‚âÇ]ZœaÉÆùŒ¸ãtu=oˆ5%ÿ"“Àµ›ÊŸG=ö¡é' @aD€˜©T¢$V·¸‰tŽ4²nPòÂÓÖçR8¬!DUX³‚ª.ÀXðÓ40 #˜xi,ˆ ]ƒD/2ª  T¦âê6”=-ˆo€bP5øÍh@©¬3Jö˫õ‘8×™@ÿ΄P0 qüé  ƒ±E_¬JÎ’íú<ý3ÖÝH1é0ý Ît6—¿t"C=ÙDYxwyŽcL¯gý\"~‰Oݽ‘FÓ ZF 8I„Ÿ°Á€Á`0IÒ `$D¡*²O-ÎzPƒƒ:¤è°[´ÅœršRcH}a`Üe²a_Ò»ÚôLñÏÇŒøü½.}ö<ñA⟟Á€Á`0-®e image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/flame.svg0000644000175100017510000000630215166745067023102 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/skeleton.svg0000644000175100017510000003601215166745067023643 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/ftb-logo.svg0000644000175100017510000002342015166745067023527 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/creeper.svg0000644000175100017510000006350415166745067023452 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/gear.svg0000644000175100017510000004100615166745067022734 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/squarecreeper.svg0000644000175100017510000006751415166745067024700 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/herobrine.svg0000644000175100017510000003600615166745067023777 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/sources/ftb-glow.svg0000644000175100017510000004751315166745067023550 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/assets/0000755000175100017510000000000015166745067021113 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/assets/underconstruction.png0000644000175100017510000003012415166745067025411 0ustar runnerrunner‰PNG  IHDR  ‹Ïg-0IDATxÚìÀ€ ý©©˜srdkÃø{mÛ¶mkv¿;e6³c¦“µmÛ¶msî^Û¶may¾œúýÑ•ÍIW/’ìnõSõÖL§OØOž—'fXµ¯;ÙÊ:ú]Ë·ßË'Û"¶Õòí¿ÑÊ9i­xðpòeòƒåe²`ºl úþÙ \l‰;‚PÁû[ù7ù{`ãò›‰&ÞµçZ¹g ¦kÕåhQU=Ê߈RnÖÊ8ð+ó°¯­ÌC¿³2"$õíÿ_Ä6Y¾ÿŽÿ!öVæ[þ3'Dˆ~šxØ÷Q§ðú­ÚW_fåžÓ²Ø¦]¬&QyMQ•ÿÅùdÙÿZ9'¯´ò®¼W<ì{Ð.2¢:¿r±÷`Ó é?u§ˆû"j×·¸ûˆ‚:&P%³Žy#\pÝéâaï†vi–ŽÅ\Êù<ò‰jèÕ2\_ÔÄñîƒí”[þ§aÁY“=5Ü‹öŸ´>þ†Pá Qü¢êdš‰RVCTëQÕE}3_ÔŸ+Eý½JÔkEý³ZT× âFÖCFŒX²Â¶È1·»$&¤Ï8è÷:ù—片½ í«Îi¾¨mÃ`Q?,‚L¯Žƒˆƒ|(ÜïËE© ±öô0ÈÇý WýlQË{‰zyŒ¨çFbÏGì©ÈÚõD-ê.jL3QËxe5\)ä6ËÚñ°gcáˆGoØì‚¹MóüÔ|QQ¢‘M¢‰4­­¨Ò4Îc¬‡Ò±.ÖF4Öë¢ »´§}ÞɶT‹úr.ë۹̼sN],ö<è8©EñIÏ„(¥8^ÌâGDÍì`aÛc­¬F4IçŠúvA|ýµJ‡µ–çlQ[ԯ˜H§ m©¶oß9~l¨9Ž$D sNY"ötorçUu²ù!˜î&{…0/ŽŽUÀ¢‡íó%iÂIÁ¾_HBB‚Žjb^ûÞTQãš‹ê^)ª}1ÄíT*ªQ³:à¢ÿ\‰ oÄc:¾ÿi³ÅCêѪêš-ºË*‰×:–ƺÕÏg‹jÐ$Bù–ô@øÇ Ò®°ý:ÜlýlMpÖ’ðY ž³¼&Ï?¯ ûÂ(Ž+Q×Ó™}Š‹ÖÚ/íÈ`€(wI&·6êëy$#?,âØ-ì± BÑLÉÊG3 ’s²ÁšâGø‚ü°"Žnj,ñÐî \ÔP<¤#Û_5Ø©¸L7«GiÙ(äØuÛ´W½ «¨ïÆ[GÆÝ¶2•¦AFsœÊ¹¦­Â¨çІÆuÛ"¬'RƒzYñÔ„‹Ü*_Ô€º6 Q‚üï!J’šáÛ“ÈzÕÕ<×… 6©!DìVaNF_•-’’…ø1^‡HöÖ$Ž)þjW‰Kƒ©·ß–“œ¬ìCM°¬¯3šˆ˜±s“wyMñ\hUˆ‡ë"~²]!A=Õùe©}nk5qÖ§³D½2VÔCD­é'jEoQ«úŠzr(ŠõóÖ&Zçv†X¨¡‹Öaàâ°xH.œ”¯Emb&ûÂ’É~2SDú`äÛ\T*Ü`8ƒ¬”Œ³ã4²âu‰ãH2g¯'V,Iƒdμ¤L<$š!cÌÇí¯a«2<@³Ì)™œú1H:(Ñ$Â(dmn—l,Å©V?ˆ± kì…„$(Wñ#\Lº$X…aP3‚QZžo~—DLjdësy>ã EòHèA_„QÈÿY{ÿ^Eß¾ØÐÙs“ZXË|íî´‘57 p{#?…c.0ˆÎ¦ùûáôÄ“ð«ytOJRKBd‡&÷ÈÔ‰ùÒbãâ¡rJ)8ÿ¼Dg¡ôsÿ\©ÿ'Aùq±NbXóÁ4ÜíÈ&´Üˆ m{sb2²e^ß°†æ¸rNv÷ÜrΡâÁŒ‚´c^Ч~}Bñ3ÔkÉŠÉ* m8×)Wö!“î^I‘˜a‚䨿õ¢f´‡øñB‘‚‡¢„Jp¿õcÖŽ)í†Q²ïê)ªI-Ö¡€š€¸åg1‡!ÓïêûBNç’KJ2Ä«®›9Ì$ ‘ŒyL4qB†Ì·¡Ÿ¾îˆÆ”TÚSŠiœKÇ£nV¼ hmœ¯Ÿ­¢¶Ê‡ ½‚´¿&¶¢×»a0å‘/çW¦º€=•°ÂðÞ §xp‡ô.:Þ%·Å/>Û­¬Š¨,3·êb¬˜Ç±§T0:µmnx^&V¾_˜Etî?S—Œ—ç?([E<È WžvÐ.µÜ2/½¥8ãÂ’ªôƒNíVI{ã¹]°Öÿ£œƒë£’?/I !~³€l3Õ +Óø$?ý¢GÄÃŽ£cÃ{öæ]}•¸¨~ÈÆ”PÖQïí¹{xQNTRwUˆÑçJ¼=>µ6fÆy—åˆ÷(ó_}RUî…õ¬ì㟦￑rï2º,Z™è)o\›H’xõ ÇqÅÙ'<ù2(ÜìݽÌo¡t;ì+£¦‹ãç£Íi»ä®±4 ×ÌðCâìÉûšó®HŽîö@+÷ܾn¦šùÍ­0\\’Ü^‡º!½-½Ç‚}`=ý—ã¾a}Žì¶g:^—r2ÞvtA"CæÌÞ`žËNB8† n¿ ¼ÖÎe‰ž?¤HmTAÿé3ÄC|sÏëâÖ­…3 Í”6t'Þž¤ÛT(Ìß«È ·Vo_Kãxk5îjózÖm\ko*ÿs%.?/Ñõ@ÆçߘÀ~ße½ôóAæöÅ”˜£·ìüú‹ø¿aÔ;MÓÕAß!?VÔºúñ‹`àÒÜøÊgg›m iü<ò$»æ‰!ù×óôÜ Í#óÚ,_T©&®®È. ÊζÒhÓÉœxˆFnÍËÖA²“»íR΀è_)/ü:ïŠ{wŠ&$®ž~qìæ£òšô §‚Ü䆃Ù'V‹‡íÕïÊ;ÙPd"б°[É“Àûg†£ŽÄ’Q{‘8¼ÀEã\\q´>ðªÀÕ‹V­ó;8ýBÕâî¨K²ˆ³µÛbˆmãvÖÐG~v„6H÷ÜH¦rÞ›Š«Ýå³·ƒ²}G]«ûõlh7&#KŠÅƒ`ÎSâ –Nlµ+u1ˆûõ<ˆ@"ÁäÊü.L“LhÉxÕdÉ}Ã$ =ªÈŽ»VØ2¿`€u(!£íRκ–ù¦¡V¼AYutLËãü¹ÒÝ{ykÏÿ:SÞ.ŒÅ´÷8è?k´x°Ì>yU¬ú¡O»Ü³»q-Yë £p×£šè@bÔ˲÷ß–DYìžۜꄱçÈ:ÍFÙ<½³¤‡›i¾þ{¨%º# @ ý7œuüÓºÃ$€ŒÍ…e¾ùæ˜RÉó#)t­@i(ÓØ ãô)6ûKÖÛ"y1¿O~&$œÁÚ&µ(5™Üó†ÁZÕ©pêŒë·Mÿz¸àúãİrNZcº8!u¸èi`M:ÜfÓ„ƒl¶Êì]fÇiã[˜}ëÉ¡¬áKIÍsû5Ë{Qc,xˆÖÃçfú}0ïÚÿ·wPm¤[§©{w놷ë®]-PŠ$™·!Hq׺»®V¶-ÝîswwwwwwÙwßýïðîÉc$V˜9çž„$MR¾׿û-¶ÉpÉèõØ£+{!®ô¤JUb4&׫fs³ÁçBFæó%Ú¯S“¤h¤é”Ÿùé'´íXÛ}’÷ˆ2é|»¶WGBð¼éåö%z ß Úîjîã)Û‡.Ш:Àøƒ©h\õ°x$+X&òc“¨Ê;…_7‰Î $ï(S!é0à”Ê L§¸Gk—‘[‚ÊAa£?Ï]îÖÈéüΟ}Êû’æ—Þb wVëÆ‚ Ù¼ª°É/|•9'‘Ï3•гT”; sgPaÁ,*(˜A¥ © x6åûæS]÷Bê>¼ˆºöϧî“˨ûصÔýتYIݧ–Rש•Ôyx)uZIí{WQëŽÕÔܾ‚VP]Ū)ZHUÙs( ÌàÏd' œVÁØóŒº.òyÈ Þ-fZr~²Õ@L:üb<‡T€¿)óÞ°Ì&oà‚9€_¢ošLµš,j°F+ÏœL¥Êt*É_D…¾%TP±„ò+¯¡¼Ú%”W¿Œò›WS~ÓšA²–òÖRõ¾XêéO¤îKƒä⺑Ǩçr‚*—â©çbŒ*磩û\,u=•@§¯£¶}먹oÕoYF[Šç±öt°æœ$ZÒÜßO dm¨©oÈúAƒ1ŸjÁs°:f8~nû€š³;–?1 ð¬f)˜@%¬ÝŠ R¡Ÿ«YNùu+(¯iU0`,Ѧ’ÛM± @ S(¤?^uZKíûVRKëBªÎŸÇN¶lª ú µéÃɬðµfÎø–?ç¦à£ÈìËç¹~‰?söC‚7p[ËIÙö–ÉÔ{h.5]IyÍ«¸Õ&°…–<п=–ºÀ‘ÑœÖP÷éÕÔØ¹žüÙ ¾s&,*^t>kAä?µ"±Žç^¿K?)÷&¦ØÔ º9ׯg¿0h!daªà%s”—9“ÚO-§ž+0ë¨éT‚¦0(c"øîígcÈ]²„¼ywP©7ÿW3%  ÷ë7êMy¤F*(º)*t™ó4­*›ºAWuÁ­ó}™×^Å/©2`n½IS(;%’¼i“(³ÀAíOÅñ®',bÉÊk+vˆuéí_OõÇÖÒ&o$%»'Óæ¬9ä-¸‘|®Å¢Yskk0Di<ÐA¹±`#ž×BXæI°7+ ¾6>ìP²ùVÅÀͦôô(JaÇ=ÙEIneÎdã ö2€µ‡ãOØæÖGs°ÇÀ#kh“2Uÿ?•É”êAŠC¾Ô(‰æuD*g%RÖðoïD:´B.¼›Ûá&ÙÔ])©KR”)IÆ­ÇÁ‹3• É.y*æR×3‰ÐT€…1|¡A [£©õ c`ÝQÖ€žÿQALV&ѦôùTìžC•™°f[´•@© V&ýk{iÔïƒ_ïÏœù Ÿç†™6uA/@1BO’œQTдˆ°xXDÀÒöd"Ã3\åßÕ‹í7VÖì_E)ŠÑÿu2•u- Î¾…T“5QRNV¢e49h›&þ{·ÊŸ‚;¥Q…²‰t%»EëŽÆSA3`Ò—\ˆÜ—Ç š¯¸#flᯣÊÝ+(Å­jxÑöQäß¶Œ¶^‰£îƒ ¨10‰*ÚÐd ;øj SD‚˜a¼F^ïMH·‰€É `aÓ5 CØòxÕàHrwUp>-E`WD¤rOm9OÀ´ŸMøÆÀ+×QÕž”l ƒJ»—P/‚-¤oN.¤ÎÎIT_‚ÚÐB¤aÐ-¤Ý¬ÜäϘö#}6qƒ®$%Òe¦‹Z¯…öÐMk̾+ªô²ô¼°xxN+½êíù|xŸõø|ÜBðÙø¢YÀê}« 5`Šâ ô¼œfŠ„ê¿;¹„zv;¨ mþcßQrw:µ OòD_àÇõ6«Ûzwñ/ÿ_Fú:3` D»ó|"5Ÿ‰aÍM ÇײVŒ Yø"Ÿص‚òQníÂ-¾kÝ‘µòMrd&ÈcÞ©HÕÈ¿… .Ýsp6u´O¡šc“Œ`¤Ñ+í[¨¢à±àóå^cÓ¦s¥dF­e­ ´…Ç?‡x@' èJ:“R6›Ò¸Ù Õ;e*Aƒ”´_K]¡EF/ÂѬÂß ß¦w·øÞYUó›|gî7Ÿ‰¥Í9Ó¡ít4àTJÍš¦ò4×O-¦®íÓ¨±ÜØ$CãÁïÃN½Ç›&ü["`ˆgÅ)›6] 1o“âø†®VÔ…ÁbbQ`Šk­¡ôü””©.8¯hÍܺÔq6AIøÍÙÓ À|g<‡×ðw]?1ÙçÈU2 ~ >€Ð€G@­<¾’zŽÎ£¶FnséB(Ûüiƒö]{×l³i3!ú¶‘¨¾Øzõz˜7hÑ4F8óꪋ6b>ß>³Ž¼¹”$ð ̪DÿV•NÖÌÐÚÉ.c뎮¤÷‰¥ÔÒ4#ÄY"šÝq¥6m:×#éK6y?3ZH,ÒX@®®æÑ.&Ä $‹®@›–v-1†_TÀ=€Ù•à~£Rª ø…ÐðÖ¾óùXª«ZF›'Yé®y¾Ü»þn›6ÝDtĵ ÌÌ4‰ë20bÙ¬MÿÉŠÊ«[0"f´ùt ´¯QkhŽ·PÿÀò9†¦°@Û[_ÃÇ¢© ;ž™ÓÌ»Šœs>ãϹešM›Îõ¨3bCõ=3|]‹€X8éÚJ‚±é†¿_þWØI䲞¥lzËß¡jÏJ¤` ‚#hqhüzÖöx½%ôø6ÛÊòD3dó 0{Ñ&ÍàJM˜‹ Ä À¢–k¨å±XJ“ÒÚâgq#ÃÓa8àûeUÎ3ÇÜ C`õ}ù}ŒÄãÛ—#§i¹»¢»ÆéYB>÷r dLˆ"!†ÙWJJÄ,n@øŠ1€‚)í@Y<˲ L ¤¹æXP‚ vOFKr’S3ß @hZk1ñY)´Y™IÙžÕäËœÃ)™ TŠ4Œsö—yOÈõ6if*Ž/›!È«aQP±B$£.|øé—bþlóHû½Ý¥³á÷bIÅ :ÇsFlÅm×Zð%±-¾=Z¼ÜS(ÕÍð'GRÊSÞ—±v–MY˜ÂqÇâ5ŒA -rñÓòf°t„òÑHxc±-ÿ Y®j3y¸ÙÀ‚ÆEøÎÖyØ=pûfCKÃUàï³[ô"Yˆž?SÑŽ §Ç €Í„8ÞfÓeábçùY³TÒ/-*\Á€À$«r·0¯`L2WÊt «£/æéƒ*Ý8¸,p Ðx bÔˆÏ6wZpKhßiÓeM1KglΚ†>9hÌ ­Z›‚‚‡d.kuÑm#é Sªñãt€¤"¡šR+wš7¥ºË9[ð€%'Ø„…,Ç9ÍÊY©^ƒ6%Hh? ï‘ÖwÕÑ_¯ûz9ðã`ú7fp¼M:²Ã(mùæ©ë*¦>à»lº¬èvä˜Vc¼æ€t!Ë"g×Ì×ä¡åà»eÎÀëƒM¢ød£ {ÀsbúÃҀВ´÷…Dn UÒªÙ· ~ÞÐܧ0«Ri¢ëu[<9‹¥š2B®1 XJzïá_¯=ž7Ô•äŠzÄZQèVïÕè 0€Ï€òZ˜[˜ß10|Pýã20êýO„½=tìØÀZîy³ÊF`çrê€U{Y«i”FÑ`MˆÇñ¼F#˜ 5P± àÀ—â0±QÞ°!ÂÞˆ@—ãDþm òg}ÃÒ€+µ°BÿyFì) ^PDÌ95 $ çXïe 'ꣷÜÆÁáöÎ8]"0ì ¥=ßlŒû.•­WÕàèìÊÃû¼4s6€¶  ¯kè 0”Ä6ILjøK¨¢`¡%úuköjŒx[?¾ÿˆšà*‰¨GÛÛ·)‹ìDC !pAiXEDŒZ3~ƒ4Aà}^zÍ.!JÔì ĺ þ§€ÍÃJãß`äJpzy7,:Q¯5 {QÂ6¿Z­¶RU 3 ckÀ©w†°qáp‚üh1*„úùð:t@« ¬Ñ}ÅUaTB¬76ˆ ñ›.K•ÉwpüónCPSå@÷ Jqx?5zTôû a²›NkjÏ/©D´´v™øF›.K&xòí¦º Ï@ý 3L‘|†¿½ƒ)ê{‹Æ4ƒ¼úÜO7²ð‰9¥¹Õeæ^µé!³«ç…»¿‹*`¡ËÅðÉÐKˆÉUØû+°Z~_ý)\"—F¯WÔ*íýFQð›. W²kòml.þn ¦~¦\’ž>@!2¼NiÌ*LÄìjo’[Lôçm¡‰›Û‘oDl@K ³h+37ÁÇi›. WªgÊ- àßLD¡©ß޽hAÞrÈxZ+FµÅPY_,Uïc¿2‘ó„(ák@ŠíªÉ.S¼Û¦Ëµ)32–åf"*€=/a^Õ3KLÀs€1·?Ç'°„Á3 £>‡ý#¦0Ùãh·é²p=”q øÓP[3»^Bâ{ø·ÅR®õaé¬)Àp4 LÚ’93Æ¥¸J›. WzzÄL𛦛¼Ë¤+å%|»¢öh¸PRCV_d¯K‰ù¤4úÚtY¸îôDLMQ"¿`:fÃ'Â/ ó‹3F [¬a˜bà ÿOÓ?4éÞÉÈŸªlŸgå**ZéHV&óM6yÄ©Ö4†Ê ¡—¹L GJ“EŒé¸:dPâ´éâËãñDúýþ¥¥¥­åååGY®°¼¡¬¬ìÍ|û&ÜoþCvÁ´Ù;jÌ(œ)³¢_ Ño×…uäëÆ9cª­oJ÷8~ƒànÜÃÇàMcÈ.±™øý•T᯦ü¢Gå+NNk6§€‰ä$Pç o(xM×EH<ùwÀ±Ô€Ö;a0ö8űpÜÈÚ-À¬I••—RF¶ê¨§zP.ÃØ)(éïÑ _T¨øv[ÿÍ´ûê=´÷¹ûiß« }Ïm =ÏÝÇr/í矼vz£›N³y}5½ŽÓ+kÆ^¢ܳ$DxêÇ0ödÜÈ`í ›b*))¡ââb‚ø|>yRìóP‘ÏM¸Í/N&gööw¦re!zÄk´]¬ùö2d½ÉKçß^Jß Kïª$‘wBp¿Š.¿«Z¤ÿÝ5tæ 9TÚ•À©˜µc©ñG(ƒ’L4 }..†--.ÖˆÔØØH;vì ;wÒîÝ»©¹¹P™ã@TQyY9y n †ÒËHŽÃ[óõ^ºžžzkàPC–ËﮦƒÏm¤’ž5¨t¨1dôò€é(¼Î @¼W󸄯ªªj 3‚ š®¶¶–>ô¡Ñ—¾ô%úâ¿HÿøÇ©¡¡\<“,Q¤ÌO•õÙ´¥ÓE{å(ô:@–öÛùì¬ýü¢õ†*ИO¿­€z/ÜB;c¨°-†!“òD ´`èm0¿hË(˜* í¯&÷=ð`z!€ &ø#ùA~îsŸ#@øº×½Žšššˆ&ÜÖÕÕáõÿÿ¥¤øiؕċ‘0\Ñ"ÀHákÏ:ñ†tDÆÈ r ”À³ãy7^<•o¥âÎ("X!}²¿LÇ6=1­mØg3>¬¨xX›bñË}Àõš×¼†¾üå/4 ÷¿öµ¯Ñ§>õ)úÀ>(a–¡ 5B`M»BÝý¬/øEý,Wn/[pÿ«Bp&€UôÄ[r Kbp/ >‡µÙ:jf(Ñ¢Uµ7ž [—“Éþ³Ð½ M7ܱlð13øÆ%€ÂÂ¥e埛\êÍoz°O~ò“ øþ÷¿ŸÞúÖ·ÒÞðÂógÏž¥Ó§OäðáôZS5†mP7kŠn^àî lRO&Rç^Îáå|ÞY€1ððk’èr˜à'ß’? ±õ|6²ïYã²$Ü $ßNðk2"æ¼¢Ak~ôšék—·8×ÞÜ¢DolvÆd·ºV—6yn¬«ðå}·Ü_!¦·¢¢‚úúziûömÔÖÖFõõõðanõÒ20Ó†AIe±Bõy÷Rk~l%@ÚȸJSI²ÆhC-ˆŠ‰#/kMèŠqòBÿÁH"B>S{÷XjB|¢h]!¨!·–jR3£.r2Óî•Ð@,z‡^«GSVónóR"´`Çþ{ Äñ8§å•ѬàŽNkuÅý¡ fà9¼“5wŽ™&¼Ä‚Ô̶üëMMq{û°L1Z¬`R‡3ÞMÎ=F°éwÆÌ”Î]_@ì[Ùýx Žð72ÃxÎñJ¹ª]+®èç D"ûXå)•±1ÅȪ¹Á8cS|Q±Å¹‚WTAç2 Dê$°k¹œê>” ¤ËxÈÓ ên)Ø}õnzæ( ØÿÞj:rÑM›³¦è‰ÚöŠí?Yî¹ÛšÜ1ÿЩšH)íPÅ@šfŒLñþRäMq[9¢b@¦­`6¨Ñ¢Y‡¢böy˜OÀqûÔÙÒC°O=ÏûAŒöˆR¼NÉæ[‘SotB šjÀcWÜ8ôÛ8ÿ¨8ÎD¼Ò®eQÃökÝ„5 ô?õ3?62%rRzçz‚¦‰mý·ð÷H@Þ®f¾=â•|µfÆÜÎyÂU&ÄÎâQ5„£ ÙîMS i ÷rr)j‚X|2‹­”ꊠD‚ËPÝhnò™¡ÖÁA>]—'©ƒ–Xaâ5ŽË£ý¡ yÑha# dí4ÊÂ#ÒhÁBåJQç*[è©SÍ"ï½Ó €°]ÒÐÿ“n .€’†1<ÖuÂ8;¢uòneöó îhj3Ñ„»ŠGB~Ï]¼Àåž­g‚‘kC™ ZÏ |ìã݋ܛ$Y¨:mÏ©»(ÉÍŠþVÊTOÄÒ S$¦žšˆÃ1¼\þXÀ8´äYÉž(R,±b.Jf†½y‡^kmÎ ´d?û~Í;o µaèw©Î)ë#‚.øƒüøÏÍ,ï[F0¹þ­Ëø;ÏÁ…DvÔùq ÿâoÀI>šE®œCèËkÍ ¡˜ã‘ó[Üù¢õJm¥]K Y ÆýÞ…açÆ½y†ÊÛN>"ÚÕdóøS:rvf0!9Žor<|Cˆ9€Ç™ÿ©è-0ª ½W×Sçq@gaãÿÀ#{Š!¸AóÁ€höëï=¾Úý(¬»™6{§é§dl‚)ކ?¨ˆœ4é̓æÃvÉg’(-kFˆs~¿Ýä™r£¾ëµ7”8ô’ž£e|쎬Õ0¯~!š9Ñ“§B˜–y]¥‹{€Ÿjº»žï…ÀŸÃc˜š ηn ³¼Aéé&È}Ø8Ï“î"´gã=#˜äpØ(½•|Ù‹¡M†¡Ú ÖpkÁmý·òY#e¢Eë±ÉÅýîÃ÷£39äø †l—±ïU‚׌¤ðÞ`çøPqôéX·@öVô°&ìæ §m¾j5ЄèhÁŒt· å‚Ù0]Ùì«å®#Ô{±A½›»ã°1 ¯mSè rääûÎ8ªçh<Ã#‰i½Ô F¬Áëù‚\ùHÃ!6¼A¼ æÅyk¤‡Ê›b)Éi¾ò G³Œÿx'ßCáƒ'¦þOØœ>Î"ੇF“!iªJ<µe¨Ž1(%˜´o¡*ÒînuEhRAåîe†Â¼mΙ†Ò\p뽪/'Ò®WÝÉÚÎOO¼¾ˆ°(Ж€}¹Èõ…n6P¢¾/‡Á…ÙÏüݾ>Rxç;^.N»\ÖûeÀÇ‚”*|¿h9ywX™²={’+MÁçd{æKuÄÈ]€¶F• "Y (}úW‘»x>´ƒ79x2&ƒ7=dÑ‚¼z$à“)Yã욀̻‰­, `ÈVæS{í¨Cˆ÷¯VVQª‰qῬw)v­¡Y‰^tÌN“–b½ŸïÉîÈMCHâ÷±_ð í›0ª—åCüóó,?áà£`œ±'%¥«Ãs–¹àî™N>e±€2zZ0žò•…†ZPö‰¨(-¶îkë½ðë"†p¡1Ášvs¼3u,‰ÿVÿ2É9åfÍÌèqV„a6Px•yTã^- BFÀFwŒÚ¢/&täZ à$gÄâˆ!^€ˆÁ}=¿Ç·m±|û|Ù-·DL‰°/í…Y$R ¦ÂT¾U”9T¬ðE6™M <ck@6¿ 1Ï7+1ÿªP–ÿ'Ý3ÑïHÂ÷)NE¹Ãé@Ù¼9b¼‡¢Ie»d%êáG˜nfáJV¦zàx‡µ B௹<³Ùl."Ÿ{ñ?·¸V¿¾Õ{–AºÈ¢.4ó}†ëiUbO²ôò<›~¼TðSÌ›és¸Q6½Q‰}¸Ñ½öîÚܵ·Ôµ¯¾­áðgAÓ‚“¬u~t`y+kÓì žˆ6/ ¾ ÃÓsÂñ+¨sòý?¢LÇò¯aÀˆ$òuO®­ïËîóȅÎòS6…åÿÏ“˜L\ÛKøÐû‚VHqM]ÆÍ™ëRÜ“o}¡óÃõ Ò¼àYlfÊR”Èz TdéãÅÝà {ˆú8˘"þ9ù‘ôˆ%£Å'eD­Bõ€ý­Fþ;ñ]ØümÇÏø®*pR‘ œ}Ù—}Ù—}Ù—}Ù—}Ù—}Ù—}Ù×x¼þ ©ÿhÑÿîÀIEND®B`‚PrismLauncher-11.0.2/launcher/resources/iOS/0000755000175100017510000000000015166745067020303 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/iOS/scalable/0000755000175100017510000000000015166745067022051 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/iOS/scalable/multimc.svg0000644000175100017510000000176515166745067024255 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/java.svg0000644000175100017510000000355115166745067023517 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/jarmods.svg0000644000175100017510000000277615166745067024245 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/externaltools.svg0000644000175100017510000000147015166745067025477 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/export.svg0000644000175100017510000000206615166745067024117 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/checkupdate.svg0000644000175100017510000000207715166745067025060 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/status-bad.svg0000644000175100017510000000157415166745067024650 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/tag.svg0000644000175100017510000000177215166745067023354 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/proxy.svg0000644000175100017510000000171115166745067023753 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/custom-commands.svg0000644000175100017510000000563315166745067025712 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/iOS/scalable/worlds.svg0000644000175100017510000000647315166745067024116 0ustar runnerrunner image/svg+xmlPrismLauncher-11.0.2/launcher/resources/iOS/scalable/rename.svg0000644000175100017510000000115115166745067024037 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/accounts.svg0000644000175100017510000000157415166745067024420 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/instance-settings.svg0000644000175100017510000000270415166745067026237 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/refresh.svg0000644000175100017510000000141315166745067024227 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/new.svg0000644000175100017510000000150315166745067023362 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/loadermods.svg0000644000175100017510000000163315166745067024726 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/coremods.svg0000644000175100017510000000161715166745067024412 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/minecraft.svg0000644000175100017510000000115715166745067024546 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/about.svg0000644000175100017510000000153615166745067023711 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/notes.svg0000644000175100017510000000204515166745067023723 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/status-yellow.svg0000644000175100017510000000454115166745067025432 0ustar runnerrunner image/svg+xmlPrismLauncher-11.0.2/launcher/resources/iOS/scalable/language.svg0000644000175100017510000000566315166745067024367 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/iOS/scalable/viewfolder.svg0000644000175100017510000000134115166745067024737 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/shaderpacks.svg0000644000175100017510000000305015166745067025060 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/delete.svg0000644000175100017510000000330515166745067024035 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/screenshots.svg0000644000175100017510000000162415166745067025135 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/bug.svg0000644000175100017510000000444415166745067023355 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/copy.svg0000644000175100017510000000146015166745067023545 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/help.svg0000644000175100017510000000631415166745067023526 0ustar runnerrunner image/svg+xmlPrismLauncher-11.0.2/launcher/resources/iOS/scalable/centralmods.svg0000644000175100017510000000166715166745067025117 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/log.svg0000644000175100017510000000147315166745067023360 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/launch.svg0000644000175100017510000000253715166745067024053 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/patreon.svg0000644000175100017510000000147015166745067024244 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/resourcepacks.svg0000644000175100017510000000170015166745067025441 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/shortcut.svg0000644000175100017510000000147015166745067024447 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/settings.svg0000644000175100017510000000270415166745067024435 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/news.svg0000644000175100017510000000177415166745067023557 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/scalable/status-good.svg0000644000175100017510000000216215166745067025044 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/iOS/iOS.qrc0000644000175100017510000000326315166745067021510 0ustar runnerrunner index.theme scalable/about.svg scalable/accounts.svg scalable/bug.svg scalable/centralmods.svg scalable/checkupdate.svg scalable/copy.svg scalable/coremods.svg scalable/custom-commands.svg scalable/externaltools.svg scalable/help.svg scalable/instance-settings.svg scalable/jarmods.svg scalable/java.svg scalable/language.svg scalable/loadermods.svg scalable/log.svg scalable/minecraft.svg scalable/new.svg scalable/news.svg scalable/notes.svg scalable/proxy.svg scalable/refresh.svg scalable/resourcepacks.svg scalable/shaderpacks.svg scalable/screenshots.svg scalable/settings.svg scalable/status-bad.svg scalable/status-good.svg scalable/status-yellow.svg scalable/viewfolder.svg scalable/worlds.svg scalable/delete.svg scalable/tag.svg scalable/export.svg scalable/rename.svg scalable/launch.svg scalable/shortcut.svg PrismLauncher-11.0.2/launcher/resources/iOS/index.theme0000644000175100017510000000022115166745067022431 0ustar runnerrunner[Icon Theme] Name=iOS Comment=iOS theme by pexner Inherits=multimc Directories=scalable [scalable] Size=48 Type=Scalable MinSize=16 MaxSize=256 PrismLauncher-11.0.2/launcher/resources/multimc/0000755000175100017510000000000015166745067021263 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/50x50/0000755000175100017510000000000015166745067022044 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/50x50/instances/0000755000175100017510000000000015166745067024033 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/50x50/instances/enderman_legacy.png0000644000175100017510000000233615166745067027662 0ustar runnerrunner‰PNG  IHDR22)áxƒkPLTEàyúÙwòÙvòØuñ×uðÎsäÍräÌqãÊoáÉnàÈnßÌúJJJIIIHHHGGGFFFEEEDDDGAHCCCF@GBBBAAAD>E@@@???A>>===<<<;;;:::<7>999888;5=77766693;555444718333222111000///...---,,,+++***)))((('''&&&%%%$$$###"""!!!  ÈktRNS  '(*+-CQUWW€××ïïðóìLÄúIDATxÚÝ–±®UE×ÙçŽÛRD Aéih)‘€ÏàÓhÃðTüm *„Q^òž=÷îØWãÉäI¯£`ÙÛ–FZÚwk,køá€ÉËð4E€*ŸùÑà*TGB×üVc@ZÇ×o7"þŽÊ®ï6à÷Àƒ¤Ôw¿—ìŠôÃÛW¶ˆçAÝ´ˆ €® —dÒ÷¿ `ÆNYPkLiÔFfZD@\À (€)ÇcDÉǦl©œÁž›ôP¥"Ùƒi+ë-5¢Ö±YA3¨W"-bÆ +3õjD\>‚¨ã¦`f™y]SÙU=ך]¿™€Ü yhÆ}wµÆ!aTð _¸ìh>ì\¹j™ ’J­LU™ý›O·ôP#ˆË¢xdKNÔJ7aÄ,/o‹o±#¡8O5 ?¶+¸ÉýTÝ?—|ü¸Å"tÉZDŸÊB™q¿â’ùŠXÏ—@)^Š„¹¹, |B–™€-¶ðå¶Ï5_fÔjÍm’Gƒ=®½Ëþ4 /$ŠÀ0C¤ŒÑRàr€$ÉW÷EÓ⸄O†kÂ]ŸÎ7]ŽlîÈ¥Å,Ì,13­ïKb|€p›¯dINçkϾ í-œ™]>¡‘™3ëƒI,p]pHbÙ"Ø03LJ‹Ìl_nñßF0´ÜùŒÈwbÿg*Bgiy0iŠpwk‘Tä¾ñ !Yš ´P¬Kè†wÔ@‚u ê‚u|¤R®Š„Üm¹…{NAG⥑™Ø+S¾O‘B{Äò`BHô–ÁjøÐ[Ìmµ1Ð# U‹e·ûÚa~-•÷§/¥ì»Ãá°ilu"3‡Áº¥íÖ².š[fµ_} $Äz‹9H9ÕµHÔ°å}yíT"ï28@¤‰o ÁrKZ¤L³)º=€%]É|#–?OAç&Ûù¯i;6?1°äæÿrº;?@"O矧ÈFЕ3&³'Èó¬ÝxʉøÏž”þÍ:˜v=w»óIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/0000755000175100017510000000000015166745067022050 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/16x16/status-running.png0000644000175100017510000000073315166745067025562 0ustar runnerrunner‰PNG  IHDRóÿa¢IDATxÚ“C¢A„kžq´¬"6ÖòlÛ¶5 G϶mÛÆµOº¯­¶ÎWõ£a“‚ÏÞ"ø¤¡[Û‘ |C‚ˆÕ-D-Ö"zî-¦Ëg¼mGè !CH(Q*5¬ªÙXFȺ$D/¢¦Û?ùÌJõü ®7/ÒU“ýÊa)» 4¹‹ÈÁçf€“$ܪˆUH^s ágR· 1ã=zë{_~lR®T‘_d<}¬$ 8Qâf˜“ѯ@Øv2ï-66vT*¥ê­ô"ôwe É9á€z |}“½$€!ŸQ`v5=J^´”Š 1c›@ÄŠUj‡ž4 ŽÏÐÈ2BáሀÈ!*½€¨ÙM”J¼|„ÑM˜¬Cö©ç/1û˜=V ÄŽ~Aì,4|Âãè}h¹‹Ï8EÚXmŠîBÚ†û?RÚ&·ßcŠ|ŒØ¡u¤­œ8TfBAïÅtM6š"lÌ8t?¾—t”2Oo©ŠÿhƒšW¯0¦jng« frU-‚XêÊí,̓˜hª[£ïèÄHj£ÀVáÄ@i ½(¾¸-4Ñ=ÒŠ IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/resourcepacks.png0000644000175100017510000000161215166745067025427 0ustar runnerrunner‰PNG  IHDRóÿaQIDATxu’p$M†ß™5æfÏf¬ª ζm›áÙ¶mÛ¶mÛˆQÉ"^õ÷÷o?UO±û3þ“ǹÛLuÕéÕxsꦭëC°~R9ôñ¿ôî­Ä¨Q•´} Å=Ù5ÿåÇSÛ>Ì/^Ì¢z¯H¨+Í*ÑÊ4À -þņ °~ý©ðóö$%§Z9ôáÃ:{ö,ñ4oÞ<6¦Ñ²èÁØp‚»µú«Áñ;Dr´‡‡÷ÌÊa=L²$Ûívpáv»¡P(,4Pc*D&”¿PrCjïîï›tz¿yþ\°óOv.I‚Ãh„¯¯/x0{Ráò­±ÎúõµÜ UC¯\à!Zá1NÅ *  -ÜܱÜáF#[¾œ, ™ÍfÊN¾FÏÎ ør²ð‚Q±áÔ#¬!B ΗBf›–—ZD«E¹À@4š2Ó^¿F›ÈHyöz¹|¶‰Oà´½rq&¨Ã‹!õ±ÒSÑ~!: @u™—sFþµï¥J9¼9< *Á|pe"+3 •¢JƒyrbYኙ‰±¸HÀ+öAw¼ŒZmرuëøØØXo‚²Ä²c ÕK´yH}‚œô—p:r¥«%îx…ßZ¤Ð™òå‚3eÊ”5ñññÄo€s“ëmgJ¿PŒ^ïÒÑ»ã•éÃ9´mÛÖ8 ¿ÓÄ`Pl0ƒãééYìäÉ“æd>P~Lä°<#˵JôåPzt:œNŸ>•Ѹqã*ø+mÚÙ©S¥ÈvíJv­\Yìß­ÛØ‹/Ò—/_(..ŽbŸÌ§—÷ö² 6Ü©]§¶~g0åF:Éï""؇‘#éíˆìFõê¶QjõÊÜÛ±cGÞ,S¦L¾Y¹rå²,A÷ÇO†oÐh.î¾¹³}ûs jÔ8ÐQ’fêðE1 @(7„Ìõç–åÊ\ÅON¿‰NŽ–"'IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/help.png0000644000175100017510000000141315166745067023505 0ustar runnerrunner‰PNG  IHDRóÿaÒIDATxbÀ„˜YXíøE¥ë„åµ—Êi/ã•mÔ=À–Q=ÓÓÏÖÚ¶mÛ¶m{Ë1J›Rl;…µmÛæ·fÞLÆÉ©ê¾–tºú¥ÿAêDËUÛT»Û¸G-¦¼žl>ÿC»Öô÷ìêc^·*vžò"T¡Î—B­'%hüI½25›¾Y¹ã¸žÎŠÍ¤ÃR¤ç$1 ¤ÄB<»d§ûæÔóË+¥– ˜D¼b­•;Mè%+·‘yÊÐ â•Äüź©tÌD}m3¾i´Z“@eè§«M™‡9+5Ó §&‚NÞ›Þ˜Ïæ4å‡EÍy{\=nÛV¨X--Ö GgO0Úð ,U©¨Fë ©$J)z7HgÙ|¸÷®¦Ð¥nŒ‘-Ë i< oåf®@骃¸‚¾h¹f"PF³ '(¸ö$‹ùŸåÓ}÷Ù´õy¦Mù¨)4ô‚'}1|‰Jµ°Ü҈غ«hEK)v]zeŸ²qhÍ¢¢·ÒZq!%N_È/4B@Ù–eÛ66 …ŠÞˆ–eiP>ÈžËÏÙrî.) <Ðì‚ CYy™)÷12)ôüõ…½¶ž{ÊŠ//–<© ŒÌçÏd %ëé½ýyÏnZh´FRH¸ü(“ÓwÒJn§èI]C¥?Tnžž 3ýé½ß^\ÜsO夑cÚVñ“Û”cJ»ò™.pk&©—ö¦¦>¼ñ5&\xrñà;Ù·f»”@Ò†£·Ó8÷ 4 )Ý"çÚ>óþ©mŸ›FÞ!Àà/”öÇʽ\­û´Ôús?W5—mQÕ—oWuVíPM×ïPíVý¨š _ž«PóC ÿCÂé LJÔl¹³j—IÏkY•[oøÚ¼:}f¦VhØñˆ7]Ttøœ@E]—<þàx?4YJGÏ’©þA>‹R/åÔáIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/minecraft.png0000644000175100017510000000134515166745067024531 0ustar runnerrunner‰PNG  IHDRóÿa¬IDATxÚt-G…¿A¯ÖÞØ¶ÍrlÛNÊVP®Ø¶mÛ¶µÞ¹ÆtÏLº’<¿=mü,„£oÚbûƒ¯ÚàÍ ß÷-=v`,‡³Úc« .IÓô )%F!ÅbñáJ¥rùÕ‡¼úÞJ θ×d,/ÎÈŽÃMòo±çyÄqüï:77G½Þ¸k|õÑ+.ÛëÉÏÌ‹ïÛóªÑÞÏû†zŽÖJDQ„išÿ !¨VkضÍê뎙ïö>=ëö}¯_Lðççógüôáµj '°(uð}Ÿ\.‡Rê_²b_Èz›­Ae¢ÍS×~ăW¼qòb‚ôãtú¯ª|ù̯|ÿéßÔËmÆVF&13Ñ$ƒ«w“Å‚oþœW®ù†ïž™DÌ™UÀŸX2eºÑ$jYÏÍ4^­‹N+á£~çûW&ˆÊuz{»éËòxFÊèX¥~‹VlC=Ïô—U …Ÿ¾ùƒ_ѱ¾Jøý‹D#%@þÝ$'\<ÏfI@ø.=cE† —ù—#ÜŸ·êT¾lÐcºäAÞpè|„ÑhKGP©AÜ®«O«¯×ïÑjJʳŠJ»‚­ !0E'Õ\IºÄA¥Ñ¦˜µ‹Y³£:$¦¢g(Ô÷©‘hrES« Û¤Ka.!°L£r¾F_!`|d@ظÂB©„$3H‰kex~ ‰@I…mf…Å¥œw³+l~˜£Vo"¥Â´ÃÕª1Ž”´ÃTI}î „MToß¶˜à¦ç>=q¸+Ø¿ôPœBµZ¥Úh‘w ê­“Qíϱ²-k›¯Ÿ=Ž•áŒƒ÷Øå m×xúÐ×Ë.Ø›l‹5³õG»³¦£,»Í\[ÑžXèªïh©~ÚXEò´…º¤ .u‰ü0œ.’\ IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/refresh.png0000644000175100017510000000143715166745067024221 0ustar runnerrunner‰PNG  IHDRóÿaæIDATxl“¬\¹|åã8n>ç7æó÷ á¼±µÆ.:xۃù‰9fÆgÐJÇ1_,û‚_|0©S¿’׆æïOã4ù#€R<µã;ì¸ç–{[UQü.s¼øîóù;ß½-gîs¶¹þîë0¢8‹ 6ÙqÛ ¶·q7FºB­Vã‡e? ^X{am¢á€ÍÖÝÂn¶ö”Þ£ °þøäð…ë®±‘­5k¸Âñæ[oòÙWŸ8KT‰xþ•g™c»­·cdp†,ZïÊŸå¼Ï–ÊR÷*Ý‚Ä&¸1‡_ ‚PïV:¿>1«Dn‘ÍdÜmQ» óÁ Ðå:~:Tv¯lÆ “ FalÌh×Ògå‰Ûä¸ÀškFר.3k©DBªÙ «è¦ò@K8” £Ð¾Éš„ÙtAÕVè *Œ™*yÍyM›¢+Å·I^¼×ͲòVùMï“üàk ,Ãe:dÂ=™] ,ýa…02ÓFüâª^GØQ(ƒñWzGõógÿ ¼Ôkç;OJßÂàTh‚Рû­‰”öXFÚïðÆ3Ò†kougj?vß.ÐüÁ··iœ­*w˼3ƒC¡ø)(FJLM³òµ¶_öD«W[Ö½8pÿ÷Ϋg;k%[{”Þ¿ ü´£@<ˆ#+äKzÔD4dIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/jarmods.png0000644000175100017510000000111115166745067024207 0ustar runnerrunner‰PNG  IHDRóÿaIDATxÚbÀIJò>trZú²¤äÓ˲²ŸOÂÃÏßQUµGWÇ„Ëmvöd.'§(Nkk^v]]6 mÀh”`å ¢0|æÞy¶mÛ¶;šaֶͰ¶m»ê®½;Ó3÷Ùû'ßâà?#B–k°?""áPddRúÞj¥–GÀ¡R)X_¾„Fãï“QQÍ#"jwGDÔ­ $0Hwã⮤Î[ÏŒFÀi ùûÓj›L bÀ˜b&~‹øÙ»wöøI9u«tåÊ ¦×+EJ£Ù â?7zb‹ß[îÜYJû |% ü%Éǡш‚ÅC°ÙLœ)ÙÅ…\މY¼!,l[HRRœhDúMú§ãJPCL-h@º½¼:vL™ršFFX­ÂyÈ4ш ý†ïž<ùzÝh|€·”¾N¥Z@#)-•ƒ‚ìvQ,¦ iRŒ8!"ËpL§;¹E­ž±P ç’ùáCeº("Ɔüö"Ä3ÃÕÕ#šR Fã/Èvsëüœ“þÕ×ó/¥¥ü[só¸¼NHÐ>Šÿ‰W® •e@¹6xzΜäë»ñ\tô¯|0_ÊËG âø¬y¡›[ôŠ nøÂžâjøh|Ê̇ÄDÞâé9 IÞ~—ÈÇãE|¼Â#op1…AÂ÷¯ ¥´ÿ0Œ”³pn‡a F’œ$ñþúÜ‹_ ÑÆÞIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/news.png0000644000175100017510000000112615166745067023532 0ustar runnerrunner‰PNG  IHDRóÿaIDATxÚ“¯]Q…k»?¥ŽÔ¨a-EµÝøÙ¶mÛ¶mÛ¶ïz3×ÒIÖñúöp€Žƒ¤K¤Ëzê{Ø+\Âz bìÐ0ƒ‰,d´y`d*MCqØ[kBópü ï„vPL«¦£¾"MÕñl‚·ãWòQD–ÿÆÍ[×qýÆ5ü·z‚ŠfªB1†¨¤E9AØ](@^š}>ý‚}*€Â_0py-܉Mð”Ö{s/póPýÃQUèÑGÿž–˜†I°Ö†È‹Ë c¥ÅXÕÓç%S(‘¾ãÌßN*›Yû Ô‘au<‹IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/log.png0000644000175100017510000000047015166745067023340 0ustar runnerrunner‰PNG  IHDRµú7êÿIDATxÚba`8¶ËÈPÓ\#† Q}»3WN™Ö'LŽæœ!¹›0UîÌ ’vBÖ0þCîÜó 8[MÕ¨hZY{øëÆK èý4ëÌ¢k,”­çÛéÕi]•R‡óåî‹íæ Á`O ¥9Uqh,÷ß½•Aê„Ñ¥ª)ÒrUdPmH©¨:ƒ°â‹ŠàÆ!K4Å…êÒ… ‰€kÕÎÁ¿\̻¨!¨–T+z›Ö$ø:4׊ƒK'BªŠÞ•Ao+óz3z¡wa¢°! VÍ¡ø8¤^ŬD'ŠÎ¦ÄHÀM!xõâýVJíÖ§úpGã7¯yt/‰4Þ¾IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/viewfolder.png0000644000175100017510000000047715166745067024734 0ustar runnerrunner‰PNG  IHDRóÿaIDATxÚ¥%PEQ@wïw³ˆ»%^Æî¸Óé¿Ï éƒ[¥G¤îîî,wqçÙÌy~Î3‘„òšçn$ô‘â¶ù‰ÂæÙXUDuYhÌ~AÞ+Q…§9öï'è=‹J„Í\Ÿ0sð>Ï€ÐÐ sIû’ à6ƒ–‰ äÉ­ìZ~ýK a5#¦%ú!+… ¨†v9n»‰[€ª@xvØ…¦îuœº¤Þñ M°Ã®°YðN‡IVé°+V1¶utEv‹ài©Aж¯¤;j>Ùß žì݆­î†¤ P¹ù÷'»+„æàë΄¿ï’ºÂ kÍNž“¥þÃ\IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/centralmods.png0000644000175100017510000000105515166745067025072 0ustar runnerrunner‰PNG  IHDRóÿaôIDATxÚb 8¶J;Â( Ÿ™WÛ¶Ö¶m[±kÛfÜ jÛ^Û¶í}~§ÿ­­ý“orq¾›‰´(øžŠº{Àö&¼€o#¾°ýf ‡í“CF8nxåðæ 0D}Jƒ®ë°ÏìU?cS÷·ØØí ~µW×5 òüâMßçM,è©úû½ŒÁÆèdº£²Vq .ÆޱŸs.äu§£Ì{½•ÖÄ7´eyÐVäE›Ù“6‹¢XÕ9j–ü–ù.ûxÃé0ÅW7¨ß(WFG^£IxíG^X’S€’tAj5K„½0 þoœ‘Ûh*Ä“Å:®ùyÁ£„—ÒeG?Z7Ò»›Ö”´¥¢5f Íé¼± /= ¤dÅSOÄñ~å3OO¯¡ñyš½Ò^[Q–fÐø|vvõ7Yq1ýd¿æÔºE4>Íþ -E‘ Z"AÓ[ðìÆü>Íý…[ ´%÷ÀôûŸ®Õ²+Òžh4½ï.Õ^ʉóÑ…AQþÏWÙé¼B{u¥?Lj†*££òå~˜ç¼RþlqåÝ_gÅ}nÝÍÁF%IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/coremods.png0000644000175100017510000000121615166745067024371 0ustar runnerrunner‰PNG  IHDRóÿaUIDATxbÀœêy ÷{.]r­çÓÒëý?ÛNfœÜ``Ï@,X ]°ñÞ›ã®7Gñ3oæÚŸYÛ¶mwSw]®jÛÜßuwµm{S›—qÞ$“™N“ûä¹ú Îü!ÞhoÅã’'ââçKbò¡îwQ ‚Jô]× >QÈ?BÀ' Ò§gÿáÛÇ5œÃ×ñ¤äŽ\)<É’|s…ǹ ®ÎžTbDa»‹Ë‡íèg3 „$VÍSa2³påÉXÌ€æª8òÌŠ Ró(áVJÚYÿB÷(õ¾‡Ÿ-ß“„>0å2àÆWÆ h–‚Ì̬œr¿Ó¢ÏA6—ž›‘ 3 v„ æ B³ê¦“®KZ®%¦òOݺõ몬( 䊂"QUWªhðáyœÐìú™Ãfœ½ò¯Ü?À¸“ËÏ&a„š„-‡ KÈ®¸Ž'wÕwßwóf6Óž[÷Èÿ“þ\½ߺ5Š"`2Uf/—*W †]8r"€A phóû]_|] €p)ó‘¸UtI¡"DT"‚”èŽ$]ÉLk’•AOͰ®—Qí¹yûå×R‘ŸI‰ësäf¤ r IL›õ§òÍ'˜ÂI½õòN} 5·{ÁÜ”ßS5^gBÓ¦™¢"6±‡B(¾›Î-:Š "LÔnSçÛõÛ¥µ­w"â;Ç縼óÅBZé/ã.õT‡ÕZ5Ö ã<=ñ+E%>|+ÒËÿΉ„ˆ5º«””ËËÀ匠*?&Äü³*¼Wø¡lôhR0âIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/status-bad.png0000644000175100017510000000062015166745067024623 0ustar runnerrunner‰PNG  IHDRóÿaWIDATx¥“ƒŽÄ`…ϼÊê•&ZÛ ×¶mÛ¶m›a¡qºç&ý»v“¯suNu†a¼¢ pi’ª€Ñ@Ë%iŒãX‹bïí¼0´ƒ€¾Äò.¹"—dô‘öhÎ*%¦p|Þ=~ ) !œU&S]Ç_ ÞªøƒÚÉ%Ôˆe€K# _šKÄËn7‚-±ÄR[2ó#A/µ(’&ÕUL±®ëÆÆÒ’‰¥&=ëNZˆˆl`tÃ, J ÇÆò² ¡2´ææˆ?µH´ )¾1QBe¤ÄŠSB ±<ÿÇ ]üÃ#̪G’Úþ𛉼DùòIŽ~ùCÕg”e SDš,É)ˆÆÚD6O`<™éá«|DÒˆïÛUV&tõô:–§É©É i$Aìù|ðgz…àB£$w`”¿šàÉØ‹5é½ Mó®jû ÷IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/cat.png0000644000175100017510000000077515166745067023336 0ustar runnerrunner‰PNG  IHDRóÿaÄIDATxڕϬA†áïÌ ³¿¥­mÛ¶m;¬­¸ŽË˜U,5RÛ°¢Ú–Nçš[<É»ÂÿŠHŒÜq|nÙ¨ÞäÞ ›ä“u§ @Ð{Òñìç°ygš÷h:h1þGBæN&oF¸nÓ4§nE¹eÝŽ‡ð/VÛ&&öž·ÁÐÍ_º!XhÄBR öâo [ݪG‹þ Ý`•»dv A–Œ\gNî;gÝt£¯ªÿüIUAXéßvä9Çr@mÝPi2°ÝèÓiA?³&´Ã2½ÿ’±Òÿ¬é<¼ËäÞÒµEÿ³eˆÓe×’ådcþ³%#×FP›>m‡Ùõ³MîWžQࢠQ²¥|¢îÝfuÛZ¨Mر¨{\}ÙDÄ ŽÉøõ°°$ª ÁÐ}‘èé™Þƒ€ý¯"%S ”˜—‚W@eY„¢9D7G„|¦ë&*"¡¢â„Ê4lŽz ÎÉ YDx° eb°5À˜ "'$Ùw\Sþôœ0g‡9ìD8jG_GÈ=Ÿ¡ènõ]Ó$l@vYN‘º„»%áMŽC.N@.S-V÷³Ò U?¶H#œ°¡k*õTÏŠZÝlYhIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/status-good.png0000644000175100017510000000074315166745067025033 0ustar runnerrunner‰PNG  IHDRóÿaªIDATxÚ…“CÚ+AFOÌêßž÷²,áN¯m¯mÛ¶m{Áz–|ÿ÷TìÁÛ|ÏiT"ÒîM¹\߯¹‘—œÎqp(Ç®¡—lÜÆzã¶ôkøx5±–'co’§ˆðË/üÔ¼ 7âÂæ~õýk_…«ÁO'^ónHøþÓ>_U¶_å+û^£’šàÖØZž 6òO³;!,sÖZ–SÃ.WF<~ºƒ¿‘ÔŒ”Ä÷Æ…Ï~añXd\8:¼Ç‰žpzfZ2¹Œœ½r¶$9;[a¿þá·áZù‚Zàl>+Åb±&x–8/aÇ`Ž~-co<~Ðüî [ñ7¿¨ J-Ï]h‘Ó0•k’¹ú&‹“'"ƒ ðÕWÊC=>–OŸÜº˜êÃlãªhsÌKæšœÍ<=ž¯×ô^sò·å‘銲IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/new.png0000644000175100017510000000116115166745067023346 0ustar runnerrunner‰PNG  IHDRóÿa8IDATxm¬}G‡¿ÙÝ‹gÛeœÚvPÛ¶5fcamÛnXÛ¶Ÿ/ÎÎôölrú×îà›™ŸÜ}߉p½©€†R)-Ó×ñ“Ž÷½ÿS_Çg¿TK óâ*?yßù´/õ½æCÏÏTpÃ>{0Ö×Û$ÓìO´ö:õù}sùím~7Ó¬>ô®€m'¾ýnÑÚ­pû7Û±GŸÈŸýN3Tkøø)¥ùÃÁê€Ò»ùŸüóé >ëêÛûB ùÈ–GͰ¸ŒÓ¯À2z6û‘ÞÍ~J ÖÓúÏ}€Ûݘ*ÄÿY†ÆŽyÀÒ³aDæÒªd±™¦ˆŠš§Ü¹óŸM‚HQeFË7A{×VM‘P)VH%ÆH¦%:޹qÀ!~ˆbÉ÷ÇùžUp+x•r¨Ù–y²Å¿Z]§óG$¤õ]å#÷ÚZ+ˆâÞ•17JͶB»®åŸÏf©ößzŽcþó~[=ÙTË·„0¼÷8q ”ijÖI辟h#@ÿì<ÿÈ+ÖÓ±úøpÿÂÏ `JL)D ˆŒD‰äîò$¿ÿý¦½òÖf¿sü5µPh œGÅ‘ê…ô @°ä‘6¢Â¯u(@±‚Îy$%S ”~“_Õ°45k¬ ¹k&‚ÓP@’èfV>üø×ßNô÷®™Ê†ìŸþ&ÿk½Þ¨€F£qæ]wßqcë;E²¢Å/FåbÌιⲫ à_S¶$iÒK‡'IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/star.png0000644000175100017510000000116415166745067023531 0ustar runnerrunner‰PNG  IHDRóÿa;IDATxœÒC K†á÷¯®1®mÛ7v²Î:ëlÏ&¶mÛ¶mÛ¶m »çLwÅvžÒê+ó"“Ú…ôäöaÍ›X3@®¬-¶üÊÚâ+·ÓA^׉)ᆩ õMúbsrJ¤ Ï¡ài[èÏ•¬§uËŠø¤tÝÃô—¯4ÁÜ6*½Õ3öy±¸±óÜnÑÏŠÄ´~§÷²ŽV˜'H¿Qÿ}¯ŠY–ªˆT4òÞÅßý¶È‡h „» ä2)®Ýr9}åÔFûƹMžë.;pÚ[-ë;ù[}ýåFÑ÷¾K[ <°@Lp·p/oH];ËñMS:k;ë®Í%¯x*ö¹…4ˆÜ’Ÿ®]3WWÊñ÷Ž$!08…æÆ¶c8OýƒªE°|šQ >HTünXü ü~>ŠXXOMŸ_ó¾qœ¬[‚Y½“µ¸ðónP>5Aa…ˆÎ8ÂæU’Þ˜Þkó׺ü>¬]×Ï—k‰”`åånKRc`œÅUÐïÄÞdÅ Œ._cÁ ”KšÅ]œ¨‹|®rç<Ò"NÄIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/copy.png0000644000175100017510000000061415166745067023531 0ustar runnerrunner‰PNG  IHDRóÿaSIDATxÚ‘MJAF_Og2M–9ƒ+ï ¢gð YÆ€<‚ÞÀdí pëLBÂ4ã´S4Í„I T¯ú'úÀ¸²mY„¢(˜ÜLÞ§€žhc}où: ÏfwïuøÈù‡óÝnWù=~Ê_ÿùµðõd ]°ÿø€¦œ©X3nì‰Û'Ÿk >> ö†ÿ¼$`N'ˆ|40 °óQ…ò c{_S,.pàzá;üýïì,Œ= }–6Àg+¾@”ò§fGßw ¯âM°ð9‰Å€‹ÿýô%$„¼ƒ¯P.袼ÿN^vÀ¨c$ jàm  †d&ze na¸M”×IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/loadermods.png0000644000175100017510000000114115166745067024704 0ustar runnerrunner‰PNG  IHDRóÿa(IDATxR°]1ÝÜ>ë»¶mÛ6‡Ö¶5¨mÛ¶mÛ¶ù|™&{¿ùÎL°:{H e:nt™ÿxÓ¦cÝ›§¬y§óØ[u T4èwuàÁKßè›Ï~úà•›ž¿û‹vwûFò<’Ø(ÛiS>"³h2€P»}“r3ZÔÈ Þ€^{`ÍþGTÙ7[•Ue"ÿ¿þöó1~­œ¥Z[¢S06n_ÄÚ˜Rq/õÅâD XðBÁáìeö‡ÏƒÎ¿M9í"vì-aDh5#®¾ødÎ>å$¢=%r»+JÙlÄÀx/§œs8‡Ÿxëgf>–›î{\ï¼ý¢f1lßMqã^®¸öDž{ívæ–˜ë¦Z¨$üt†Ü®OðÕKóÃ9l'@¨Z'Èçžî'6†bË!é?6¨k¤“IºM™d˜Æ¨ *k |CvÃ.ªË¥MÔ²\rñQ$ºÉ·-Í0d¡Ù!BhÚaŒ*X§«u+5ß}µ¹m Têm|ߣ[Úê ;ƒt§i8ú„)]ýøªŠ³J¼\Ä9ÚmÇæ\Ä×쥮J¶aìÇ”[˜Ð§Óî a‚ áã‹F ÞrñH$UyõûœsæüVlQí8Âþ ±'tÇifæv"Ù"~¶T壟çQg0Æ`ú’„"dÒßî¬ñè­'²½ÚáíÙ,;¶*a§Íž-Yz[UüÇ8þ¸£q6F¡uôÁ<ýøìÚSej¸ŸÈÂ@wÈM'Oð[ÊãÕWvc›ŽéÁÔêíZmK³µÜe.5cZžÏu7œÊx& α¾qÔPŠ.¶ï®hʸèü£Ð0~]9ý2âÎù€ jU „==ÓÇ]ø—Ÿu“½ÃÅÒÒâÌ_[~ûú• µò®a꛿5™_¥LŒ7IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/settings.png0000644000175100017510000000147515166745067024425 0ustar runnerrunner‰PNG  IHDRóÿaIDATxÚ\Êpck@ás]µÝ¾n¯mûÙ¶mkŒgÛ¶mÛØÚˆs³i²É¿æ7s†G2e&{˜äõzôz¥†.“¥e)šbÈŠ¢nIW$EU,öíî{îýþ…]$Uö ËzëÚ5ëܺ^,=þÔŸ`±’bK°)‰€É‚)Ù´¶4MJ^Õï÷³‡ß††úBèÙO¼W!dA®ª ¡$c_9gUmV[kÛ¥]çÉìAñ_OOÐÑVŽ­­ê¶ÔZ ŽzhÙR¥•µ«Ë™;g–ÔÔÜvT:®—Ù[Âï´fSe•a,æ8ÄS0c®eˆ&þßÿÝ?Éd²_fÑHì_CÏP[—ÑMa]áT qö}ít³™ÐTâ2ûõÿ7c¢ÕW y »Î1­#xí]¼Ðg'ZìÁåsÓÚêhÉ*³¼ü’h_{Õíïâ.íâL—ŸõÕQJ+j¹|m Og¡BÑ?P$I¶¨ìcÅÚýOüó›4W¦´°—ö`=ü5šJmŒ7šÿðX0ÐÝÛëïîéxKˆ´_%n²Ó*pªß¿;ݽ_ ¦A×#‘\¶ž/ÿÿ°¶¤öʪFÅLvŀߨA:]‘ÙáàëWß5û€uEüð-Ÿ¿úýåtÉ⊌®äÊ*,#Ãý™¯?{ïó?xý àG à2›õÆõ—^xé¤93´È3óíï2tÜExO8«® ©9$R2ÑxšT24â›O_‹ÜxãÇ*WåÛ¯>òæë®ñMŸ¨Äï»Ož‘×'ÌÌ8>]ª²ä‘kè(J†L"Š’N`Ë’h¨±¡iŠñꫯæòÕ¡kLñæ“büÀ9âå"M¸©[αœæöL}æÌ3/ ½÷{XüöË_â7ÞwÜqϦã;)\[Ûð©$I˹£¥z¨s~«¸µ@ËTËò€›ÝškkïX¼xù?N§ç+›­à~NÚë±Ã"'¼“›×æb@iì€/z |õSIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/instance-settings.png0000644000175100017510000000147515166745067026227 0ustar runnerrunner‰PNG  IHDRóÿaIDATxÚ\Êpck@ás]µÝ¾n¯mûÙ¶mkŒgÛ¶mÛØÚˆs³i²É¿æ7s†G2e&{˜äõzôz¥†.“¥e)šbÈŠ¢nIW$EU,öíî{îýþ…]$Uö ËzëÚ5ëܺ^,=þÔŸ`±’bK°)‰€É‚)Ù´¶4MJ^Õï÷³‡ß††úBèÙO¼W!dA®ª ¡$c_9gUmV[kÛ¥]çÉìAñ_OOÐÑVŽ­­ê¶ÔZ ŽzhÙR¥•µ«Ë™;g–ÔÔÜvT:®—Ù[Âï´fSe•a,æ8ÄS0c®eˆ&þßÿÝ?Éd²_fÑHì_CÏP[—ÑMa]áT qö}ít³™ÐTâ2ûõÿ7c¢ÕW y »Î1­#xí]¼Ðg'ZìÁåsÓÚêhÉ*³¼ü’h_{Õíïâ.íâL—ŸõÕQJ+j¹|m Og¡BÑ?P$I¶¨ìcÅÚýOüó›4W¦´°—ö`=ü5šJmŒ7šÿðX0ÐÝÛëïîéxKˆ´_%n²Ó*pªß¿;ݽ_ ¦A×#‘\¶ž/ÿÿ°¶¤öʪFÅLvŀߨA:]‘ÙáàëWß5û€uEüð-Ÿ¿úýåtÉ⊌®äÊ*,#Ãý™¯?{ïó?xý àG à2›õÆõ—^xé¤93´È3óíï2tÜExO8«® ©9$R2ÑxšT24â›O_‹ÜxãÇ*WåÛ¯>òæë®ñMŸ¨Äï»Ož‘×'ÌÌ8>]ª²ä‘kè(J†L"Š’N`Ë’h¨±¡iŠñꫯæòÕ¡kLñæ“büÀ9âå"M¸©[αœæöL}æÌ3/ ½÷{XüöË_â7ÞwÜqϦã;)\[Ûð©$I˹£¥z¨s~«¸µ@ËTËò€›ÝškkïX¼xù?N§ç+›­à~NÚë±Ã"'¼“›×æb@iì€/z |õSIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/screenshots.png0000644000175100017510000000102515166745067025114 0ustar runnerrunner‰PNG  IHDRóÿaÜIDATx¥Ó3€]Àñÿ`­±mÛjb'uܧWŒ.¶mÛ¶m}·Æì›ÛÉoølEJÉßP7ý×g©ð„æLè¥jýŸŽæ²|U‹òáóUØHÆù¿X¥\]˜†6}ÎrK(’¢¨ü M³°uÃfRR2l:ïddŸûBãS«•£4Ÿrã§~5+ïð¡‚X\ý·y¡$üñï^ÿ „à šq”[–Rý?'ª¢ðÁ£H1tU%¦xðà§¤Ó +¨âÃOY^»½m«Æ¢Ää×=¨ñ<”ÀeúùO/âÈÔî„ÿ/GØ_Dî‹sDÃšÖøvOwÂY²AYŒ,Ó˹ ûxr›šá\Ò s0ÂIÜVV4P@ÿt5«—çüÅS8v† î£2íñÚËröÜUþ÷uD³dâO?ŒU×P¾Õƒ{ž3 oJ–ø‡Õ{öríÔ# ŠÂ/®’ž„ÍÅW¾6Òâÿt»-BÏݱè°÷ø%<îò´ëVUS1…IaHʼnF+š4T(H9€Ž€ºµšÀ;4ágV-=€2zhÓ|‡ÃáB`Š$‘ä˜oÂ)Í/w¸´¹Ëå(€¨üù×Çù%&•¹¯–~WIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/status-yellow.png0000644000175100017510000000061615166745067025415 0ustar runnerrunner‰PNG  IHDRóÿaUIDATx¤R3bQ=˘Ýd ³…”iƒ·ˆ©ÒĶí&¶mÛ6oÞù6‹k"âWu0N« +Ѱ[“Í2œ¬–¡a±jª†¯¿—p_ó¦7Ï=÷AÈÏ„^ —¥rÜLÁ ˜à¦ÖS;äwB‹3ás²U™.€å•à´æ]«f§éè³Q ™È·w‚}=×q n~V c™bÜp'Ø)‡ºë¦!:8ÑãŽåCaCo˜K¢r¸’žèCßû>Èx°ZŠ“oGûI‰ rttèC߯q 'X,Ž3Á\1ûãaºê´#ú%;—ÈSð$cÑqÊyF>è~ŠÕšÈ‰¾ŒñzåáIEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/16x16/bug.png0000644000175100017510000000111415166745067023330 0ustar runnerrunner‰PNG  IHDRóÿaIDATxœÒ3 5gFágæÌѵƶmÛ¶ÙÆFÛmœ41ªØ¨‚&6®1¹|qgmU{U¯?ak싊ÿÉÅxÿKÚÞÞþpGGÇ7‡,9på]½NyªßæK$®ò»ôïXýõ/^vÙeÃK,v[b xeðÆBáÕŸîu݆Njq`i¬ŒJ„­±{[[ÛóçÏß1Ë2Ð gNéÞ”«zHK&ržšöÂ5“VÃGØ-lÇñê¿?Ãòr:§vÒ^¡SÙºnËÝr\‡¡Ïa«Ýz;._¢ÌfjX- åòf«5kœ9Âûönèî&…`åo¾Û8ÑÂ:]ñü®£Ó‘ÍéÔA-,Š™)iP[¹êÚW3põƒ™ÅGÅ<•QÓŒ#=݆Kê9Ëf©é’wçèè‰uáȰÁg…Žé’Cë´GŒ*­Ý݆ *ešztš­j4Æ `+)<G¶‚;¦Ù%µfI£«Û`AÈ9¦™JK^.|‰éž.|¸wd«'tbphT³ þ›$Ïøn2z+÷ìŸExp‹ØG§W…óëÂ¥Mᔆ°VE¸~aw¸eÕeñÝ_÷%ñÕè‡èOòþì¾±uúbç´GƒE1³íSwÿðŽ÷OÔ¸bÅȧÛF^Ø.öÖº‘·¾@)¼Ñ\´ˆ…ñ)^»²`Ö4IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/8x8/0000755000175100017510000000000015166745067021712 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/8x8/noaccount.png0000644000175100017510000000021215166745067024404 0ustar runnerrunner‰PNG  IHDRádáWQIDATxc“‘—“‘f‘‘QÒÒ’•d™8}ñôÍÊ :zk¦•”0LøŸÜ7-ùCa×_ß©%Q ™ÙjÉÉši± ¾ÞjjššñaïªÞ©ËZ¾IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/scalable/0000755000175100017510000000000015166745067023031 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/scalable/atlauncher.svg0000644000175100017510000000207315166745067025702 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/atlauncher-placeholder.png0000644000175100017510000002444015166745067030151 0ustar runnerrunner‰PNG  IHDR,–ë9"…(çIDATxÚìÖÝO“wÀñzá&Æ»]l3fÉœÅ1yU™¼*´…¶(Ph)¥´¼Í)°›Iuà Aª T„ :Ñ) Ê[ë…òR´Ë†þ';íiÔdÙâæR'ßœœ^õê“ßÃÛ÷†æà`èMý;/ã‹õéÍð»I9)2„,†ð?ý㊓ӕâ¾.ÂýÁáuÁág‚BCø¯óã&îM@~au¸ÝBCøšÇ4ØtÓÖù“í*W`õ£ãÑõ‘ÑõQÄK4‡&‡Æß eY ákãG!ÅSÈS]$ð{‰CÎà€"CÈbÿáÔ›¿o±7µØWæ/‘À.[ljéJ¨z¦Š‹0É™4; àQé–øÂ))”{WIJ¿1­  4yŽZ{5Ø£ˆ"òC®í,g‚¯~œ‡+Õ¤˜!d1„1·g®wÛº0¢Xk×,Š0=ø¥6ó)€‡³Æ“åcBL5)!~¢{1îbBCøŠ9|6ŽøQ—ç…O$*È©ì×¼Ô7?*Í(‘»ùÁ·l4YÐM©èšp†Åzø5Ä6¸Khˆéžuó«\)¨\QÁ† Ÿ¤!¿c6U6© ~ÒÆ4 ÊF’c{Â( Hü¢OG¸ ®‰`Yo5Â.k‡îG5 ¤†$´Ç­¼íåæC÷83»[„ö¨´óóüPlO(ò£²‡_üàæGå¶f4ß?DzÞ:„×­ƒŽ;QL®?BEâW~—r D~ЇB (?hxþ>ìÑ3PD~9f!…_×lBÖ[PÑ#Öµ®:VǾ^(„.,ÖrZcãóÄo#\òÞ”Â~tk©“‹PbI›Ä¹­Y\„wx<èêL;áeå¸D9&‘ ÁuÌP^rZ˲| a„a |'„üP l ºøi 8ˆ"ò£¢¼W¨~ž4nŠW$N~îŒb¤Hü¸uδ!?ØQ~Ç eN„5E !Ëç‚À\gÁÊ]AJÿ—¢²%9ÆEX1SP1­ª˜.¨Ÿ¯s˜!hy:jsÍÜìWà‹Õ«®)jS“À”ÛBÁŠí‹!~ÜòÇÓ¡_Å;~•ï?È…½„,Ÿû…7 Îß…)ü‰·J'?Ìí)Ú¼fÎ6÷â9ð[?×”`òPŒ}%ÅM.~¾„ !ËFíZƒPé Žâ¶íÎÜAü´S2µY  Ká%$„U]Õ„vßã¨iÕ¨L*¨èrñ{úÇʤÃâÊÊHF~ÂÁæöÍØÆŽÄoÏ©!ß ?Bèì\yXICÈò5„_/“—Êàs”"BÌ?ó°ç]•E üpãÕý\öÜ]rê5ò{è°Ò†6µm"Tз»ä…°lßWÁ¾¿M¹•!dù B,,?Âm [·dú} ~ø÷Éuž>† O–ˆp?aD~0×!Ü’á{ƒhä"„» '}yiyiíè¯é³ Y$ñ£ä0æÌÁCµ †åë/a…!•®sb<'æEü(¢¨¿ªÏ6dS¯¤˜q6ƒø]ã0 zû¡3 †å룢t%Ú£eafI!>† JÒÅqªzÒ­9yƼì†ì5²FíCWFÚÖ9Ì1¥"?o„À/@9b„pOÍÇAú !Ë×j‹‹  ¸¡¬D*+IKÑò7ˆyø9ºa3ssZ!Tm/„§Bæ/Ö¡H„µóNK Œ2‘â×G¸'c÷^Bàáº}û»Fï †B H ¬œu€RUÛa¥aE ¸b¼Ø9^Â%Ô#äU2™§_BV¶,,,ÌÏÏóvt3„ß¿'ö=oÝõÍÏšŽ€"Bl " ¿Šˆ)„ªí½„ƒ£K „²Êh‰¡s´ŨaÄ ÚU6]hDy0~(!ù•?Ò"O¤–üœ ¡j»#tæGàP.aâ !PÜ€p¤$ÕlqQ8p!yÙ ó…öé"" ÇÝ+ÞžX“acsþòÝ_܈Щã½+²³šÀ ëËoÄ^SUÛ átd*EØ#B¬:ä€.¹„X1Râ^¬p/8*@1¹„8íóŽ…B8DàÇz7"l<ÓðNü¢@œá³ÇžÉvd€ã²óëËo÷ê;ß½¦ª¶'B¶´´ä ÖË%d§ÃŽååå³gÏ‚2 D5 ÷¢ƒ¹„@ˆ$Bý¾X¼wäµ!ðcR NðãBf;2%BÞ‹V͸¼‹ðÿöÚe…Pµ.'¯Å¥…Âq‰ÿòÅx)f“ˆ¤C ”?†²ÏçƒêúóOŽ£á×ü:„»ÑÓó4ùz=Þdà÷¶æP-¡j»!¬¨¬ À`SWÅX±c\ ¬;À—k²Ì5Qêš,Å {r Á-ƒ™yÃ&ýÖ¯VÔÆËÁé—Pò3"äw¸¿%/N.!›ZQUÛ ayEy·À;àN"ÄM)NÇXq…¦/…K˜D˜{&'¯Ó‚=B”­ƒYÁϽZ^CéÍž¬ý®=;6»žÛû,ÿ B60ôhÔ»îj¼]©ª¶Â|o>Ź¥YéÐ1VD‡ö‘¢Â–ÂÚþZ"DØC8BfëÌ?Ž¡e@ d°'"šø1J3^F„7šÁ)„ªm»„,²Š,…ç—æäJ„…-8ËýEÒan‹ˆÓ|&;2ŠÌ„å2òs'V]´ƒÐ‰°ùë#$?ÿ»­H!Tm„Cp1̳b#BfõZP¹¿7¥š@"Ì Ï†Â³Aœ…#fð³%r §b#Þ‡.¤!ÌýšŸ~æ)òcÞ‡ ¡j;"äUàI ä"üQ(« ”¡Ã€Y<–ÒžbŽ¡¹%‡QéD~ùxቑ\ÞŽNƆnį½¿N?€T”D¸'ﹿÀ¯4üÛü…@œü'xb.ü +„ªí†PR„=-áYõ¸³¬½Œw¤È:C-¹„‘9°l¢E…oůBà[ñk7b×ÁO"ü ü^8øüKeÀŸÌ³šà§ª¶-B^ ÞRÇùcdzØâIGˆ:Bg"x(Ã%Ï¿²ñœà‡èFr ëo:Mõ›ò¼ÜŒ!#Bww•]»BÕ€PRô4h3X&²ÖYŸkЙBN8L¼¢˜‰!b q‚Ÿ˜AÑuð«½V²ë¥ñ«n>õZìøJ~ ¡êÉBÈ«p0×>Z$œx…È€°u¶"ìÑ!’ÿÑÄìÖã¶ž\Ž!g°ý•–ŠH¹&3ôü.¬žcÁø0’÷žØó’ë þ5BÕUŽ•qƒ)„>Ô<ëi‹6w„ZJ„9mÙ9­&[w®à-¯ˆÚ%ºä>{ô›øÊ(ù1ðcGœ‡À)„*…0—øÍæÑÌ®`;J„-³>߬q¶F|ò3Ùm& µf ,bO-¡'ƒßÛÞg@8t¿³þ†3£þøeœ>†B•B(*Í£Y)6¡¨±7ÜŠµ%7'V_.·Mäfœ9Ì&Æ„ÀWW΂ŸèmgNm6ø)„*…0} Í#¢¶¨¯-ÒDŠà‡HûÂ8s:ër í®E‡m2é"òs†üº]ã ¡J!L\¥£ù¥£ÅÃ6ýB ¬l´Ð7#—°C8ŒtZ¦3¬Ó™–‰L.¡çΩ¦Õ* 9ƒsf`¾[Òè€À®€B¨RS ÊÆD’ú©Í!úxæ š(r 2òcØ@„ófÖÖãˆüNß+Á ,°êXÕƒR…Põ¤/!â¬+™ˆÆ#Pü¢È‡S d¦þs˜Áä“W’c‰%´ö™‡ÃCà÷àგÛVØcDØ­!Ìv›À)„*…°@ +Bœˆ ‡f_vÓt="‰Ð6hò¯v¡þ— K¸’@hí7ç¸rÐHxüP:ÂvZjÌ®;% ¡J!W¡¯@8-pJ 0°)‘¢Ȉ0Ö³wµ«æœ“½+§€°ö²£¤/üÌ®œ/ï8|ù€!îHÁ)„*…0uø àgÅØIÞŽ¡¬mÖ[4dáí(ø źÍÙÞ}åü£—(‚_qŸ Kúl;Îî`F„ÇŽ<¢ªBÃ6!Ê·5[‘QÞŽ"Ž!²Cðc¯iY‰&Ð:c›6oŠüa땤ªžx„tØ\„ üÊ(P·„çpZƒ9h šm#Ø3"l½$ø)„*…Ð^М/f0 a3ø™8†„r ÏexŽ! LCXtÅ~F„ÖÚÜúɺú‰º…P¥ò²µXòZ­ ÈÛQ–Âa6ÎÖ ôH„9㦣G(™@¸¼£ìjqÙµ’—7Ahê:L |S!T)„@ØjeE'ŠÛ‹ˆ3‡Ã3a"Åœ ÓùGË(…Ð „f¶÷ânðCpxB·„äǰ!V_.SU ¡uŽ-‡KÚ‹ä ÂaKD ä© \ôKhÞwq÷¾‹Ï „W…@œE\ÂKÇ-mYä'""¬¾R†B•BhÍK.!²¬¦ :D-á$¢%¹„ûg_ @œr Â+6ðCF„uuK±Ùú«•à§9TUO6Âçóžƒ@T¼!"E"dˆ°„à·FDr Ììß»)Bð[ŠÍ,­Î„WB•B¨!d@X ,„¾Ì„C_Fs´¾%â•QfuJ„ˆÁí¤fw ~ÎEH$Â7B•B¨C¸ÛöÜóÏí¯Üãê±ë—}‘:8E²j2Y½¯“Ÿ,µ„¹mYäÇÀO.áéË¥cñ>¤ªB²Lï1 Ä ~̩ߡ„gD8ïGF„˱ÙÁ»à§ªBû »ó“{¹÷tï%EØãú¢éó.›Ð¦K/ƒŸ!øå æ¢Á» ¡J!WMØå»@Q¿„@ˆH±qªF:”ó®~›"ÜÚ‰N^*2"ÌÈ?…P¥n¸Ü‚êc¿K"¤@qæÖ˜PÃdusD t 9*‡›"ܹ(ø±“º%$¿ÜÉìB?vR`ßB¨zâÖ„Q%š†Ž"P”‰Ð ‡Zà·) ;™áÐJ;ùÑ!gû‡„À~…P¥ÒaUP <®ež>v¨&…!“‹/Ù¤ÀKX~C+8å " ¼ýðáñ¡>…P¥⪠9!±„ÇýG Ф!D¤H~ÜC—!ø!"LE·r½÷NB D~·Öß¹¥!Ô–PÝŽª“q —0'éÏHsjë—Ðë*ºd5"üÆâβÛF„ Í&í«6‹·Ößf ¡J!Ü€ÐrÖ…\}‘.ÛH¶~ sBDŠYþÕ.¦GH~yÃ&ÛiS„Þüab ›†š†ÔO™TO6Bw á) dÈ(aó†³m漑lÂŽÈéÈúìÖûkÀO!T)„DXÁ%ì×â,µ"‰0ëÏ ì ´uŽ· D8œBØó€Ÿ!>æ ËÌlð»B•B(.s0¹Ãκð©~Œ" !³’?:ìkë ´2"ÄÉ%´ß³¡MV¯•‚RU ¡a(ÁaÎdÆ@´»Os{¡©9 É%äöαÖÎqáKȼ׫í÷òôéüªâÅ(…pÈíÕÜlSUj E9øÙ¾±-(’_ ¡/‹'ø1ð“Ÿçúi¦G~(º>u üÖJªâ%8õÁÏ¿Òá_iWU !—yCîâ1[ !óeJ„Ü@œ-Ã>)Ð+Ú$Bð›y("?±„DèÏ<Ö{°ç–BÕ“ŽðpÍ‹æa&²’1ÛŸCØ:ìcÈ(p,>0õ`—¹‡àǺoJ„ ¡êÉFè~‘!ê6…ݶ‘ã¦3©ÛÑÀZŸ¥?³u¸™¹„2ð÷# Äa•†ðhË£­(KêvT¥&b_:½oOÞnŽ!2 dp~–þ,"lÙ¸„ÕWÊ«/—›Z?:?¦GØ­!´M™-“Ù ¡êÉEØvë J„¬)¼ápÂ!"¹„Lã‡RÇĎάOáD°ÇôóBfËD6RUO"BòëzØŽ^‚@·èaym)Ò#DDÈ1äž»¿ôÊêY#B4¾6~Œ(žxÍRôºÅ̱LB B¨zòÞýéõÇŸ­v>l¿ÕGF„v8DLj½²rüЫ1Õ$oG‡cÝë]µ‰P ¬ö»ÀYƒˆ1TUOBò»öî§+è1ûl!yfj$BD¤¸ß±g¿}O aÊ<;G8%  üXH×Ǧ Qòk øPÑE‰0‡›¯Ö)„ªí0þÙ­Ÿß^ûü¶†ð>)¾ùþùÆ;nßL6F«­ÓÇÐ ÏS O ”_a\ dà—?iEy“–áX"BðBܸÂkÓ2ëtöàjÇàJÇ zE¡ÚÞ×4~ˆøù!#BV)*wCàæ–3ˆV»(õK(øˆÚˆP·„%W­=÷ÎhÛÕ+ ÕvEøÆ¯_¹ü›WѽÏÞ"?t÷·×.}´|éWË8‰0£éȦ™=aŸ(¦C8‘@øfüðùiðcäÇÀ¯¡Ø¡ª¶IF~iÝÿôùé{ã£å ï†Ï„F„ÈÜ“†°æMû`¬{áT !ø]‹_AF„/ߟ;·:~%Z=÷Ï ¬´«%TmO„âÕB°æò' ~W~óêʯ®Þ×zãWg¥ÀÞêû>l™ïHæà!=BG!"Eð]!BÔ%oG«£U§£UàwÕ€ð啹s±y„\B"Ä v¯‹×$|N«ª¶Bæ Ö¬|t•å‰?ôö}Ð(£ a–ÿfúiéð„Èês q¹„àW=€ðêF„¦šãYÕ™°ÇÑ›ÖåÍŸ¾þG= ¡j› lJ~ó³.Té:IýÛç?üñçÿÌü6m\ÂÃà‡8óC¦ü°IގʰŒk–«ìSeàÇNGª(§w¶>«:‹‘Ÿ\»¿¸*ŸÐ¾úãl ù}ùÕ—2…PµåÊꕨ6TYtüûïÞ#?Ù{ÿû½¼p–-œeDˆH1·Ñœ¶„@hŸ,?V3#âäíhÏ·==ßöºfË$B)O†‘Ÿ®«ïŸ|ØK{²?þé£o*„ª­ŠpWÛ.ùåO,!ÒÚsŽ"P$¿þþ2ëT&2ò£Ãú¨"‚_éV¤GH8ÖàÇ\3a&øññ,OR”/*e¤H~úBÕÖC¸»mE"d5A²ò±ÂùÃ÷CYˆ{!,!²úˆ»>RÃÀ‘#¿†" ìÕ-á•OÎãáùéß”àÉPëšW°ávÍ…Bç>¦!|ÿ³ÿøè«_(„ª­†µîXè® 9kÓ á'(R`6¡Èê?®CHb¡r ä)>J,!ùé[ü®ƒŸŒÉïÂGá ‡ñ:÷a0Éï¿?þê@ˆ?B¨ÚÉgÿ|7"ÞŽJ„Òá;ko§-!2L"ø!:¤@ÞŽ:Âå öˆõjKØõ-ñíðåŸÍÐÞÆ7%oÒ^Ú›Ô ±…ߎ¿èýö—÷hýúO¿Äÿ|F!Tm „2ðc=síŽ@‘@ØŸXBž7â×oÄßzgír )F†ë P‡0 ØCØ@!K(#?Ñ·x ŠàÇ·#LRìýPðëû@&(’ßô½8ù(’RU[äÁLÿ³»úžÅ "!p¾»¾‹í"œäG‡H‡oܽT3W F„ ·£à‰O {0µ„ä·ò?×ßMþ2öÒ^<|ÿ·ütoJ~ôÙ€P6ò³Ö©ÿìEÓDÈ~×{àâ^ØSU[ !"y;J„È>V”ç±Ú×—p˜Û–“Ûš3¸ÐÓ3ׯ%D(?¤!|Ù3çvºpÐâÏ’9†i|qG>óÔ¿÷“<ÿð§?èßû±óß9G~ú7%ïýþ{“š=œ£?쪭rŽW„¯+„ª-ˆP DæÖ8Dù6.á×AxùÁëZÑXDl`ÂûŸ½x2R¼÷é5ÚK{ñ0röÒû¯ßÿ„üôýã'~ˆ1ƒHÝŽª¶ÂC ä)‚"ö.t÷-ta^¡üâWåíh}¼!ËŠf¢ÑÈêxÞûô-Øã‹þDCÿ#)ùâAœ‡%¿Ÿi/؇ÿ÷SòûÁ'ǦBàH•~ ÷«%TmE„ì9 !ç»{ç»àpji‚g0¾¾Úr× ~)„ë9†™‘Œ¾w}½ï6!ÚK{ñÀ_f¤…-È䋇¿ú%_úñä‹ùp(‰ðÔi !øáÆ)„ª­‡ð Ò–.Ø$B!p^Œáäâø”(Æ×c-wÜ­wj[îÔè WÖ/Ö†k¿GH ¿Ì˜®Ñ¿÷còGRòÅú¹OòÓ½uèùXøqòÅùÉ%<­¡s®üBÕÖ^B",·áäB ¢@R¿V áBòCDȰ‡@ÈÜÁ ØKõQâÅ~™ÁIÉS<ù|Ÿü$Bñäóé—Ÿ&*"”?—nŠ7Æ ¡j äÊ%¤Ã“sÖ’ ö±pK©¥B&¶Åê`¯."NÄ”KÈjCNü8Ã=]A~i/HQÿâaò'½¤(_‚Ÿ!ù!…Pµ5ž‰4ž« C<9oÅ „ùÓÙÉO´¤[»5à‡ˆP'ùí+Û½¯|76ñ{áÉlÃ&Ú“ýëÿ„g-?é¡@>ìA !øÅÄÃ!”Žpç¹o\ypöBÕ–Bm„CQÔÃ{Q",˜ÎfáH8 c?vÜòtÜöP \Bž°'ÛÕšø‘¿Ž€0ñ•Ô~ñ#)¾÷Ó÷Ú‡s£ï‰÷~ üŒ)§DX9ç”oJR# ¡j‹ ”‹Ç¬ˆ{˜?m’ÑF"᎛ÜáíÒ#ä÷QA÷¢2"decü‘”|ñÀg-iÑ„ë+ú%ä›_¼Zÿš„áQ­B¨Ú›µ lŽ66aÀ„LœÊΟ2!Ç'2 l'øÊgà+8øBöõ¿Tdï}ù=ùIw¡H"䋇§4~Œ3È7%à‡Œ“oJ| ¡j t‡]Â!Šj „'FÌ…£f.¡ŒüHüö– l›"ÄßDˆ€_ ǹ)‘ àG„äÇÀéây âó¡/"<ªåãY¦ª¶BwÄEаW4–BÈ‚sÓ¼ G;o{Ÿ~æ)b3"”S DH‡ü6œ!Ê÷ï¼ÏÜ!ìi¹‘!ø¥žÐᣠoÿÜ©Rý•´aMØ%ZüYÅiGÍÁùi8DXÂÎ[^ÛaH~.m ‰PþH I„tH~F„òÅ2‰°õ^nü€B¨Ú ÁyZ†²,þLA1 j!"Eê2"4‚$B:´¶ç‚_¿!³%$E„|ÖbDˆù yhDȦF„|S¢ÞþÿöÍæEŽ" ãbüXTVÍfÝÙM̳‚BF ăJDÅw‡€N„œ"O""B@¼xõèÕcþº<ÝÏÎo;ý“fz§Ó$U<4=Õ5ÝÕ³õÛ§¾ÞEjùå#þ[ÿÏ™g?~ޙɤ«Õ27þ}£§LS'^-ð³Làê—G×wŽ+4Þ^þaOø•î!0 !ûÂOhS¸´}ý3œµ%u|}§$ðv BEHy¤·1ᇌ¼R¢¡)3´ýy¡¦d¦õÉ.P¿ü¿Éßzûç×2„óCŠîŽ–2„ç/‰=h«r!¬Ié¸ZFHYŽÌÀ ­ñdÇBˆZ¯@hü$ÏÐℬ”¨ÂôÍíµZä‹I‹äèj†IøÙ a©ÑÒÊ“OÂ(BÝòð™$„É )9aBK‘ÖtÜN„Õø ÉNȃØKBèÊd;Óůð›«_Ú¼)g„!idˆê(%£Hã^>]‡¯Ç­á‚3ô¾p¥ËEÔëƒ)„^x{È6(å„éBËÝQ¯”¨>Â.H oþ÷f†°„1E¥„Ü- !û«Nøy©¯Ëý¨BQ ? öj!õéߘn1~^)ñBeÒ™}ž!\t3ýàÊK>Q?³%„qÌ©«m(wûõN½(GùñR¬¹ÊøMT¸CZúºª„ÒÖ»[Iiô³¿NpRRá„e¸°äMáÒö­O⪃$ü¤BXÈøÁ[„Ð)C¸ Ñì˜õ‰z§í! Øl!œG3Mæ0Õ‰š¾ò¹•0à)ô¨ã+é»Ùð)ƒÆ¿à’Ò¹¯^Ômc­x#Ý*@Ø 7‡ÂPj¦þ8 HJûà™á°}Ç(*NjûÖE­¼Û _5>'´xáá oçÂ…ŠÆç_˜&~rôlKaC·z,$8l!9@–qL9$‡ªÆwñ? x‡X+¿Ñ<FâÇÖðwÆ[ûNÖÌáÆ48C(Š@ 'ÔÚƒñ‹!•„ðÈÒãåI†°#Ñ ­ž·‡IWS­«Ð~løÔš GQÇÅ’žÂGjN5T@ŠïZúº @»Í–ZqU/@¸°„Ú §ãiEfLpÂbS¸P\ß{õj™„žn‰jáACÐȘ­/¹y3„ ’ÀýhñÕBhQ³æY¸ns!0vP11 @UŠ5'dž.¬Ó¦Väð­N!@8,T@h‡‚øŒ›_Üœñ×û>!µöÊ g3Ö™„ ÎÐÑ}Q;¡#3t<óöf’1áç“„à—!|€ÁBÑ6(É hâ-!T†Â½²ùF?QœÐ*ñ“ŽIŽÌÂ’CAx†74{œG}ó რž’Ø"[BÈ8KýŸeí¾o3ø¡ð¨Qtp†tþÚ{Ñ IBðËö$x‚æ[[ûn !—èÙîìh\'œB‹qgGc²êXn éxþ»ý ) Œkñµ±_†°ŠüÄ%õæÊ÷Ôd[[Ø1ccŒ²TU² „ÍwÌ40þ}„E Ãå„‚ÐzîäRrC øeûãÂ)AH‚< }g¼~Hs@ˆ¥Ç 4‡ª’¨C!$2£pÂk£O% tù a?—ééƒ!ÌD» „Æ_’«$ù¡€ýsGQ¤s!3WLÀDÏ!ų3œÐe2„¬ÿ››G ñ„s©:)šTï ŒAR8¡ó3„Y½î{ÔܻԵ£”IEND®B`‚PrismLauncher-11.0.2/launcher/resources/multimc/scalable/azul.svg0000644000175100017510000000364115166745067024531 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/about.svg.license0000644000175100017510000000012715166745067026305 0ustar runnerrunnerSPDX-FileCopyrightText: 2007 KDE Community SPDX-License-Identifier: LGPL-3.0-or-later PrismLauncher-11.0.2/launcher/resources/multimc/scalable/java.svg0000644000175100017510000010764615166745067024511 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/export.svg0000644000175100017510000003732715166745067025107 0ustar runnerrunner unsorted Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons image/svg+xml en PrismLauncher-11.0.2/launcher/resources/multimc/scalable/reddit-alien.svg0000644000175100017510000002114315166745067026114 0ustar runnerrunner image/svg+xmlPrismLauncher-11.0.2/launcher/resources/multimc/scalable/openj9_hex_custom.svg.license0000644000175100017510000000021415166745067030632 0ustar runnerrunnerSPDX-FileCopyrightText: 2017-2026 Ronald Servant SPDX-FileCopyrightText: 2026 Ludgie SPDX-License-Identifier: Apache-2.0 PrismLauncher-11.0.2/launcher/resources/multimc/scalable/checkupdate.svg0000644000175100017510000016226115166745067026042 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/status-bad.svg0000644000175100017510000001200715166745067025621 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/tag.svg0000644000175100017510000005517615166745067024343 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/proxy.svg0000644000175100017510000002317215166745067024740 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/openj9_hex_custom.svg0000644000175100017510000000766215166745067027227 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/new.svg.license0000644000175100017510000000012715166745067025764 0ustar runnerrunnerSPDX-FileCopyrightText: 2007 KDE Community SPDX-License-Identifier: LGPL-3.0-or-later PrismLauncher-11.0.2/launcher/resources/multimc/scalable/custom-commands.svg0000644000175100017510000034246715166745067026703 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/rename.svg0000644000175100017510000004534515166745067025034 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/status-running.svg0000644000175100017510000001371615166745067026563 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/discord.svg0000644000175100017510000000354215166745067025205 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/screenshot-placeholder.svg0000644000175100017510000000730715166745067030216 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/new.svg0000644000175100017510000004331715166745067024353 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/datapacks.svg0000644000175100017510000003470115166745067025512 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/checkupdate.svg.license0000644000175100017510000000012715166745067027453 0ustar runnerrunnerSPDX-FileCopyrightText: 2007 KDE Community SPDX-License-Identifier: LGPL-3.0-or-later PrismLauncher-11.0.2/launcher/resources/multimc/scalable/about.svg0000644000175100017510000032133615166745067024674 0ustar runnerrunner image/svg+xmlimage/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/status-yellow.svg0000644000175100017510000001316415166745067026413 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/language.svg0000644000175100017510000002047315166745067025343 0ustar runnerrunner image/svg+xmlPrismLauncher-11.0.2/launcher/resources/multimc/scalable/mojang.svg0000644000175100017510000000752015166745067025031 0ustar runnerrunner Created with Fabric.js 3.6.3 PrismLauncher-11.0.2/launcher/resources/multimc/scalable/viewfolder.svg0000644000175100017510000003167415166745067025733 0ustar runnerrunner unsorted Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons image/svg+xml en PrismLauncher-11.0.2/launcher/resources/multimc/scalable/launcher.svg0000644000175100017510000000662615166745067025365 0ustar runnerrunner Prism Launcher Logo Prism Launcher Logo 19/10/2022 Prism Launcher AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke https://github.com/PrismLauncher/PrismLauncher Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/delete.svg0000644000175100017510000004044615166745067025024 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/screenshots.svg0000644000175100017510000024130015166745067026112 0ustar runnerrunner Golden Picture Frame image/svg+xml Open Clip Art Library Golden Picture Frame 2012-05-24T10:08:07 Golden picture frame, Landscape http://openclipart.org/detail/170182/golden-picture-frame-by-tasper tasper clip art clipart frame golden landscape photo picture edited by Paul Sherman PrismLauncher-11.0.2/launcher/resources/multimc/scalable/matrix.svg0000644000175100017510000000503315166745067025057 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/bug.svg0000644000175100017510000003221115166745067024326 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/0000755000175100017510000000000015166745067025020 5ustar runnerrunnerPrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/prismlauncher.svg0000644000175100017510000000572715166745067030430 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/enderpearl.svg0000644000175100017510000001023315166745067027661 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/neoforged.svg0000644000175100017510000000521115166745067027510 0ustar runnerrunner Sefa Eyeoglu <contact@scrumplex.net> PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/steve.svg0000644000175100017510000001437015166745067026674 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/ftb_logo.svg0000644000175100017510000001013115166745067027330 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/fox_legacy.svg0000644000175100017510000004406415166745067027671 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/magitech.svg0000644000175100017510000001347715166745067027336 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/bee_legacy.svg0000644000175100017510000004212315166745067027622 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/quiltmc.svg0000644000175100017510000001576315166745067027233 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/brick.svg0000644000175100017510000000565615166745067026647 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/netherstar.svg0000644000175100017510000001350115166745067027720 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/meat.svg0000644000175100017510000001213415166745067026470 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/modrinth.svg0000644000175100017510000001103115166745067027361 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/iron.svg0000644000175100017510000001630215166745067026512 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/tnt.svg0000644000175100017510000001234015166745067026346 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/gold.svg0000644000175100017510000000526015166745067026471 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/stone.svg0000644000175100017510000000556015166745067026677 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/flame.svg0000644000175100017510000000611415166745067026627 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/skeleton.svg0000644000175100017510000001171415166745067027371 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/diamond.svg0000644000175100017510000000521115166745067027153 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/dirt.svg0000644000175100017510000001062015166745067026502 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/grass.svg0000644000175100017510000001370515166745067026666 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/fox.svg0000644000175100017510000001534515166745067026345 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/creeper.svg0000644000175100017510000000601515166745067027170 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/bee.svg0000644000175100017510000001254515166745067026303 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/enderman.svg0000644000175100017510000000726715166745067027346 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/gear.svg0000644000175100017510000001011715166745067026457 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/fabricmc.svg0000644000175100017510000001514415166745067027314 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/squarecreeper.svg0000644000175100017510000000674615166745067030424 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/herobrine.svg0000644000175100017510000001155115166745067027521 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/chicken.svg0000644000175100017510000001211415166745067027144 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/instances/planks.svg0000644000175100017510000000770115166745067027036 0ustar runnerrunner Prism Launcher LogoPrism Launcher Logo19/10/2022Prism LauncherAutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zekehttps://github.com/PrismLauncher/PrismLauncherCC BY-SA 4.0Prism Launcher PrismLauncher-11.0.2/launcher/resources/multimc/scalable/adoptium.svg0000644000175100017510000001537415166745067025406 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/centralmods.svg0000644000175100017510000027064215166745067026100 0ustar runnerrunner unsorted Open Clip Art Library, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons, Source: Oxygen Icons image/svg+xml en PrismLauncher-11.0.2/launcher/resources/multimc/scalable/launch.svg0000644000175100017510000000563015166745067025030 0ustar runnerrunner PrismLauncher-11.0.2/launcher/resources/multimc/scalable/technic.svg0000644000175100017510000000512515166745067025172 0ustar runnerrunner image/svg+xml PrismLauncher-11.0.2/launcher/resources/multimc/scalable/server.svg0000644000175100017510000360147515166745067025100 0ustar runnerrunner image/svg+xml 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 byvXOWum0rOluGXuPT4pS3q2kZkyF8/TndQsijF6W5VXE8dqeuN8bT21Xewa1nt+93tv5mKzZL3L d1vOXTWxeaF9Ts23ir9Ty59fe1OJcjI+tfxSeZhaVguXUwt7HegL+uIumTrKTyW2NltxWstnN7XV WtxoQZMPfmiTSxcG/e31YBv3JbnayfzCb5etvkegf51coVFUF/J3s1IcxknB3Th1W9Z+7HzkoOZc L7G1OzWX7qidY1Zsbjd1sz7zDn/u1uHdO4t1/KjTbq937ttP62en8mr6cgG3FVcKtZBqd5XH9O3n 0bJvpU8fxl5gpZr6tToVVOlb+3k1cQO1iNXSSk+MxZmrVv3Ir9LOzLNmBFW6t3WebVx7KkW14GrT i7eJ9fLpsV+l7d7r2sJSfGPq1a9SuSBvbwRUqs3M5tbf8xjJPn1N3z3KhaJx7tvT6UJrLX5aO77w rXR3pnnkqZSuF1zt/MFR+jhogK/aj2X1AFW62De8u9M3qXimOw+vpZt9c7o2C7NPqz2bn/fMarqY 3a3jSmE1vdlipU/tp+u3i4BK114yV5WPVbdSKc5V+7xSPAmsNLv6fjnvX+nG1GK7s5bo+Fd6ln2G Wih++/ramd+6UwIqzXwuzhvVXf9K04tPiY31H66nOEmcO6ulzMyv1jv2q1QuHJ4bAZVqM/FMLrMd UOndC3IlbBaLvn2d3p3dnDuqfl75Vrp7nrsOGt69uZWp5Cep1H78LgDG+AGeXuzM7yzjAV7qq3Tv 5Sfzu9SSodJsy1vp0f7JE630bmXB01Mpns0kk/dutUJf7w356Oc861/p/nQvd3RXzvlWelqv7rmV wryI1R4mf1vLAZU+JOTLo9+ef6WHqeejQmF7yq9SmJfifm0/sK+Xx1rxNahSS76Wn/P+lR6tzBQr L0vruFIp7u3r9fNmJ7DS64XqSyuo0mP5ZmXb8KtUikO1duJmJ9c2fQf4frn4HFjp13TxyAio9FGT n0qvCVwpwpinrydXte+1+Mmyb6XPz7cvgZU2q9sLH36VSnFU7bH8ah9Z/gNcuFKmb7vn+36Vttsn KzO00rfUomfRJPJLdgpXKsWV0nR3V6RKa+1eypRRpct9lZ5uLvw+27c7UOlm21NpYq15t0wr/c4v uZUCTUbVxt8fpslWrhp3yr5IIC5k++RhF1W60r+nnqzMNlLrZ1Cp2fUOr21/JXGlaF4W7GUPKZyv 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